我有一个可执行文件(foo.exe),其中一个库已静态链接。 我更新了这个库。有没有办法用更新的库更新exe文件,而无需重新编译可执行文件。我无权访问可执行文件的源代码。 使用Visual C ++ 2010编写的可执行文件和lib文件。
答案 0 :(得分:2)
可执行文件不存储有关哪些库是静态编译到其中的信息,也不存储链接器所必需的符号表。
那么,理论上,如果你不害怕逆向工程并以二进制格式修补可执行文件,你可以尝试在.exe的反汇编程序中找到旧的库代码并小心地更改.exe以便它执行来自新库的代码。但即使库只有几个函数,这也是一件非常困难和脆弱的事情,事实上它与可执行文件的反编译和恢复源相同。
所以,虽然理论上有可能替换一个静态的lib(事实上,替换你想要的任何东西),但这看起来是一件非常不合理的事情。