当前位置:  开发笔记 > 运维 > 正文

使用Linux内核中的模块覆盖功能

如何解决《使用Linux内核中的模块覆盖功能》经验,为你挑选了1个好方法。

在没有深入了解原因的细节的情况下,我正在寻找一种干净(尽可能)的方式来替换可加载模块的内核函数和系统调用.我最初的想法是编写一些代码来覆盖一些函数,这些函数将采用原始函数(如果可能的话,可能会调用函数),然后添加一些我自己的代码.关键是我写的函数必须具有原始函数的名称,因此其他代码在尝试访问它时将访问我的函数.

我可以很容易地(相对地)在内核中直接执行此操作,只需将我的代码放入适当的函数中,但我想知道是否有人知道一点C魔法不一定是可怕的内核(或C)编码实践,可以实现同样的结果.

我想到了#define和typedef的想法,但我不能完全破解它.

简而言之:有没有人知道如何有效地覆盖Linux内核中的函数(来自模块)?

编辑:因为它被问到,我本质上想要从内核中记录某些功能(创建/删除目录等),但为了理智,一个可加载的模块似乎有意义,而不是必须编写一个大补丁内核代码并重新编译每个更改.内核添加的代码量很少,但是我希望将大部分工作卸载到模块中.



1> michaeljt..:

我意识到这个问题已经有三年了,但是为了其他人试图做这种事情的好处,内核有一个名为kprobes的接口来完成你所需要的.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有