使用新的lib文件更新可执行文件而无需重新编译

时间:2013-06-08 10:59:32

标签: c++ linker static-libraries static-linking

我有一个可执行文件(foo.exe),其中一个库已静态链接。 我更新了这个库。有没有办法用更新的库更新exe文件,而无需重新编译可执行文件。我无权访问可执行文件的源代码。 使用Visual C ++ 2010编写的可执行文件和lib文件。

1 个答案:

答案 0 :(得分:2)

可执行文件不存储有关哪些库是静态编译到其中的信息,也不存储链接器所必需的符号表。

那么,理论上,如果你不害怕逆向工程并以二进制格式修补可执行文件,你可以尝试在.exe的反汇编程序中找到旧的库代码并小心地更改.exe以便它执行来自新库的代码。但即使库只有几个函数,这也是一件非常困难和脆弱的事情,事实上它与可执行文件的反编译和恢复源相同。

所以,虽然理论上有可能替换一个静态的lib(事实上,替换你想要的任何东西),但这看起来是一件非常不合理的事情。