我正在研究rootkit,我收到了很多警告,比如`
"BUG: unable to handle kernel paging request at [addr]"
当我尝试将自己的功能附加到sys_call_table[__NR_read]
时,例如。
在内核< = 2.6.25中,函数change_page_attr()
帮助改变了某个地址的页面属性。但是,在新内核> = 2.6.28中,不推荐使用此函数,并将其替换为与PAT相关的set_memory_*
函数。
Linux内核文档不清楚PAT函数的用法;我使用了set_memory_wc()
& set_memory_uc()
更改sys_call_table
权限,但我继续收到相同的BUG。我想这些功能正在取代旧的change_page_attr()
。
我在i915模块中看到了一个例子,我以相同的方式使用了函数,但是BUG还在继续。
有任何帮助吗?我是否以错误的方式处理内核地址?
答案 0 :(得分:2)
我已经使用2.6.26和2.6.30 debian内核进行了测试。
for 2.6.26 set_memory_wc
并使用set_memory_wb
进行恢复。
CONFIG_DEBUG_RODATA
(我认为),那么2.6.30不起作用。没有时间实际重新编译,但我已经测试了一个没有它的自定义内核。
2.6.30中的 set_memory_rw
和set_memory_ro
也会被导出。
希望这会有所帮助。