PE Headers的哪个字段告诉我们是否有效的PE文件?

Usm*_*man 2 .net c++ portability portable-executable

我需要验证给定的二进制文件是否是PE文件(例如,如果我将JS/HTML或.class文件重命名为.exe或.dll),它仍然不是PE文件.解析PE文件会给我关于这个问题的信息; 什么字段表示给定的二进制文件是否是有效的PE文件?

我检查了FileHeader的"e_magic"字段,它总是在错误的PE文件(即js/html/java/class文件重命名为.dll/Exe)的情况下填充,并且没有说明有关的有效性. PE.

GSe*_*erg 6

如果存在这样的字段,则创建无效的exe并且故意将其标记为有效是太容易了.

通过读取PE头并检查所有字段的值来验证文件是否为PE文件(值应属于有效范围,不应指向文件外部等).