PE结构解析

一. DOS头

原来为DOS系统使用,现在只需要记住如下两项。

1、DOC头:						
						
WORD   e_magic                *				"MZ标记" 用于判断是否为可执行文件.		
DWORD  e_lfanew;              *				PE头相对于文件的偏移,用于定位PE文件		
						

 

如上图所示,DOS头一共40H个字节,即64个字节。

结尾处4个字节指向了标准PE头的位置:D8。在这中间的文字是编译器加入的一些描述信息。这些字节是可以修改的。

 

二. NT头

NT头中包括了标准PE头和可选PE头。

struct _IMAGE_NT_HEADERS {
0x00 DWORD Signature;  //E8的位置,也就是DOS头中e_lfanew指向的位置。
0x04 _IMAGE_FILE_HEADER FileHeader;
0x18 _IMAGE_OPTIONAL_HEADER OptionalHeader;
};

 

三. 标准PE头

标准PE头一共20个字节。

						
2、标准PE头:						
						
WORD    Machine;              *        程序运行的CPU型号:0x0 任何处理器/0x14C 386及后续处理器		
WORD    NumberOfSections;     *        文件中存在的节的总数,如果要新增节或者合并节 就要修改这个值.		
DWORD   TimeDateStamp;        *        时间戳:文件的创建时间(和操作系统的创建时间无关),编译器填写的.		
DWORD   PointerToSymbolTable; 						
DWORD   NumberOfSymbols; 						
WORD    SizeOfOptionalHeader; *        可选PE头的大小,32位PE文件默认E0h 64位PE文件默认为F0h  大小可以自定义.		
WORD    Characteristics;      *        每个位有不同的含义,可执行文件值为10F 即0 1 2 3 8位置1 		
						

将可以修改的位置改为F

如果Machine清零会提示版本过低,无法在此电脑上运行。 

NumberOfSections:清零或者改为不正确的值仍然无法运行。

SizeOfOptionalHeader,Characteristics均不可清零。

Characteristics 每个位有不同的含义,可执行文件值为10F 即0 1 2 3 8位置1。

(此表只描述了15位的信息。不确定是否16位全部表示信息。)

 

用鼠标选中的部分就是标准PE头,一共20个字节。打开的这个软件的标准PE头的位置和前一个就不同了,DOS的末尾将指向了100H这个位置。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值