PE文件结构小结
来源:http://www.tudoupe.com时间:2021-12-05
此页面仅保留 PE 文件结构, 作为备注, 供未来参考!
一些数据目录尚未汇总,随后的学习将得到加强。
文章目录
- DOS头
- NT头
- 文件头
- 确定文件是否为 PE 文件 。
- 确定 PE 文件是否是 dll
- 确定一个 PE 文件是否可执行 。
- 确定 PE 文件是32 或 64 比特(方法1和2)
- 可选头
- 确定 PE 文件是32位或64位(方法3)
- 数据目录
- 导出表
- 三个数组
- 获取基于函数名称的函数地址。
- 导入表
- 双桥结构
- 确定一个 PE 文件是否为 siys
- 资源表
- 安全表
- 重定位表
- 调试信息表
- TLS
- 节表
- FOA可通过RVA获得。
- 常见的节
PE文件结构图:

DOS头
Dos头一共64(0x40)个字节
监督事务司头部的底部不是NT头部,而是一块从一个链接到下一个链接大小不等的塔布。
因此不能通过IMAGE_DOS_HEADER + 0x40它的设计是用来找到NT头的IMAGE_DOS_HEADER + IMAGE_DOS_HEADER->e_lfanew。
NT头
NT头的大小从32到64不等,原因是头的甄选有差异。
248 (0xF8) 字节= 4 + 20 (0x14) + 224 (0xE0) 字节
64字节 = 4 + 20 (0x14) + 240 (0xF0) = 264 (0x108)
文件头
文件头一共20(0x14)个字节

确定文件是否为 PE 文件 。
确定 PE 文件是否是 dll
确定一个 PE 文件是否可执行 。
确定 PE 文件是32 或 64 比特(方法1和2)
方法一:
方法二:
可选头
低于32,96 (0x60) + 128 (0x80) = 224 (0xE0) 字节
64下, 112 (0x60) + 128 (0x80) 等于 240 (0xF0) 字节
64至32个职位之间的差额如下:
- 64位没有成员
BaseOfData; - 64位的
ImageBase、SizeOfStackReserve、SizeOfStackCommit、SizeOfHeapReserve、SizeOfHeapCommit是ULONGLONG,该过程的虚拟内存 来适应上升
确定 PE 文件是32位或64位(方法3)
数据目录
IMAGE_OPTIONAL_HEADER->DataDirectory
这是一个由16 IMAGE_Data_DIRECORIY组成的由16个IMAGE_DATA_DIRECORIY组成的由16个成员组成的结构阵列。
导出表
导出表定义了 PE 文件提供给其他应用程序的功能 。
只有一个IMAGE_EXPORT_DESCRIPTOR。
三个数组

获取基于函数名称的函数地址。
导入表
导入表显示 PE 文件中的应用程序如何使用其他动态链接库函数。
是一个IMAGE_IMPORT_DESCRIPTOR数组。
当打开一个 PE 文件时,操作系统会装入表格中的所有 DLL,并根据 DLL 导出表的导入函数说明修改 IAT 值。
双桥结构
桥1和桥2的设计是为了导致输入函数的“索引-名称”(提示/名称)描述被应用到一个位置。
当将一个 PE 文件放入记忆时, ITAT 的内容将更新为功能 VA, 导致桥2断裂 。
在内存中,
Bridge 1 提供调用功能的名称和索引。
Bridge 2 使您能够在记忆中找到呼叫功能的地址 。
确定一个 PE 文件是否为 siys
检查进口表,看看是否在那里。ntoskrnl.exe、hal.dll、ndis.sys、bootvid.dll、kdcom.dll。
资源表
应用程序经常使用六种资源类型:位图(BITMAP)、CurSOR、图标(ICON)、菜单(MENU)、对话框(DIALOG)和自定义资源。
该表解释了PE.PE文件中资源数据的分布情况。 PE.PE文件的结构与文件管理相似,有一个主要分目录(按资源类型分类)、一个二级分目录(按资源编号分类)和一个三级分目录(按资源代码页分类),这是实际资源数据项目。
以资源表为例,这可能比较抽象:
根目录资源目录根据资源类别将其分为10个资源目录项目和17个资源目录项目。
这个新的资源目录项目1是根据资源代码页分类的,只有一个资源目录项目1可访问,这是下文实际资源数据项目。
因此,PE资源表包括三个数据结构:资源目录页眉、资源目录项目和资源数据项目。
安全表
数字签名的 PE 文件的安全工作表不是 NULL 。
重定位表
PE文件被装入内存时,其基地址是由OptionalHeader->ImageBase决定的。但是如果装入时该位置已被占用,则操作系统会重新选择一个基地址,此时就需要对所有的重定位信息进行修正,修正的依据就是重定位表。
这是一个结构阵列,可与进口表相比。
调试信息表
TLS
节表
各节的表格是PE文件所有各节的目录。
章节表格大小 = 款数IMAGE_FILE_HEADER->NumberOfSections) * 40字节
当将一个 PE 文件装入内存时,它需要的地址空间略多于磁盘上的地址空间,因为这些部分与每页的内存对齐。
FOA可通过RVA获得。
常见的节
- 唯一的可执行部分是.Text, 其中包括 CPU 执行指令 。
- .rdata:只读数据,包括进出口功能信息。一些文件将拥有它们。idata 和..edata 节,以保存进出口信息。
- 数据:这一类别包括世界范围的数据。
- .rrcc:包括不可执行的资源,用于可执行文件,例如图标、照片、菜单项和字符串。

相关新闻
- 2022-01-28 S32DS——PE调试器使用
- 2022-01-28 华硕M2N-MX SE主板如何进入bios设置
- 2022-01-28 华硕B85-A主板如何是通过bios设置u盘
- 2022-01-27 ltraISO 生成u盘启动盘后处理事项
- 2022-01-27 华硕P5QL-CM主板如何通过bios设置u盘
- 2022-01-27 微pe怎么安装原版win11 微pe安装原版
- 2022-01-26 win10 esd系统怎么用pe安装
- 2022-01-26 电脑系统装机教程图解(电脑装机
- 2022-01-25 非mbr怎么激活
- 2022-01-25 eprime安装教程
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
