【问题标题】:Replacing a kernel function by using loadable kernel modules使用可加载内核模块替换内核函数
【发布时间】:2016-06-08 04:51:13
【问题描述】:

我正在尝试用内核模块替换内核函数,并遇到kmm(https://stackoverflow.com/a/1242232/6438341)提出的以下解决方案

但是,内核似乎不允许将任何内容复制到“real_printk”的地址。内核报错:“BUG:无法在 ffffffff81774863 处理内核分页请求”,其中 ffffffff81774863 是在 System.map 或 /proc/kallsyms 中找到的 printk 的地址。

有人知道怎么解决吗?

【问题讨论】:

    标签: c linux linux-kernel


    【解决方案1】:

    我猜测,这可能是因为您正在运行一个对其文本页面进行写保护的内核。在修改它们之前,您需要将这些页面设置为可写。

    但是,请记住,您正在查看的答案是六岁。自发布以来,出现了许多更好的实时内核修补方法,包括kpatch、SUSE Live Patching 和KernelCare。 (下面还有 ftrace,可用于动态检测函数。)在尝试从头开始构建自己的修补解决方案之前,您应该仔细查看这些内容。

    【讨论】:

      猜你喜欢
      • 2018-12-24
      • 2013-03-10
      • 2012-03-14
      • 2013-06-02
      • 2012-08-20
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多