Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 替换/覆盖静态链接库_Linux_Static Libraries_Gnu Toolchain - Fatal编程技术网

Linux 替换/覆盖静态链接库

Linux 替换/覆盖静态链接库,linux,static-libraries,gnu-toolchain,Linux,Static Libraries,Gnu Toolchain,我有一个由供应商提供的对象文件-foo.so。该对象文件与一个公开可用的库——bar_1.0.a静态链接。有一个新版本的库bar_1.1.a修复了一个关键的bug,但是供应商没有提供新版本的foo.so,所以我不能利用这个bug修复 由于我无法访问foo.so的源代码,因此无法针对新版本的bar重新编译。我确实可以访问bar的源代码,因此我可以随意构建它。bar中的符号在1.0和1.1之间没有变化,只有部分实现 我想知道是否有一种方法可以将foo.so中静态链接的bar_1.0.a库替换/覆盖为

我有一个由供应商提供的对象文件-
foo.so
。该对象文件与一个公开可用的库——
bar_1.0.a
静态链接。有一个新版本的库
bar_1.1.a
修复了一个关键的bug,但是供应商没有提供新版本的
foo.so
,所以我不能利用这个bug修复

由于我无法访问
foo.so
的源代码,因此无法针对新版本的
bar
重新编译。我确实可以访问
bar
的源代码,因此我可以随意构建它。
bar
中的符号在1.0和1.1之间没有变化,只有部分实现

我想知道是否有一种方法可以将
foo.so
中静态链接的
bar_1.0.a
库替换/覆盖为
bar_1.1.a
,而无需访问
foo.so
。或者,如果不可能,我是否可以强制
foo.so
动态链接
bar_1.1.so
,即使它与
bar_1.0.a
静态链接


我知道有各种各样的
LD.*
环境变量会影响动态链接,但我不相信这对这种情况有帮助。

我相信您正在寻找拦截或滑动。你对所有的导出进行阴影处理
foo.so
,然后首先加载自己。您提供了该漏洞的更新例程。否则,将调用传递到原始的
foo.so
。Valgrind等工具对某些系统调用(如malloc和free)使用类似的技术。我认为静态库
bar.a
会让事情变得特别痛苦。