仅在debian中覆盖我的应用程序的系统调用

时间:2015-05-26 18:11:28

标签: c linux-kernel operating-system kernel debian

我要求我在运行的线程中拦截系统调用并记录该信息。我的内核版本是3.15.10

我知道一种方法,我可以获得系统调用地址,然后跳转到该地址的不同系统调用号码。但是,这种方法的问题是如果出现问题我的系统将会崩溃。

我想要的是仅覆盖我的应用程序的系统调用

1 个答案:

答案 0 :(得分:1)

如果您拥有应用程序的源代码并且可以重新编译,则可以使用宏定义将系统调用更改为覆盖其他内容(通常是原始系统调用)。

#define rmdir(p) overridden_rmdir(p)

在链接路径的库中定义overridden_rmdir

如果由于某种原因无法执行此操作,但仍可以重新编译,则可以生成汇编器输出并对其进行编辑(与sed脚本一样)以包含所需的修改。

如果您无法重新编译或重新链接,您可能可以反汇编二进制文件并编辑汇编程序输出,如上所述。

另一种可能性是在具有不同内核的虚拟机中运行此应用程序,其中内核被修改为使用被覆盖的系统调用。

希望这有用。