PE结构学习笔记

1.PE文件基本结构(1)DOS头:DOS MZ头,IMAGE_DOS_HEADER结构体DOS块(2)PE文件头PE文件头标志PE文件表头,IMAGE_OPTIONAL_HEADER结构体PE文件可选头,IMAGE_OPTIONAL_HEADER32结构体(3)节表,IMAGE_SECTION_HEADER结构(3)节数据2.PE文件的两种存在形式PE文件在磁盘文件...
摘要由CSDN通过智能技术生成

1.PE文件基本结构

(1)DOS头:

  • DOS MZ头,IMAGE_DOS_HEADER结构体
  • DOS块

(2)PE文件头

  • PE文件头标志
  • PE文件表头,IMAGE_OPTIONAL_HEADER结构体
  • PE文件可选头,IMAGE_OPTIONAL_HEADER32/64结构体

(3)节表,IMAGE_SECTION_HEADER结构
(3)节数据

2.PE文件的两种存在形式

PE文件在磁盘文件中的存储格式和内存中的映像结构不同。

在磁盘文件中存储时,DOS头、PE文件头和节表的长度和在PE文件扩展头中由SizeOfHeaders成员决定,并按照FileAlignment成员规定的文件对齐长度对该段长度即节数据部分各节的长度进行补齐,每个部分长度均为文件对齐长度的整数倍,空白部分由编译器补充空数据或常量字符串。

在内存的映像中PE文件各节的长度由PE文件拓展头中的SectionAlignment成员规定的内存对齐属性所决定,内存对齐的长度和文件对齐长度一般不同

3. DOS头属性

DOS头中包含两部分:DOS MZ文件头(IMAGE_DOS_HEADER结构体),及DOS块。DOS MZ头为一个长度为64字节结构体,DOS块为一些数据。

IMAGE_DOS_HEADER结构体:16位机器所用头,在当前操作系统中不再使用。但该结构体的第一个成员MZ标志(对应PE文件前2个字节,十六进制ASCII码4D5A对应英文字母“MZ”)和最后一个成员PE头地址(对应PE文件第61至第64字节)仍然使用。前者用于标识PE文件,后者用于指定PE头的起始地址。更改这两处数据将造成PE文件无法正常运行。

DOS块为链接器添加的数据,删除或修改后不影响程序正常运行。

3.PE文件头

PE头是一个结构体(IMAGE_NT_HEADERS),包含三个部分:PE标识,标准PE头(IMAGE_FILE_HEADER)和扩展PE头(IMAGE_OPTIONAL_HEADER32/64)。后两者都是其中的子结构体。

3.1 PE标识

PE标识本身并无作用,但操作系统在执行PE文件时验证PE标识是否正确,若改变则程序无法运行。PE标识占2个字节,十六进制ASCII码5045对应英文字母"PE"。

3.2 标准PE头

标准PE头的内容为结构体IMAGE_FILE_HEADER,长度为20字节。具体属性如下。

typedef struct _IMAGE_FILE_HEADER {
   
 WORD Machine;			//可以运行在什么样的CPU上。任意: 0 ;Intel 3861以及后续: 14C ;x64: 8664
 WORD NumberOfSections;		//表示节的数量
 DWORD TimeDateStamp;		//编译器填写的时间戳,从1970年1月1日0时0分0秒至今经过的秒数,与文件属性(创建时间、修改时间)无关
 DWORD PointerToSymbolTable;	//调试相关
 DWORD NumberOfSymbols;		//调试相关
 WORD SizeOfOptionalHeader; 	//扩展PE头的大小(32位PE文件: 0xE0 64位PE文件: 0xF0)
 WORD Characteristics;		//文件属性
} IMAGE_ FILE_ _HEADER, *PIMAGE_ FILE_ HEADER;

PS:计算机中数据存储系统:

二进制数字(binary digit):二进制计数系统中的一个数字,可以是01
位(bit):二进制数字的简称
字节(byte):8个二进制数据,即 1 byte=8 bit
字(word):一个或多个字节。当前windows系统中一个word的长度定义为2byte&#x
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值