Linux模块挂钩进程函数

时间:2012-04-29 15:40:18

标签: linux hook

我有一个问题,也许你有一些关于此的信息。我想在运行过程中挂接套接字接收函数(recv)并修改传入的数据。 我怎么知道,我可以使用内核模块做到这一点,但我无法找到有关如何进行此类挂钩的信息。

我试图采用其他方式,如Netfilter,iptables,但这些方法要慢一些。

1 个答案:

答案 0 :(得分:4)

请注意,可以使用几种不同的系统调用 - 而不仅仅是recv()。

假设有问题的应用程序通过C库进行内核交互(而不是手工制作系统调用),并且可以重新启动它来设置测试,一个相当简单的想法可能是使用LD_PRELOAD环境变量来首先加载一个自定义库,用自定义库替换感兴趣的系统调用包装器。

或者你可以按照strace的方式设置系统调用拦截,并使用感兴趣的方式设置猴子。

另一个选择是不让应用程序直接连接到远程系统,而是创建代理,让它连接到代理,并让代理连接到远程系统。这样做的一个主要优点是它非常便携,几乎不需要特定于平台的细节。