【问题标题】:Is it possible to intercept stat calls on files in a Linux file system? (from userspace)是否可以拦截 Linux 文件系统中文件的 stat 调用? (来自用户空间)
【发布时间】:2017-02-24 15:16:49
【问题描述】:

我想拦截对特定文件的统计调用,并在检测到后尽快执行操作。

过去我使用过 INotify 库,但这仅在打开/写入/关闭文件等时对我有用。如果我没记错的话,stat 只是读取文件系统上 i-node 的内容,所以会怎样是用在用户空间中运行的二进制文件拦截调用的最佳方式吗?

我猜这也可以概括为拦截来自用户空间的系统调用?

还想指出,我确实知道我的目标进程,但无法控制它何时运行等。

谢谢!

【问题讨论】:

    标签: linux system-calls


    【解决方案1】:

    使用称为function interposition 的技术是可能的。

    它适用于您启动或控制启动环境以能够设置LD_PRELOAD 环境变量的应用程序。

    【讨论】:

    • 不幸的是,我无法控制启动环境,并且说二进制文件在 root 下运行,而我在权限较低的用户下运行,可以控制正在统计的文件。这使得这变得更加困难,我开始相信如果不修改内核并自行构建,这是不可能的......不过感谢您的链接,这种技术似乎在相关工作中很有用!
    • @AzeemIlyas 在这种情况下你不能颠覆其他应用程序,这是一项安全功能。
    【解决方案2】:

    您可以通过 LD_PRELOAD 在库级别使用函数劫持,但这仅适用于非 setuid/setgid 的动态链接二进制文件。对于静态或 setuid/setgid 二进制文件,您必须实现内核模块才能在内核级别劫持函数。

    【讨论】:

      猜你喜欢
      • 2012-09-09
      • 2013-06-29
      • 1970-01-01
      • 2021-05-07
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      • 2022-06-20
      相关资源
      最近更新 更多