Linux 内核中的 set_memory_* 函数 >=2.6.25

发布于 2024-07-21 21:29:03 字数 621 浏览 3 评论 0原文

我收到了很多警告,例如`

"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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

策马西风 2024-07-28 21:29:03

我已经针对 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_rwset_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 with set_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 and set_memory_ro are exported as well.

Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文