用Delphi编译的可执行文件的内部结构

chk*_*dsk 5 delphi reverse-engineering

我们正在逆转Delphi的内部结构,有没有人知道任何有关Delphi可执行文件如何编译和链接在一起的好资源或其他细节,以及最终exe内部各个部分的布局是什么.

我不是在寻找高级细节,比如它有n个部分.

我正在寻找一些东西(以下是'组成'),例如'.text'部分有3个部分:

  1. 数据(一)
  2. 指针表(b)
  3. 代码与可以使用机制识别的数据交织(c)

等等,等等.


好的,我正在寻找有关结构的参考或知识.我已经拥有了下面提到的工具,还有更多来帮助从头开始进行逆向工程.

我应该提到我知道资源布局,因为这有很好的记录.这是我所追求的代码和数据部分中嵌入的内部编译结构.(例如,如何编译RTTI信息,事件处理程序和表单资源之间的映射等).

Rem*_*mko 7

首先使用现有的工具,如IDR(Interactive Delphi Reconstructor)和IDA(交互式反汇编程序)和已经提到的PE Explorer.

我还建议编译一些简单的可执行文件并研究它的反汇编.


Bru*_*Gee 5

Delphi或C++ Builder可执行文件中最易识别的部分是资源.

它们将包含名为RCDATA的资源部分.本节包含以下内容:

  • 名为DVCLAL的部分,用于标识编译器的SKU,例如Personal,Professional或Enterprise.
  • 名为PACKAGEINFO的部分,其中包含已包含单元的列表以及Delphi或C++ Builder的标志
  • 每个DFM的个人资源.

在某些设置上,像UPX这样的压缩器可能会隐藏这些资源,因此除非您解压缩可执行文件,否则您将无法看到它们.


Mar*_*ort 4

Jedi JCL 可能值得一看。IIRC 他们的回溯工具(jcldebug 单元?)打开二进制文件来恢复调试信息。它至少会教授文件的全局结构。

顺便说一句,某些位可能是特定于 delphi 版本的。

下载 PE-Explorer 的评估版也可能是一个好的开始。