【问题标题】:Update executable file with new lib file without recompile使用新的 lib 文件更新可执行文件而不重新编译
【发布时间】:2013-06-08 10:59:32
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    嗯,理论上,如果你不怕逆向工程和二进制格式的可执行文件,你可以尝试在.exe的反汇编器中找到旧的库代码,并仔细更改.exe,使其执行来自新库的代码。但即使库只有几个函数,这也是一件非常困难和脆弱的事情,而且实际上它与可执行文件的反编译和恢复其源代码的复杂性相同。

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

    【讨论】:

      猜你喜欢
      • 2018-10-02
      • 1970-01-01
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 2016-12-05
      • 1970-01-01
      相关资源
      最近更新 更多