在没有详细说明原因的情况下,我正在寻找一种干净的(尽可能)方法来替换可加载模块中的内核函数和系统调用。我最初的想法是写一些代码来覆盖一些函数,它会取原来的函数(也许,如果可能的话,调用函数),然后添加一些我自己的代码。关键是我编写的函数必须具有原始函数的名称,因此其他代码在尝试访问它时会访问我的。
我可以通过将我的代码放入适当的函数中轻松(相对地)直接在内核中执行此操作,但我想知道是否有人知道一点 C 魔法,它不一定是可怕的内核(或 C)编码实践,可以实现同样的结果。
#defines 和 typedefs 的想法浮现在脑海,但我无法在脑海中完全破解它。
简而言之:有没有人知道一种有效地覆盖 Linux 内核(从模块)中的功能的方法?
编辑:既然有人问过,我基本上想从内核中记录某些功能(创建/删除目录等) ,但为了理智,一个可加载的模块似乎是有意义的,而不是必须写一个大补丁内核代码并在每次更改时重新编译。向内核添加少量代码是可以的,但我想将大部分工作卸载到模块中。