钩住Linux中的所有系统调用
我们的目标是为Linux中的所有系统调用添加一个钩子,也就是说,钩子函数应该在调用这300个Linux系统调用之前被调用 有钩住Linux中的所有系统调用,linux,system-calls,entry-point,systrace,Linux,System Calls,Entry Point,Systrace,我们的目标是为Linux中的所有系统调用添加一个钩子,也就是说,钩子函数应该在调用这300个Linux系统调用之前被调用 有sys\u call\u tablehack(例如.[]),但是只允许挂接一个或几个系统调用;也就是说,如果需要劫持read(),则将sys\u call\u表中的sys\u read条目修改为具有钩子处理程序的新函数 当然,您可以手动钩住所有300个syscall条目;但我正在寻找一种更优雅的方法,只需很少修改代码 一种可能的方法是更改文件entry\u 64.Sentr
sys\u call\u table
hack(例如.[]),但是只允许挂接一个或几个系统调用;也就是说,如果需要劫持read()
,则将sys\u call\u表中的sys\u read
条目修改为具有钩子处理程序的新函数
当然,您可以手动钩住所有300个syscall条目;但我正在寻找一种更优雅的方法,只需很少修改代码
一种可能的方法是更改文件entry\u 64.S
entry(系统调用)
所在的位置。然而,由于我需要使用linux内核模块并入侵一个实时系统,我发现在运行的linux系统中修改entry_64.S
的内存映像很困难
所以我的问题是:
条目\u 64.S
设计合理,如何修改内核代码所在的活动内存区域(内核代码段)PS2:同样,我的问题与之前堆栈溢出问题中的
sys\u call\u table
hack不同。详情见第2段。@msw我的问题与此不同,请阅读OP.@msw-如果没有答案(如本例),那么问题是否改变其实并不重要。只有在有答案的情况下,对问题进行激进的编辑才会产生问题。@Richard你找到问题的答案了吗?