PE文件结构(一)PE头
12/100
发布文章
qq_63329753
未选择任何文件
new
PE文件结构
PE(Portble Executable File Format,可移植的执行体文件格式) 文件是Windows操作系统下使用的可执行文件格式,使用该格式的目标是使链接生成的EXE文件能在不同的CPU工作指令下工作。
PE文件种类:(种类:主拓展名)
- 可执行系列:EXE,SCR;
- 驱动程序系列:SYS,VXD;
- 库系列:DLL,OCX,CPL,DRV;
- 对象文件系列:OBJ;
PE文件头部:
- DOS头(MZ头)
- DOS stub(DOS存根)
- PE头 (IMAGE_NT_HEADERS)
- 节表(多个IMAGE_SECTION_HEADER结构)
PE文件身体:
- 节内容
具体解析:
一、DOS头;
一个64字节的结构体:
2个重要成员:
e_magic:DOS签名(4D5A,MZ)
**PE_start=DOS MZ基地址+IMAGE DOS_HEADER.e_lfanew **
e_lfanew:指向PE头的偏移地址
例子:
二、DOS stub;
一个字节块,大小不定(缺少文件也可运行)
例子:
三、PE头;
PE头IMAGE_NT_HEADERS(三部分):
-
PE头标识 Signature:PE\0\0,占四字节
#0120地址与e_lfanew一致
-
标准PE头,IMAGE_FILE_HEADER,标准通用对象文件格式(Common Object File Format,COFF)头:记录了PE文件的全局属性,20字节。
#1.每个CPU都拥有唯一的Machine码
#2.Characteristics,每位有特定属性
-
拓展PE头IMAGE_OPTIONAL_HEADER32,大小由标准PE头.SizeofOptionalHeader指定
#1.Magic:32位时,值为10B,64位为20B
一个重要字段DateDirectory:
总的数据目录一共16个相同的结构体排在一起:
例子:
#Magic 020B,64位
#大小为 00F0(15行,每行16字节)
四、节表;
**IMAGE_NT_HEADERS后紧跟着节表,由许多个节表项组成,每个对应一个节区,数量在IMAGE_FILE_HEADER.NumberOfSections中。
每个节表40字节。
项组成,每个对应一个节区,数量在IMAGE_FILE_HEADER.NumberOfSections中。
每个节表40字节。
[外链图片转存中…(img-y0OljAOB-1644736362110)]
例子:
本例8个节区,均以2E开头(未找到硬性规定,应该是约定俗成),40字节。