- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深入剖析 PE 文件
PE
PE
深入剖析 文件
PPEE
PE文件是Win32的原生文件格式.每一个Win32可执行文件都遵循PE文件
. PE Win32 .
格式对 文件格式的了解可以加深你对 系统的深入理解
一、 基本结构。
PE DOS MZ Header PE heade
上图便是 文件的基本结构。(注意: 和部分
r的大小是不变的;DOS stub部分的大小是可变的。)
PE Section, NT
一个 文件至少需要两个 一个是存放代码,一个存放数据。 上
的PE文件基本上有9个预定义的Section。分别是:.text, .bss, .rdata, .data, .rsr
c, .edata, .idata, .pdata, .debug PE Section.
和 。一些 文件中只需要其中的一部分
以下是通常的分类:
� 执行代码Section , 通常命名为: .text (MS) or CODE (Borland)
� 数据Section, 通常命名为:.data, .rdata, 或 .bss(MS) 或 DATA(Borla
nd).
� 资源Section, 通常命名为:.edata
� 输入数据Section, 通常命名为:.idata
� 调试信息Section,通常命名为:.debug
这些只是命名方式,便于识别。通常与系统并无直接关系。通常,一个PE
文件在磁盘上的映像跟内存中的基本一致。但并不是完全的拷贝。Windows加载
器会决定加载哪些部分,哪些部分不需要加载。而且由于磁盘对齐与内存对齐的
不一致,加载到内存的PE文件与磁盘上的PE文件各个部分的分布都会有差异。
当一个PE文件被加载到内存后,便是我们常说的模块(Module),其起始地址
就是所谓的HModule.
DOS
DOS
二、 DDOOSS头结构。
PE 64 DOS DOS
所有的 文件都是以一个 字节的 头开始。这个 头只是为了
兼容早期的DOS操作系统。这里不做详细讲解。只需要了解一下其中几个有用
的数据。
1. e_magic:DOS头的标识,为4Dh 和5Ah。分别为字母MZ。
2. e_lfanew PE Windows
:一个双字数据,为 头的离文件头部的偏移量。 加载
器通过它可以跳过DOS Stub部分直接找到PE头。
3. DOS头后跟一个DOS Stub数据,是链接器链接执行文件的时候加入的部
分数据,一般是“This program must be run under Microsoft Windows”。
这个可以通过修改链接器的设置来修改成自己定义的数据。
PE
PE
三、 PPEE头结构。
E IMAGE_NT_HEADERS
P
文档评论(0)