【问题标题】:Linux module to hook process functionsLinux 模块挂钩进程函数
【发布时间】:2012-05-03 21:44:10
【问题描述】:

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

我尝试过其他方式,例如 Netfilter、iptables,但这些方式速度较慢。

【问题讨论】:

    标签: linux hook


    【解决方案1】:

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

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

    或者你可以像 strace 那样设置系统调用拦截,然后与感兴趣的人一起玩。

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

    【讨论】:

    • 您能告诉我更多关于 LD_PRELOAD 的信息,尤其是关于套接字挂钩的信息。也许一些使用的例子?谢谢!
    • 我希望使用 LD_PRELOAD 进行拦截的网络搜索将是有效的。一旦你拦截了电话,弄清楚该做什么应该是一个很好的学习经验。请记住,数据可能以片段的形式出现,并且使用某些协议 (UDP) 片段可能会丢失、乱序、重新发送等。
    猜你喜欢
    • 2014-05-20
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2023-04-06
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多