拆解用Delphi编码的DLL - 如何启动?

时间:2010-02-26 18:24:20

标签: delphi disassembly

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

4 个答案:

答案 0 :(得分:10)

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

您可以分析,反汇编,编辑资源

  

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

alt text http://www.pe-explorer.com/img/scr-pex-disassembler.png

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

一个用高级语言编写的现代文件抛出优化编译器,但不包括重构源代码所需的所有内容。

示例,它只是冰山的顶端:

  • Delphi的优化链接器将使用未使用的SKIP代码。有没有注意到当你想在一行代码上放置制动点时,程序启动时忽略制动点,因为代码已经过优化了?
  • Delphi的优化编译器可以选择使用您的代码执行各种操作:
    • 它可以内联程序(因此它们不再是您编写它们的地方,它们就是调用的地方)。
    • 它可以解开“for”循环(所以你有一个“for i:= 1到10做某事”你现在有“东西;东西;东西; ......”。
    • 本地变量得到优化,地址可以重复使用。
  • 数据结构与当天的规则一致。所以你的单字+ 1字节结构在内存中可能有4或8个字节,而不是你想象的3个字节。
  • 代码从其他库导入。 DLL不是DCU。 3行DLL实际上可能会从这些“uses”子句中导入数千行代码。

答案 3 :(得分:0)

您将无法获得更多汇编代码,因为Delphi与Java或.Net Languages不同,您可以获得更多信息。