4

有没有办法将我的 .dll 文件再次反汇编成机器代码?为此我需要哪些应用程序以及可以恢复多少?

4

4 回答 4

11

检查 PE File Explorer,这个工具很棒,是用 Delphi 构建的,并且对 Delphi 应用程序有特殊的支持。

可以分析、拆解、编辑资源

PE Explorer 是功能最丰富的程序,用于检查您自己的软件的内部工作,更重要的是,检查您没有源代码的第三方 Windows 应用程序和库。一旦您选择了要检查的文件,PE Explorer 将分析该文件并显示 PE 头信息的摘要,以及 PE 文件中包含的所有资源。从这里,该工具允许您探索可执行文件中的特定元素。

替代文字
(来源:pe-explorer.com

于 2010-02-27T00:03:57.567 回答
2

你需要一个反汇编程序,比如 IDA Pro。他们也有免费版。您将获得机器代码(程序集),并且您应该能够挑选出对 Windows API 进行的函数调用。

于 2010-02-26T21:18:53.690 回答
1

如果你丢失了源文件并且你真的只需要“找回你的工作”,那么你不妨开始重新编码它,因为你不会从反编译器中得到任何有用的东西。自从 Ms-DOS COM 文件时代以来,我一直无法从反编译器中重新编译任何东西(不要与 Windows COM 混淆!)。

用高级语言编写的现代文件运行抛出优化编译器根本不包括重建源代码所需的所有内容。

示例,这只是冰山一角:

  • Delphi 的优化链接器将跳过未使用的代码。有没有注意到当你想在一行代码上放置一个刹车点,而当程序启动时,由于代码已经被优化,这个刹车点被忽略了?
  • Delphi 的优化编译器可以选择用你的代码做各种各样的事情:
    • 它可以内联过程(因此它们不再是您编写它们的地方,而是进行调用的地方)。
    • 它可以展开“for”循环(所以你有一个“for i:=1 to 10 do something”你现在有“something; something; something;...”。
    • 局部变量得到优化,地址得到重用。
  • 数据结构符合当今的任何规则。因此,您的一个字 + 1 字节结构在内存中可能有 4 或 8 个字节,而不是您可能期望的 3 个字节。
  • 代码从其他库中导入。DLL 不是 DCU。一个 3 行的 DLL 实际上可能会从这些“uses”子句中导入数千行代码。
于 2010-02-28T10:17:41.747 回答
0

除了汇编代码之外,您将无法获得更多信息,因为 Delphi 是原生的,与 Java 或 .Net 语言不同,您可以获得更多信息。

于 2010-02-26T18:25:53.503 回答