我如何在运行时(无LD_PRELOAD
)拦截/钩接Linux上的fopen()
之类的C函数(Windows的Detours)?我想从Python执行此操作(因此,我假设程序已经在运行CPython VM),并且还重新路由到Python代码。我只需要钩住共享库函数就可以了。我也想这样做,而不必更改程序的运行方式。
一种想法是基于ptrace()
或基于dlsym()
或PLT中发现的重写代码来滚动我自己的工具,并针对ctypes
生成的C可调用函数,但是我想我首先要问这里。谢谢。
最佳答案
您将从ltrace开发人员之一那里找到一种执行此操作的方法。请参阅this post,其中包括完整的补丁程序,以便捕获动态加载的库。为了从python调用它,您可能需要制作一个C模块。