网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 程序设计-> Delphi/Pascal-> 第二节 Delphi反向工程

第二节 Delphi反向工程
作者:佚名 来源:InterNet 加入时间:2004-11-25
相关文章 相关书籍:

第二节 Delphi反向工程

      目前 ,Borland没有提供任何产品用于反编译可执行(.exe)文件或“Delphi 编译文件”(.dcu)为原始的程序代码(.pas)。

      Delphi编译单元:DCUDelphi compiled unit: DCU

      当一个Delphi工程被编译或运行时,一个编译单元(.dcu)文件便产生了。默认情况下,每个单元的编译版本都存放在独立的二进制文件中,该文件的文件名与单元文件同名,同时它的扩展名为.DCU。例如:unit1.dcu文件包含有在unit1.pas文件中声明的代码和数据。

      这意味着如果你有某些资源,如编译过的组件,你所必须做的是反编译它并获得源代码。错了,DCU文件格式是非文档的(所有者格式)并且它可以随版本的改变而改变。

      编译器之后:Delphi反向工程(After the compiler: Delphi Reverse Engineering

      如果你试图反编译一个Delphi可执行文件,有几件事你应该知道:

      Delphi源程序文件通常以两种文件类型存储:ASCII代码文件(.pas、.dpr)和资源文件(.res、.rc、.dfm、.dcr)。Dfm文件包含表单中所容纳的对象的详细资料(属性)。当创建一个可执行文件时,Delphi拷贝.dfm文件中的信息到已完成的.exe代码文件。表单文件描述了表单中的每个组件,包括所有稳定的属性值。每当我们改变表单的位置、按钮的标题或为组件指派一个事件过程时,Delphi就会在DFM文件中记下这些改变(不是事件过程的代码—它是存放在pas/dcu文件中)。为了从可执行文件中得到'dfm',我们需要理解什么类型的资源被存放在Win32可执行文件中。

      所有被Delphi编译过的程序都有以下几个部分:CODE、DATA、BSS、.idata、tls、.rdata、.rsrc。从反编译的角度来看,最重要的部分是:CODE、.rsrc。在“Adding functionality to a Delphi program"(“在Delphi程序中增加功能”)(译者加:陆续译出)文章中讨论了关于Delphi可执行格式、类信息和DFM资源的一些有趣的内容:怎样分配事件给同一个表单中定义的其他事件句柄(handler)处理、怎样增加你自己的事件句柄(handler)从而在可执行文件中增加代码改变按钮的标题。

      存放在.exe文件中的各种类型的资源里,RT_RCDATA或Application-defined(程序定义)资源(原始数据)拥有编译前DFM文件所包含的信息。为了从.exe文件中选出DFM数据,我们可以调用EnumResourceNames API函数...关于从.exe文件中选出DFM数据的更多的信息,可以参考:“Coding a Delphi DFM explorer”(“编写一个Delphi DFM探测器”)。(译者加:陆续译出)

 


[文章录入员:fightter]

相关文章 相关书籍:
本站推荐内容

近期主机类热搜关键词:
美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

Delphi/Pascal
C/C++/VC
C++Builder
Basic/VB类
Delphi/Pascal
Java编程
FORTRAN
其它
电脑教程阅读排行
·DELPHI下的多线程程序设计(...
·Delphi与Excel的亲密接...
·Delphi实现串口通信的常用的...
·Delphi中初始化.Ini文件...
·Delphi中用于读写(I/O)...
·谈谈Delphi中的类和对象
·Delphi编译错误中文手册
·Delphi中关于TApplic...
·OPENGL图形程序设计
·SQL的基本操作