禁用CR0 "Write Protect" 后是否需要调用set_memory_rw 来修改Linux 内核中的只读页面?

Is it necessary to call set_memory_rw after disabling CR0 "Write Protect" to modify read only pages in Linux kernel?

通过修改 sys_call_table.

考虑以下有关系统调用挂钩的 Stack Overflow 问题

既然 CR0“写保护”(第 16 位)控制内核是否可以写入只读页面,为什么一些代码然后调用 set_memory_rw 来设置目标页面的权限RW?

没有

CR0.WP方法全局禁用写保护支持,而set_memory_rw方法只是将写位添加到特定页面。如果您已经通过控制寄存器禁用了写保护,则无需执行任何其他操作。在您通过同一寄存器重新启用写保护之前,所有内核内存都可以从内核中全局写入。

确保在写入 CR0 之前 disable interrupts,然后再重新启用它们。