首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换linux内核3中的系统调用

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

Stack Overflow用户
提问于 2011-11-27 02:50:04
回答 2查看 3.3K关注 0票数 3

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

有什么想法吗?

除内核3外,任何对此http://www.linuxtopia.org/online_books/linux_kernel/linux_kernel_module_programming_2.6/x978.html示例的引用都将受到重视:)

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-28 00:10:46

对于这类工作,我建议您使用kprobes,您可以很容易地中断任何内核地址(或符号...)如果需要,还可以使用内核模块在运行时更改执行路径:)

Kprobes的工作原理是动态地将指令(例如syscall条目的第一条指令)替换为中断(例如x86上的int3 )。在do_int3处理程序中,一个通知器通知kprobes,后者将执行传递给已注册的函数,从这一点起,您几乎可以执行任何操作。

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

Warning:如果你需要改变执行路径,请确保你的int3没有被优化(例如,给你的处理程序的一条jmp指令替换了你中断的指令,而不是一个kprobe),否则你将不能很容易地改变执行(在你的函数返回之后,syscall函数仍然会像往常一样执行)。如果您只对跟踪感兴趣,那么这很好,您可以安全地忽略此问题。

票数 6
EN

Stack Overflow用户

发布于 2011-11-27 17:36:07

写一个LKM会更好optio.What你的意思是替换,你想添加一个新的吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8280757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档