逆向整理-PE

PE相关

PE文件格式

PE文件是windows下的32位可执行文件格式,64位称为PE+或PE32+

文件中使用偏移(offset)内存中使用VA(Virtual Address)来表示位置,VA指的是进程虚拟内存中的绝对地址,RVA(Relative Virtual Address)指从某个基准位置(ImageBase)开始的相对地址,RVA+ImageBase=VA

PE头

在PE头的最前面有IMAGE_DOS_HEADER结构体,即DOS头,大小为64字节,比较重要的成员是e_magic(DOS签名,4D5A=>ASCII值"MZ",位于结构体的第一个),e_lfanew (指示NT头的偏移【根据不同文件拥有可变值】),使用winhex打开windows自带的notepad文件,结构体情况如下(用notepad.exe文件演示)

在这里插入图片描述

文件开始的2个字节为4D5A,e_lfanew值为0000000E(Intel系列的CPU以逆序存储数据,称为小端序标识法)

DOS存根在DOS头下方,目的是让程序可以在DOS环境中运行
在这里插入图片描述

NT头

NT头IMAGE_NT_HEADERS由三个成员组成,大小为F8

第一个成员:签名(Signature)结构体

Signature从0xE0开始
在这里插入图片描述

第二个成员:文件头(File Header)

File Header为表现文件大致属性的文件头,IMAGE_FILE_HEADER结构体,重要成员:

1、Machine:标识兼容的CPU,本程序中值为0x014C,兼容Intel386

2、NumberOfSection:用于指出文件中存在的节区数量,该值一定要大于0,且当定于的节区数量与实际节区不同时,将发生运行错误,本程序中值为0x0003

3、SizeOfOptionalHeader:用于指出最后一个NT头成员的大小,本程序中值为0x00E0

4、Characteristics:用于标识文件的属性,文件是否是可运行的形态,是否为DLL文件等信息,本程序中值为0x010F
在这里插入图片描述

第三个成员:可选头(Optional Header)

Optional Header为IMAGE_OPTIONAL_HEADER32结构体,重要成员:

1、Magic:Magic码为0x10B时,为IMAGE_OPTIONAL_HEADER32结构体,Magic码为0x20B时,为IMAGE_OPTIONAL_HEADER64结构体

2、AddressOfEntryPoint:持有EP的RVA值,指出程序最先执行的代码起始地址

3、ImageBase:指出文件的优先装入地址,一般情况下EXE文件的ImageBase值为0x00400000,DLL文件为0x10000000,执行PE文件时,PE装载器先创建进程,再将文件载入内存,然后把EIP寄存器的值设置为ImageBase+AddressOfEntryPoint

4、SectionAlignment, FileAlignment:FileAlignment指定了节区在磁盘文件中的最小单位&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值