最近我偶然发现了一个奇怪的现象。
我正在为 PE 文件构建一个转储程序,很好地阅读了节标题和“可选”节标题。现在,当我到达“主要操作系统”和“次要操作系统”字段时,我注意到一个奇怪的值。
[WORD] OS VERSION major :0x00000006
[WORD] OS VERSION minor :0x00000000
显然这意味着 Windows Vista...
这里:https://learn.microsoft.com/de-de/windows/win32/sysinfo/operating-system-version?redirectedfrom=MSDN
我编写了一个简单的 hello-world 32 位可执行文件,并使用 7zip.exe 进行了测试(由于某种原因,它是 4.0 [==Win98])。
现在我很困惑......我新编写的PE文件(Visual Studio 2019)怎么可能不是操作系统版本10??? 微软是否可能因为懒惰而没有正确更新他们的链接器???
在该页面上它说了一些关于 list 文件的内容,但只是说如果你没有 list 你的可执行文件它会告诉你Windows 8.0(但是我应该这样做,对于这个问题来说并不重要) .
问题:有没有办法从二进制文件中读取正确的操作系统版本?
最佳答案
事实证明,这个数字更像是一个 “所需的最低操作系统”,
这可以解释为什么它是 Windows Vista。
关于windows - PE 文件中的 OSMajor 和 OSMinor 版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59429670/