PE文件头在DOS Sub后面,起始标记为PE自缚,由MS-DOS的e-lfanew字段指向。
PE文件头的结构体。
typedef struct _IMAGE_NT_HEADERS
{
DWORD Signature;
IMAGE_FILE_HEADER FileHeader;
IMAGE_POTIONAL_HEADER32 OptionalHeader;
}IMAGE_NT_HEADERS32,*PUMAGE_NT_HEADERS32;
这里的每一个结构体成员都很重要。
当然需要找到pe文件头只需要 NT_Header=ImageBase+DOS_Header->e_lfanew;
结构体第一个成员是PE文件头的标识,值始终都是0x50450000,ASCII码值是"PE/0/0",宏定义是IMAGE_NT_SIGNATURE。