Linux 内核中的 set_memory_* 函数 >=2.6.25
我收到了很多警告,例如`
"BUG: unable to handle kernel paging request at [addr]"
我正在研究 Rootkit,例如,当我尝试将自己的函数附加到 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仍然存在。
有什么帮助吗? 我是否以错误的方式处理内核地址?
I'm doing research about rootkits and I have received a lot of warnings like`
"BUG: unable to handle kernel paging request at [addr]"
when I tried to attach my own function to sys_call_table[__NR_read]
, for example.
In kernels <=2.6.25, function change_page_attr()
helped with changing page attributes of a certain address. However, in new kernels >=2.6.28, this function is deprecated and is replaced with set_memory_*
functions, related to PAT.
The Linux kernel documentation is not clear about PAT functions usage; I have used set_memory_wc()
& set_memory_uc()
to change the sys_call_table
permissions but I continue receiving the same BUG. That functions I guess are replacing the old change_page_attr()
.
I saw one example in i915 module, and I have used functions in same way, but the BUG continues.
Any help about it? Am I handling in wrong way kernel addresses?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我已经针对 2.6.26 和 2.6.30 debian 内核进行了测试。
对于 2.6.26
set_memory_wc
并使用set_memory_wb
进行恢复是有效的。如果 Kernel Hacking 中有
CONFIG_DEBUG_RODATA
,2.6.30 就不起作用(我认为)。 没有时间实际重新编译,但我已经使用没有该功能的自定义内核进行了测试。在 2.6.30 中,
set_memory_rw
和set_memory_ro
也被导出。希望这可以帮助。
I've tested with 2.6.26 and 2.6.30 debian kernel specific.
for 2.6.26
set_memory_wc
and restoring withset_memory_wb
works.2.6.30 doesn't work if there's
CONFIG_DEBUG_RODATA
in Kernel Hacking ( I think ). Haven't had the time to actually recompile, but I've tested with a custom kernel which doesn't have that.in 2.6.30
set_memory_rw
andset_memory_ro
are exported as well.Hope this helps.