PE结构-DOS头,本部分为参照吾爱破解论坛lyl610abc师傅PE文件笔记所整理的学习笔记。
DOS部首
DOS部首结构
其结构分为两部分:
- DOS ‘MZ’ HEADER 其在c中定义的结构体为_IMAGE_DOS_HEADER
- DOS sub
DOS MZ头
DOS MZ头在C语言中所定义的结构体为:
定义于winnt.h
1 | typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header |
分析_IMAGE_DOS_HEADER
成员
DOS头的存在,是为了往下兼容在低版本DOS系统上运行,所以该部分主要用于DOS系统
目前在32/64位Windows操作系统中还有效的成员只有两个
- 第一个成员:e_magic (WORD 2字节) 用于识别文件是否为PE格式文件 值固定为4d 5a (MZ)
- 最后一个成员: e_lfanew (LONG 4字节) 存储PE头首地址 位于0x3c位置
DOS部首中的其他值已经在现阶段Windows系统中弃用,下面通过将对应值置换为0,验证其无效性:
利用16进制编辑器打开Everedit.exe程序,将DOS部首除e_magic、e_lfanew
之外的DOS部首成员选中清零
另存为新文件后仍能正常使用,确认DOS部首其他值已在Windows平台弃用。