Linux Kernel中的set_memory_ *函数> = 2.6.25

时间:2009-06-02 06:45:48

标签: kernel rootkit

我正在研究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还在继续。

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

1 个答案:

答案 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_rwset_memory_ro也会被导出。

希望这会有所帮助。