我们正在逆转Delphi的内部结构,有没有人知道任何有关Delphi可执行文件如何编译和链接在一起的好资源或其他细节以及最终exe内部各部分的布局。
我不是在寻找高级细节,例如它有n个部分。
我正在寻找一些东西(以下是'组成'),例如'.text'部分有3个部分:
等,等。
好的,我正在寻找有关结构的参考或知识。我已经拥有了下面提到的工具,还有更多工具可以帮助从头开始进行逆向工程。
我应该提到我知道资源布局,因为这有很好的记录。这是我所追求的代码和数据部分中嵌入的内部编译结构。 (例如,如何编译RTTI信息,事件处理程序和表单资源之间的映射等)。
答案 0 :(得分:7)
首先使用现有工具,如IDR(Interactive Delphi Reconstructor)和IDA(交互式反汇编程序)和已提及的PE Explorer。
我还建议编译一些简单的可执行文件并研究它的反汇编。
答案 1 :(得分:5)
Delphi或C ++ Builder可执行文件中最易识别的部分是资源。
它们将包含名为RCDATA的资源部分。本节包含以下内容:
在某些设置上,像UPX这样的压缩器可能会隐藏这些资源,因此除非您解压缩可执行文件,否则您将无法看到它们。
答案 2 :(得分:4)
看看Jedi JCL是值得的。 IIRC他们的追溯工具(jcldebug单元?)打开二进制文件来恢复调试信息。它至少会教会文件的全局结构。
某些位可能是特定于delphi版本的btw。
下载评估版的PE-Explorer也可能是一个好的开始。
答案 3 :(得分:0)
您可以在Delphi模块(exe或dll)中找到所有类型,因为它们总是带有指向结构本身的指针。您可以创建一个小应用程序并扫描exe以自己查看如何获取该信息。使用类型信息可获得良好的信息,其中单位是/方法等等。
将该信息与可用资源相结合(一个好的资源查看器可以解码所有表单/框架/数据模块的文本中的二进制资源)。
现在,如果你反汇编应用程序,你可以使用resources / typeinfo中的信息来理解找到的汇编代码。