《逆向工程核心原理》学习笔记4
PE文件学习——PE头总结
1.DOS头
typedef struct _IMAGE_DOS_HEADER //DOS头
{
WORD e_magic; //DOS signature :4D5A ("MZ",是确定的值,
被称为DOS签名,如果值被改变,程序无法运行)
WORD e_cblp;
WORD e_cp;
WORD e_crlc;
WORD e_cparhdr;
WORD e_minalloc;
WORD e_maxalloc;
WORD e_ss;
WORD e_sp;
WORD e_csum;
WORD e_ip;
WORD e_cs;NT
WORD e_lfarlc;
WORD e_ovno;
WORD e_res[4];
WORD e_oemid;
WORD e_oeminfo;
WORD e_res2[10];
WORD e_lfanew; //NT头的偏移,offset to NT header,修改后程序
无法正常运行
} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
2.DOS存根
由代码和数据混合而成,在DOS环境下运行,可以用debug.exe运行(window10下用DOSBOX+debug)。
3.NT头
typedef struct _IMAGE_NT_HEADERS //NT头
{
DWORD Signature; //签名结构体,值为50450000h,即"PE00"
IMAGE_FILE_HEADER FileHeader; //文件头
IMAGE_OPTIONAL_HEADER32