我如何在运行时(无LD_PRELOAD)拦截/钩接Linux上的fopen()之类的C函数(Windows的Detours)?我想从Python执行此操作(因此,我假设程序已经在运行CPython VM),并且还重新路由到Python代码。我只需要钩住共享库函数就可以了。我也想这样做,而不必更改程序的运行方式。

一种想法是基于ptrace()或基于dlsym()或PLT中发现的重写代码来滚动我自己的工具,并针对ctypes生成的C可调用函数,但是我想我首先要问这里。谢谢。

最佳答案

您将从ltrace开发人员之一那里找到一种执行此操作的方法。请参阅this post,其中包括完整的补丁程序,以便捕获动态加载的库。为了从python调用它,您可能需要制作一个C模块。

07-24 09:46
查看更多