【发布时间】:2013-06-08 10:59:32
【问题描述】:
我有一个可执行文件 (foo.exe),其中包含一个静态链接的库。 我更新了这个库。有没有办法用更新的库更新 exe 文件而无需重新编译可执行文件。我无权访问可执行文件的源代码。 使用 Visual C++ 2010 编写的可执行文件和 lib 文件。
【问题讨论】:
标签: c++ linker static-libraries static-linking
我有一个可执行文件 (foo.exe),其中包含一个静态链接的库。 我更新了这个库。有没有办法用更新的库更新 exe 文件而无需重新编译可执行文件。我无权访问可执行文件的源代码。 使用 Visual C++ 2010 编写的可执行文件和 lib 文件。
【问题讨论】:
标签: c++ linker static-libraries static-linking
可执行文件不存储有关哪些库被静态编译到其中的信息,也没有链接器所需的符号表。
嗯,理论上,如果你不怕逆向工程和二进制格式的可执行文件,你可以尝试在.exe的反汇编器中找到旧的库代码,并仔细更改.exe,使其执行来自新库的代码。但即使库只有几个函数,这也是一件非常困难和脆弱的事情,而且实际上它与可执行文件的反编译和恢复其源代码的复杂性相同。
因此,虽然理论上可以替换静态库(实际上,替换任何你想要的东西),但这看起来是一件非常不合理的事情。
【讨论】: