gpt4 book ai didi

c - 预加载静态链接的 C 符号

转载 作者:太空宇宙 更新时间:2023-11-03 23:32:32 25 4
gpt4 key购买 nike

是否可以预加载静态链接符号?

在linux下,我可以用

LD_PRELOAD=libSomeLibrary.so ./anExecutableLinkedToAnOtherLibrary

但这只有在符号动态链接时才有效。现在我需要将一些符号注入(inject)可执行文件,其中这些符号静态链接到其他一些库。

我知道在一般情况下,这在理论上是不可能的,因为静态符号甚至可能已被内联。但是,如果我们有一个没有优化且包含完整调试符号的调试版本,理论上应该可以将我们的符号注入(inject)正确的位置。

我对 linux 和 windows 世界的答案都很感兴趣,但即使只是在 linux 中解决这个问题也足够了。

最佳答案

静态符号没有预加载机制,因为它们不使用 ld.so。操作系统只是将文件映射到内存并开始执行它。

您可以修改二进制文件以包含新版本的库。一种方法是使用 objcopy 去除旧符号,然后使用 ld 链接新符号。

关于c - 预加载静态链接的 C 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12438568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com