是否可以拦截 Linux 文件系统中文件的统计调用? (来自用户空间)

Is it possible to intercept stat calls on files in a Linux file system? (from userspace)

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

过去我使用过 INotify 库,但那只对我有用 opening/writing/closing 文件等。如果我没记错的话,stat 只是读取文件系统上 i-node 的内容,所以在用户 space 中使用二进制 运行 拦截调用的最佳方法是什么?

我想这也可以推广到拦截来自用户的系统调用space?

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

谢谢!

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

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

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