《Windows PE》2.1 初识PE文件

Windows PE文件(Portable Executable file)是一种可执行文件格式,用于Windows操作系统中的可执行程序、动态链接库(DLL)和驱动程序等。它是一种规范化的文件格式,定义了文件的结构和组织方式,以便操作系统能够正确加载和执行这些文件。

本节必须掌握的知识点:

        PE文件特征和组成

        初识PE文件

2.1.1 PE文件特征和组成

图2-1 PE结构划分

如图2-1所示,Windows PE文件的主要特征和组成部分包括:

DOS

DOS头由两部分组成:

●DOS MZ头(DOS Header): 这是一个用于兼容DOS环境的头部,包含了DOS程序的执行入口和其他相关信息。

●DOS块(DOS Stub):DOS驻留程序。是Windows可执行文件(PE文件)中的一个特殊部分,位于文件头之后、PE头之前的位置。它是为了兼容DOS环境而保留的一个小段程序代码,用于在DOS环境下执行一些简单的操作或显示一些特定信息。

PE

PE头由3部分组成:

●PE头标识(Signature):即“50 45 00 00”4个字节二进制数,为“PE\0\0”的ASCII码字符,用于标识该文件为PE文件。

●PE文件头(PE Header): 这是PE文件的主要头部,包含了PE文件的标识和一些基本信息,如机器类型、节表(Section Table)的位置和大小等。

●PE扩展头(OptionalHeader):位于PE文件头(PE Header)之后的一个可选部分,用于存储一些额外的信息和数据。扩展头的存在取决于PE文件的特定配置和需要。扩展头包括扩展头(Optional Header)和数据目录表(Data Directory Table)。

其中数据目录表中包含了16个数据目录项:

1.导入表(Import Table)和导出表(Export Table): 这些表用于描述PE文件中的导入和导出函数。导入表记录了PE文件所依赖的外部函数和库,而导出表记录了PE文件中自己提供给其他模块使用的函数。

2.重定位表(Relocation Table): 当PE文件被加载到内存中时,由于地址空间的不同,可能需要对其中的地址进行重定位。重定位表记录了需要进行地址重定位的位置和相关信息。

3.资源表(Resource Table): 资源表包含了PE文件中的资源,如图标、位图、字符串等。它们可以被应用程序或操作系统使用。

4.IAT表(Import Address Table)是Windows可执行文件中的一个重要数据结构,用于存储程序所依赖的外部函数的地址。它是在链接和加载过程中由操作系统动态填充的。

5.其他数据部分(Data Sections): PE文件还包括一些其他数据部分,如调试信息、TLS(Thread Local Storage)初始化数据等。

DOS头和PE头构成了PE文件的头部。接下来就是PE文件的数据部分。

PE数据区

PE数据区包含节表和节区内容两个部分组成。每个具体PE文件中节区的数量是不同的。

●节表(Section Table): 节表定义了PE文件中各个节(Section)的位置、大小和属性等信息。每个节都对应着PE文件中的一个逻辑部分,如代码节、数据节、资源节等。

●节内容:节表以下的部分就是各个节区的具体内容了,如.text、.rdata、.data节区等。

Windows PE文件格式是Windows操作系统的核心之一,了解它的结构和使用方式对于开发和分析Windows应用程序和驱动程序非常重要。

【注意】 PE文件格式的细节和特性可能会因不同的Windows版本和编译器而有所差异。

2.1.2 初识PE文件

我们借助WinHex工具来初步认识一下一个简单的PE文件HelloWorld.exe。

实验一:静态分析32位PE文件

我们将32位程序HelloWorld.exe拖入WinHex,如图1-2所示:

图2-2 初识PE文件

图1-2清晰的显示了一个真实的、在磁盘上的PE文件的基本结构。一个PE文件可以划分为DOS头、DOS块、PE头、节表和节区几个大区块。

每个PE文件的DOS头的大小都是64个字节,都具有“4D5A”两个字节的DOS头特征字符“MZ”。而DOS块的大小却是可变的。

每个PE文件都有PE 文件标识“PE\0\0”,即0x00004550。PE头的大小也同样是可变的。通常绝大多数32位PE文件的PE头的大小是相同的,为248字节。而64位PE文件的PE头大小为264个字节。在一些特例中,有可能会人为的修改扩展头的大小。

每个PE文件节表的大小和节区的大小都有可能不相同。每个节表项都对应一个节区。在图2-2中,HelloWorld.exe包含.text、.rdata和.data 3个节区,分别对应3个节区。

实验二:静态分析64位PE文件

将64位程序notepad64.exe拖入WinHex,如图2-3所示:

图2-3 64位PE静态分析

64位PE文件格式与32位PE文件格式几乎相同,同样包含DOS头、DOS块、PE头、节表和节区。也同样包含”MZ”和”PE/0/0”特征。如果仔细观察就会发现,64位PE文件的PE头的大小为264个字节,而32位PE文件的PE头大小为248个字节。我们将在下一章详细讲解具体的区别。

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值