PE格式

王朝百科·作者佚名  2010-03-07  
宽屏版  字体: |||超大  

PE格式,是微软Win32环境可执行文件的标准格式(所谓可执行文件不光是.EXE文件,还包括.DLL/.VXD/.SYS/.VDM等)。PE 就是Portable Executable 的缩写。Portable 是指对于不同的Windows版本和不同的CPU类型上PE文件的格式是一样的,当然CPU不一样了,CPU指令的二进制编码是不一样的。只是文件中各种东西的布局是一样的。

PE文件使用的是一个平面地址空间,所有代码和数据都合并在一起,组成一个很大的结构。主要有:

.text 是在编译或汇编结束时产生的一种块,它的内容全是指令代码

.rdata 是运行期只读数据

.data是初始化的数据块

.idata 包含其它外来DLL的函数及数据信息,即输入表

.rsrc 包含模块的全部资源:如图标、菜单、位图等

PE文件结构(简化):

-----------------

│1,DOS MZ header│

-----------------

│2,DOS stub │

-----------------

│3,PE header │

-----------------

│4,Section table│

-----------------

│5,Section 1 │

-----------------

│6,Section 2 │

-----------------

│ Section ... │

-----------------

│n,Section n │

-----------------

1、入口点Entry Point

2、文件偏移地址 File Offset

3、虚拟地址 Virtual Address 简称:VA

4、基地址 ImageBase

5、相对虚拟地址 Relative Virual Address 简称:RVA

公式:RVA (相对虚拟地址) =VA (虚拟地址)-ImageBase (基地址)

文件偏移地址和虚拟地址转换

在X86系统中,每个内存的大小是4KB,即0X1000个字节。

文件偏移地址 File Offset =RVA (相对虚拟地址)-ΔK

文件偏移地址 File Offset =VA (虚拟地址) -ImageBase (基地址)-ΔK

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有