有人刚给我发了一个程序反编译成C语言。这是一个非常好的反编译,产生了很好的,主要是可读的C代码(如果你忽略了这个变量或函数没有一个人类可读的名字的事实)大多看起来它实际上都会编译。
但是,有一个大问题。我碰巧知道他反编译的程序是用Delphi编写的,其中充满了难以转化为C的概念。但我对反编译器的输出印象深刻,这让我很奇怪。对Delphi有什么可以做的吗?我见过Delphi的最好的反编译工具是DeDe。它可以做很多事情,但它甚至不会尝试生成Object Pascal代码作为其输出,并且自Delphi 6以来它还没有更新。那里有什么更好的吗?
答案 0 :(得分:12)
我认为没有任何产生Pascal代码的机器代码反编译器。大多数“Delphi反编译器”解析表单和RTTI数据,但实际上并不反编译机器代码。我只能建议使用像DeDe(或similar software)这样的东西与C反编译器一起提取符号信息,然后将反编译的C代码翻译成Delphi(那里有很多源代码转换器)。
答案 1 :(得分:7)
你可以使用IDR这是一个很好的程序来反编译delphi,它是对当前delphi版本的更新,它有很多功能。
答案 2 :(得分:6)
以下是一个列表:http://delphi.about.com/od/devutilities/a/decompiling_3.htm(此页面还提到了更多:http://www.program-transformation.org/Transform/DelphiDecompilers)
我偶尔会使用DeDe,但它并不是那么强大,并且它不是最新的当前Delphi版本(它支持的最新版本是Delphi 7我相信)
答案 3 :(得分:1)
Delphi,C和C ++等语言编译为处理器本地机器代码,输出可执行文件中几乎没有元数据。这与Java或.Net形成对比,后者编译为面向对象的平台无关字节码,它保留了方法,方法参数,类和命名空间以及其他元数据的名称。
因此,可以在Delphi或C代码上进行的反复无常的反编译。 但是,Delphi通常为项目中的任何表单(由$ R * .dfm行生成)嵌入表单数据,并且它还具有所有已发布属性的元数据,因此特定于Delphi的工具将能够提取此信息。