繁体   English   中英

替换linux内核3中的系统调用

[英]Replace system call in linux kernel 3

我有兴趣用我将在linux内核3中实现的自定义替换系统调用。我读到sys调用表不再暴露。

有任何想法吗?

任何对此http://www.linuxtopia.org/online_books/linux_kernel/linux_kernel_module_programming_2.6/x978.html示例的引用,但对于内核3将不胜感激:)

谢谢!

我建议使用kprobes来完成这种工作,你可以轻松打破任何内核地址(或符号......)并在运行时改变执行路径,所有这一切都需要内核模块,如果你需要:)

Kprobes通过中断动态替换指令(例如,系统调用条目的第一条指令)(例如x86上的int3)。 在do_int3处理程序中,通知程序通知kprobes,而kprobes又将执行传递给您的注册函数,此时您几乎可以执行任何操作。

Documentation / kprobes.txt中给出了一个非常好的文档,因此作为samples / kprobes / kprobes_example.c中的一个小例子(在这个例子中,它们在do_fork上中断以记录系统上的每个fork)。 它有一个非常简单的API,现在非常便携。

警告 :如果你需要改变执行路径,请确保你的kprobe没有被优化(即你的处理程序的jmp指令替换你打破的指令而不是int3)otherwize你将无法真正改变执行(在你的函数返回之后,系统调用函数仍将像往常一样执行)。 如果您只对跟踪感兴趣,那么这很好,您可以放心地忽略此问题。

写一个LKM,这将是更好的选择。你的意思是替换,你想添加一个新的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM