前一节我们详解了DOS头部,dos头部只有一个字段指向PE头部结构
el_fanew字段找到PE头部
PE头部结构
我们先来看下PE头部的三个结构体
typedef struct _IMAGE_NT_HEADERS {
DWORD Signature; //PE文件头标志 => 4字节
IMAGE_FILE_HEADER FileHeader; //标准PE头 => 20字节
IMAGE_OPTIONAL_HEADER32 OptionalHeader; //扩展PE头 => 32位下224字节(0xE0) 64位下240字节(0xF0)
} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;
前4个字节(04H)为PE标志位,一般为50450000。往后20字节(14H)为PE文件头
其中NumberOfSections为节数目(2字节长度)(0006h-0008h)
我们先来找个这个字段
OD上显示
OD调试器会进行分析
有个很重要的字段
AddressOfEntryPoint
指的是程序的真正入口。
我们可以通过目录来找到每个结构的RAV,并计算所需表的起始地址
PE的头部字段是比较重要的。