是否可以拦截 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 二进制文件,您必须实现内核模块以在内核级别劫持函数。
我想拦截对特定文件的统计调用,并在检测到后尽快执行操作。
过去我使用过 INotify 库,但那只对我有用 opening/writing/closing 文件等。如果我没记错的话,stat 只是读取文件系统上 i-node 的内容,所以在用户 space 中使用二进制 运行 拦截调用的最佳方法是什么?
我想这也可以推广到拦截来自用户的系统调用space?
还想指出,我确实知道我的目标进程,但无法控制它何时运行等。
谢谢!
使用称为 function interposition 的技术是可能的。
适用于您启动或控制启动环境的应用程序能够设置LD_PRELOAD
环境变量。
您可以使用 LD_PRELOAD 在库级别使用函数劫持,但这仅适用于非 setuid/setgid 的动态链接二进制文件。对于静态或 setuid/setgid 二进制文件,您必须实现内核模块以在内核级别劫持函数。