2010-02-26 94 views
2

有什么方法可以将我的.dll文件再次反汇编为机器代码? 我需要哪些应用程序以及可以恢复多少?反汇编在Delphi中编码的DLL - 如何启动?

+0

经验法则:如果不值得把它交给逆向工程专家,代码是不值得的。重写它。 – 2010-02-27 12:54:21

+0

使用反汇编程序并自己进行逆向工程 - 您的要求太高。你似乎并不了解这个过程耗时多长。谁会说你不是在这里问别人来帮助你闯入别人的代码? – logout 2010-02-28 10:40:35

回答

0

你不能获得比汇编代码更多的东西,因为Delphi本身不像Java或.Net语言,你可以从中获得更多的信息。

+1

这取决于德尔福版本。有一个Delphi .NET。即使对于Win32,一些旧工具也可以提取资源(如表单),并用除代码隐藏之外的所有东西恢复它们。 – TrueWill 2010-02-26 18:34:52

+0

你们中的任何一个人都可以看着它并尝试帮助我吗? – user282262 2010-02-27 03:59:28

+0

Microsoft有一篇文章描述如何将MSIL编译为本地代码。 (http://msdn.microsoft.com/en-us/library/ht8ecch6(VS.71).aspx)。您可以使用Ngen或商业工具。 Java字节码也可以编译为本地代码。 – mjn 2010-02-28 17:23:35

2

您需要像IDA Pro一样的反汇编程序。他们也有free edition。您将取回机器代码(程序集),并且您应该能够挑选出对Windows API进行的函数调用。

+0

奥奇,感谢所有的答案:) 你或任何人都可以帮我翻译整件事,这样我就可以恢复工作了吗? – user282262 2010-02-27 03:57:10

9

检查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

如果您丢失了源文件,你真的只需要在“让您的工作回来”,那么你可能也开始重新编码,因为你不会得到任何有用的东西脱离反编译器。自Ms-DOS COM文件开始以来,我一直无法从反编译器中获取任何可重新编译的内容(不要与Windows COM混淆!)。

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

的例子,它的只是冰山的顶部:

  • 德尔福的优化连接将跳过这不是使用的代码。有没有注意到当你想要在一行代码上放置一个制动点,并且程序启动时,制动点被忽略,因为代码已经被优化了?
  • 德尔福的优化编译器有做各种各样的事情与你的代码的选项:
    • 它可以内联程序(使他们不再,你写了他们,他们是在调用时)。
    • 它可以放松“for”循环(所以你有一个“for i:= 1 to 10 do something”你现在有“东西;某些东西; ...”
    • 局部变量得到优化,地址得到重用
  • 数据结构与任何一天的规则是一致的。所以你的一个字+ 1字节的结构可能在内存中有4或8个字节,而不是你想象的那样。
  • 代码从其他库导入。一个DLL不是一个DCU。 3行DLL可能实际上从这些“使用”子句中导入了数千行代码。
+2

我从来没有见过Delphi编译器展开循环,我怀疑它确实如此。你可以发表一个例子吗? – mghie 2010-02-28 10:38:36