C 使用可加载内核模块替换内核函数

C 使用可加载内核模块替换内核函数,c,linux,linux-kernel,C,Linux,Linux Kernel,我试图用内核模块替换内核函数,遇到了kmm()提出的以下解决方案 然而,内核似乎不允许将任何内容复制到“real_printk”的地址。内核抱怨:“错误:无法处理ffffffffff81774863处的内核分页请求”,其中ffffffff81774863是在System.map或/proc/kallsyms中找到的printk的地址 有人知道如何修复它吗?我猜,这可能是因为您运行的内核写保护它的文本页面。在修改这些页面之前,您需要将其设置为可写 但是,请记住,您看到的答案是六岁。自发布以来,出现

我试图用内核模块替换内核函数,遇到了kmm()提出的以下解决方案

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


有人知道如何修复它吗?

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

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