Kernel 在Linux内核中设置内存函数>=2.6.25

Kernel 在Linux内核中设置内存函数>=2.6.25,kernel,rootkit,Kernel,Rootkit,我正在研究rootkit,我收到了很多警告,比如` "BUG: unable to handle kernel paging request at [addr]" 例如,当我尝试将自己的函数附加到sys\u call\u table[\uu NR\u read]时 在kernels=2.6.28中,此函数已被弃用,并替换为与PAT相关的set\u memory.*函数 Linux内核文档不清楚PAT函数的用法;我使用set\u memory\u wc()&set\u memory\u uc()

我正在研究rootkit,我收到了很多警告,比如`

"BUG: unable to handle kernel paging request at [addr]"
例如,当我尝试将自己的函数附加到
sys\u call\u table[\uu NR\u read]

在kernels=2.6.28中,此函数已被弃用,并替换为与PAT相关的
set\u memory.*
函数

Linux内核文档不清楚PAT函数的用法;我使用
set\u memory\u wc()
&
set\u memory\u uc()
更改
sys\u call\u表的权限,但我仍然收到相同的错误。我猜这些函数正在取代旧的
change\u page\u attr()

我在i915模块中看到了一个例子,我也以同样的方式使用了函数,但是错误还在继续


有什么帮助吗?我是否以错误的方式处理内核地址?

我已经用2.6.26和2.6.30特定于debian的内核进行了测试

对于2.6.26,
set_memory_wc
和使用
set_memory_wb
进行恢复

如果内核黑客攻击(我认为)中有
CONFIG\u DEBUG\u RODATA
,2.6.30就不起作用。我还没有时间真正重新编译,但我已经用一个定制内核进行了测试,它没有这个功能

在2.6.30中,还导出了
set_memory_rw
set_memory_ro

希望这有帮助

为什么必须在设置为非写回模式后恢复?我还在Linux文档中读到,应该成对使用
set_memory_uuu[uc | wc | wt]
set_memory_uwb
,以便在使用后将模式返回回写,但没有关于动机的解释。