.net - PE Headers 的哪个字段表明 PE 文件是否有效?

标签 .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的有效性。

最佳答案

如果存在这样的字段,则很容易创建无效的 exe 并故意将其标记为有效。

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

关于.net - PE Headers 的哪个字段表明 PE 文件是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3245914/

相关文章:

c# - 从 Uri 获取单个查询参数

c# - 如何以编程方式从 web.config 的属性 "maxAllowedContentLength"中获取值?

C++:制作不包含的单个文件

c++ - 理解算法的复杂性

c - 索拉里斯 10 : handle gracefully ENOBUFS error when changing socket buffer

c# - 为什么我们需要连接字符串?

.net - c# 检查列表框 MouseMove 与 MouseHover 事件处理程序

c++ - 这种计算大数的方法是如何工作的?

c - 如何打印大小未知的类型,如 ino_t?

C#/Java 可移植性