我有兴趣用自己实现的方法替换Linux内核3中的一个系统调用。
我看到系统调用表不再公开。
有什么想法吗?
是否可以提供此http://www.linuxtopia.org/online_books/linux_kernel/linux_kernel_module_programming_2.6/x978.html链接类似但适用于内核3的例子,将不胜感激 :)
谢谢!
我有兴趣用自己实现的方法替换Linux内核3中的一个系统调用。
我看到系统调用表不再公开。
有什么想法吗?
是否可以提供此http://www.linuxtopia.org/online_books/linux_kernel/linux_kernel_module_programming_2.6/x978.html链接类似但适用于内核3的例子,将不胜感激 :)
谢谢!
警告: 如果您需要更改执行路径,请确保您的 kprobes 没有被优化(即 jmp 指令到您的处理程序替换了您打断的指令,而不是 int3),否则您将无法轻松地更改执行(在函数返回之后,系统调用函数仍将像往常一样执行)。如果您只对跟踪感兴趣,则可以忽略此问题。
sys_
,所以对于所有的 accept (tcp 和 udp),你通常会在 sys_accept
上断点。是的,当你想要跟踪时,jprobes 真的很好用!还有更高级别的接口,它们在内部使用 kprobes,你可能会发现它们很有用,比如 ftrace:你甚至不需要编写一个内核模块,而是可以使用 debugfs 中的接口,阅读 Documentation/trace/ftrace 获取更多信息。还有审计子系统,但你需要编写一个守护进程。 - Quentin Casasnovas编写一个更好的LKM选项。您所说的替换是什么意思,您想要添加一个新的吗。
</被动挑衅>
- Eric
arch/<architecture>/kernel/
中可用。 - kba