字节存放顺序是小尾存储,高位保存高字节、低位保存低字节,因此是两位两位倒着读
1、DOS头:包括MZ头和DOS存根,指向DOS可执行程序部分
(1)MZ头:长度 40H,即4行乘16位,
e_magic:最前面的2个字节5A4D,MZ标识位,是EXE标识
el_fanew:最后的4个字节000000F0,指向PE文件头地址,即PE文件头在000000F0处
(2)DOS存根:又称DosStub,从MZ头到PE头之间的部分,显示提示字符,DOS存根大小不固定
2、PE头:保存着Windows系统加载可执行文件的重要信息,位置由el_fanew给出
(1)PE标识:前4个字节00004550为PE标志位
(2)PE文件头:PE标识往后20字节,PE文件头前2个字节014C是设备型号,之后2个字节0003是是节表数目,表示有3个节表
(3)PE可选文件头:PE文件头往后224字节
3、节表:每个节表40字节,节表数目在PE文件头中查看,总共是节表数目×40字节。节表中描述了各个节在整个文件中的位置与加载入内存后的位置,也定义了节的属性(只读、可读写、可执行等)
4、节表数据:保存可执行文件中真正的程序代码