PE文件解析-PE头解析
PE头又叫NT头,是PE文件真正的头部,DOS头只是用来为了兼容以前的DOS系统。
PE头位于DOS Stub后面,以PE00作为起始标记
类似于DOS头的MZ
DOS Stub
DOS Stub就是DOS头结束到PE头的开始中间的区域,基本上是垃圾区域没啥用,但是加壳的时候可以用到。
NT/PE头
typedef struct _IMAGE_NT_HEADERS {
DWORD Signature;//PE标志,就是PE00
IMAGE_FILE_HEADER FileHeader;//文件头,是另一个文件的结构体
IMAGE_OPTIONAL_HEADER32 OptionalHeader;//可选PE头,也叫扩展头
} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;
文件头
typedef struct _IMAGE_FILE_HEADER {
WORD Machine;//程序允许的CPU型号,如果为0表示能在任何CPU上运行,如果是0x14c表示的是386以及后续的型号
WORD NumberOfSections;//文件中存在的区段的数量
DWORD TimeDateStamp;//时间戳
DWORD PointerToSymbolTable;
DWORD NumberOfSymbols;
WORD SizeOfOptionalHeader;//可选PE头的大小32位默认是E0,64位默认是F0
WORD Characteristics;//文件属性,每个位有不同的含义,
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
代码解析