【发布时间】:2012-01-12 18:28:45
【问题描述】:
有没有可能从我自己的模块中访问sys_call_table Kernel 2.6+?如果有人可以提供文章或操作方法的链接,我将不胜感激。我需要一种无需修改Kernel 源代码的方法。我知道在Linux 2.4 Kernel 上很容易,您可以使用外部符号,但是此功能已从Kernel 2.6 中删除。
【问题讨论】:
-
这个功能被删除了,因为它通常是错误的方式来做你想做的任何事情,而且它让rootkits太容易了。你到底想做什么?
-
尝试用我自己的方法替换系统调用。
-
Module 总是错误的方式来修改系统调用...
-
@Roman 然后 kprobes(尤其是 jprobes,如果您只需要跟踪)特别适合这项工作。它通过使用您要跟踪的函数(或您的情况下的系统调用)的相同原型注册处理程序来工作。每次系统调用将被命中时,您的处理程序将使用与之前的系统调用相同的参数进行调用。如果您只想进行跟踪,则可以使用 ftrace API 在用户空间中进行所有操作。
标签: c linux operating-system linux-kernel