【问题标题】:Is there anyway to get the statically linked functions contained in a .exe and reuse them?有没有办法获取 .exe 中包含的静态链接函数并重用它们?
【发布时间】:2011-11-07 08:02:39
【问题描述】:

例如:

假设我已将myprogram.objmyprogram.lib 链接到myprogam.exe

如果myprogram.lib 包含各种特殊功能,而我不小心删除了它(和源),有没有办法可以挖掘myprogram.exe 并取出这些功能?或者甚至只是以某种方式将myprogram.exe 转换为.lib 文件并且只引用我需要的部分?

【问题讨论】:

    标签: c windows linker object-files .lib


    【解决方案1】:

    所以事情就是这样。您可能可以“反编译”您的可执行文件。这是一种痛苦。但是,如果您想了解有关此问题的所有信息,请查看 this 之前的 SO 问题。

    【讨论】:

      【解决方案2】:

      大多数编译器通过删除未使用的函数来优化代码。除非您使用了库的每一部分,或者您注意设置编译器以使其不会优化未使用的函数,否则您的 lib 文件被完整包含到可执行文件中的可能性不大。

      【讨论】:

      • 谢谢。我需要的功能已在程序中使用。但我想解决方案仍然保持不变?
      【解决方案3】:

      功能在那里。如果 exe 未加密或无法反汇编为直接汇编代码(exepackers、加密、加密狗),您可以找到这些函数。

      但是它们的命名、确切的边界和其他注释都消失了,这使得自动化很难做到这一点,因为不再有任何东西可以识别函数。

      换句话说,这适用于汇编程序向导或专业逆向工程服务。

      如果您的代码非常有价值,并且您的编译器比较常见,那么有逆向工程服务可能会为您做这件事。但要准备好付出高昂的代价。即使只是分析它的容易程度也可能很昂贵。 (*)

      在大多数情况下,提取的代价(无论是你自己的时间,还是雇佣的)都比函数的价值大,重写它们更便宜

      (*) RTTI 或内部调试信息可能会更容易。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-14
        • 2020-07-07
        • 2022-01-05
        • 2018-06-27
        • 1970-01-01
        相关资源
        最近更新 更多