Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
钩住Linux中的所有系统调用_Linux_System Calls_Entry Point_Systrace - Fatal编程技术网

钩住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

我们的目标是为Linux中的所有系统调用添加一个钩子,也就是说,钩子函数应该在调用这300个Linux系统调用之前被调用

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
    设计合理,如何修改内核代码所在的活动内存区域(内核代码段)
  • 如果没有意义,一般来说,如何修改Linux src代码中的一个(或几个)位置,并允许钩住所有sys调用
  • PS:平台:Linux 3.16和x86_64


    PS2:同样,我的问题与之前堆栈溢出问题中的
    sys\u call\u table
    hack不同。详情见第2段。

    @msw我的问题与此不同,请阅读OP.@msw-如果没有答案(如本例),那么问题是否改变其实并不重要。只有在有答案的情况下,对问题进行激进的编辑才会产生问题。@Richard你找到问题的答案了吗?