PE 文件格式被组织为一个线性的数据流。开始的是 MS-DOS 头,然后是实模式的程序根,再就是 PE 文件签名,紧随其后的便是 PE 文件头和可选头。在这之后,出现的是所有的节头,再跟着的就是所有节的节身。文件常以一些其它方面的杂项信息,包括重定位信息、符号表信息、行数信息以及字串表数据等作为结尾。所有这些都可以通过查看图 1 中的图象信息更轻松地被消化吸收。
判断一个文件是否是有效性 PE 文件,主要是判断指定文件是否有:“有效的 DOS 头”和“ PE 文件签名”
具体操作:
1、 把指定文件加载到内存中
2、 获取文件的DOS 头部(IMAGE_DOS_HEADER ), 判断 IMAGE_DOS_HEADER 中的成员变量e_magic 是否等于“ MZ ”,如果是,则说明该文件拥有有效的DOS 头
3、 根据IMAGE_DOS_HEADER 中的成员变量e_lfanew ,获取PE 文件头(IMAGE_NT_HEADERS32 ),判断IMAGE_NT_HEADERS32 中的成员变量Signature 是否等于“ PE00 ”,如果是,则说明该文件是 有效的PE 文件
4、 从内存中删除载入的文件