ELF的代理共享库(sharedlib,shlib,so)?

在Windows上,创建“代理DLL”或多或少是常见的,代替原始DLL并将调用转发给它(在需要时执行任何其他操作之后)。 你可以在这里和这里阅读它。

然而,Linux下的shlib munging文化是完全不同的。 首先,LD_PRELOAD是Linux下ld.so的内置function,它只是将单独的shlib注入进程并使用它定义为覆盖的任何符号。 而这种“注入”技术似乎定义了整个思维方向 – 这是一个典型的ELF黑客工具或这个问题 ,绅士似乎与我有相同的用法,但首先要问他如何修补现有的二进制文件。

不用了,谢谢。 我不想注入或修改那些也不是我的东西。 我想做的就是创建一个独立的代理shlib,它将调用原始代理。 理想情况下,会有一个工具可以使用原始.so创建一个C源代码,它只会重定向到原始的函数,同时让我轻松覆盖我想要的任何东西。 那么,这样的工具在哪里? ;-) 谢谢。

apitrace是一个工具,它涵盖了对多个平台的图形库(OpenGL,DirectX)调用的详细跟踪。 对于通用解决方案来说,它可能过于详细和复杂,但至少提供了一些参考和亲和力。