struct _IMAGE_DOS_HEADER {
0x00 WORD e_magic;
0x02
WORD e_cblp;
0x04
WORD e_cp;
0x06
WORD e_crlc;
0x08
WORD e_cparhdr;
0x0a
WORD e_minalloc;
0x0c
WORD e_maxalloc;
0x0e
WORD e_ss;
0x10
WORD e_sp;
0x12
WORD e_csum;
0x14
WORD e_ip;
0x16
WORD e_cs;
0x18
WORD e_lfarlc;
0x1a
WORD e_ovno;
0x1c
WORD e_res[4];
0x24
WORD e_oemid;
0x26
WORD e_oeminfo;
0x28
WORD e_res2[10];
0x3c DWORD e_lfanew;
};
struct _IMAGE_DOS_HEADER {
只重点关注标红的结构成员:
e_magic 对应0x4D,0x5A word型为0x5A4D 通过判断这两个字节,确定是否为PE格式文件
e_lfanew 里面放的是指向"PE"这个字符串的地址,4字节。
"PE"地址= FileAddress/ImageBase/模块地址/模块句柄+*(e_lfanew)
*代表读出这个成员的4字节数据
/代表或者