0

我正在研究 Rootkit,我收到了很多警告,例如`

"BUG: unable to handle kernel paging request at [addr]"

例如,当我尝试将自己的功能附加到sys_call_table[__NR_read].

在内核 <=2.6.25 中,函数change_page_attr()有助于更改某个地址的页面属性。但是,在 >=2.6.28 的新内核中,此函数已被弃用,并被替换为set_memory_*与 PAT 相关的函数。

Linux 内核文档并不清楚 PAT 函数的使用;我已经使用set_memory_wc()&set_memory_uc()来更改sys_call_table权限,但我继续收到相同的 BUG。我猜这些功能正在取代旧的change_page_attr().

我在 i915 模块中看到了一个示例,并且我以相同的方式使用了函数,但 BUG 仍在继续。

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

4

1 回答 1

2

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

对于 2.6.26set_memory_wc并通过set_memory_wb工程恢复。

CONFIG_DEBUG_RODATA如果有内核黑客(我认为),2.6.30 不起作用。还没有时间实际重新编译,但我已经用没有那个的自定义内核进行了测试。

在 2.6.30 中set_memory_rw并且set_memory_ro也被导出。

希望这可以帮助。

于 2009-12-01T17:41:07.100 回答