gpt4 book ai didi

c - 在 Linux 内核中使用模块覆盖功能

转载 作者:IT王子 更新时间:2023-10-29 00:18:33 34 4
gpt4 key购买 nike

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

我可以轻松地(相对地)直接在内核中执行此操作,只需将我的代码放入适当的函数中即可,但我想知道是否有人知道一点 C 魔法,这不是必然可怕的内核(或 C)可以达到相同结果的编码实践。

#defines 和 typedef 的想法浮现在脑海中,但我无法在脑海中完全破解。

简而言之:有没有人知道一种有效覆盖 Linux 内核中函数的方法(从模块)?

编辑:既然有人问了,我基本上想记录某些函数(创建/删除目录等)从内核,但为了理智起见,一个可加载模块似乎是有意义的,而不必为内核代码编写一个大补丁并在每次更改时重新编译。向内核添加少量代码是可以的,但我想将大部分工作卸载到模块中。

最佳答案

我意识到这个问题已经存在三年了,但是为了其他人尝试做这类事情的利益,内核有一个名为 kprobes 的接口(interface)。做你需要的。

关于c - 在 Linux 内核中使用模块覆盖功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/290898/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com