28

有人刚刚给我发了一个反编译成 C 的程序。这是一个非常好的反编译,产生了很好的、大部分是可读的 C 代码(如果你忽略了没有一个变量或函数有一个人类可读的名称的事实),大部分看起来像它实际上会编译。

不过,有一个大问题。我正好知道他反编译的程序是用Delphi写的,里面充满了C语言很难翻译的概念。但是反编译器的输出给我留下了深刻的印象,让我感到好奇。有什么可以为德尔福做的吗?

我见过的最好的 Delphi 反编译工具是 DeDe。它可以做很多事情,但它甚至不会尝试生成 Object Pascal 代码作为其输出,并且自 Delphi 6 以来它还没有更新。还有什么更好的吗?

4

4 回答 4

12

我认为没有任何机器代码反编译器可以生成 Pascal 代码。大多数“Delphi 反编译器”解析表单和 RTTI 数据,但实际上并不反编译机器代码。我只能推荐使用 DeDe(或类似软件)之类的东西结合 C 反编译器来提取符号信息,然后将反编译的 C 代码转换为 Delphi(那里有很多源代码转换器)。

于 2008-12-02T19:24:08.173 回答
12

你可以使用IDR它是一个很好的反编译 Delphi 的程序,它已更新到当前的 Delphi 版本,它有很多功能。

于 2012-11-08T09:57:07.933 回答
6

这是一个列表:http ://delphi.about.com/od/devutilities/a/decompiling_3.htm (这个页面提到了更多: http: //www.program-transformation.org/Transform/DelphiDecompilers

我偶尔使用过 DeDe,但它并没有那么强大,而且它与当前的 Delphi 版本不是最新的(我相信它支持的最新版本是 Delphi 7)

于 2008-12-03T07:16:32.557 回答
3

Delphi、C 和 C++ 等语言编译为处理器本机机器代码,并且输出的可执行文件中几乎没有元数据或没有元数据。这与 Java 或 .Net 不同,后者编译为面向对象的独立于平台的字节码,保留方法的名称、方法参数、类和命名空间以及其他元数据。

因此,可以在 Delphi 或 C 代码上进行的反编译很少有用。但是,Delphi 通常为项目中的任何表单嵌入表单数据(由 $R *.dfm 行生成),并且它还具有所有已发布属性的元数据,因此特定于 Delphi 的工具能够提取此信息。

于 2008-12-03T07:55:45.397 回答