【问题标题】:Kprobe mechanism to intercept do_page_faultkprobe机制拦截do_page_fault
【发布时间】:2015-03-15 14:34:19
【问题描述】:

我试图拦截 linux 内核中的__do_page_fault() 方法。注册kprobes的正常方式,即将kp.addr定义为

kp.addr = (kprobe_opcode_t *) kallsyms_lookup_name("__do_page_fault");

不工作。这样做的正确方法是什么?

编辑: 任何其他拦截 do_page_fault 的方法也适用于我。

【问题讨论】:

  • 请说明您所说的“不工作”是什么意思。有错误吗?还有什么?
  • 在执行 insmod 时,我收到错误:“错误:无法插入模块 :无效参数”
  • 编辑您的问题以粘贴完整的模块

标签: linux linux-kernel intercept page-fault kprobe


【解决方案1】:

当模块中未使用 GPL 许可证时,通常会出现此错误。在您的模块中添加以下行应该会消除此错误:

MODULE_LICENSE("GPL");
MODULE_LICENSE("GPL v2");

【讨论】:

  • 好吧,我发现(至少)在最近的内核上(我正在查看 4.4.0-rc6 源代码),__do_page_fault 例程标有 NOKPROBE_SYMBOL(__do_page_fault);函数定义末尾的宏。此外,/sys/kernel/debug/kprobes/blacklist 确认它已被列入黑名单。所以,只是好奇,它是如何工作的??
猜你喜欢
  • 2017-11-02
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
  • 2020-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多