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;

 

代码解析

https://www.cnblogs.com/Sna1lGo/p/14444676.html