我找到了几种定义 PE 位数的方法。
IMAGE_FILE_HEADER包含/ A(你如何选择在这样的地方文章类型?)字段Characteristics,可以用于进行检查IMAGE_FILE_32BIT_MACHINE。IMAGE_OPTIONAL_HEADER包含Magic在IMAGE_NT_OPTIONAL_HDR32_MAGIC、IMAGE_NT_OPTIONAL_HDR64_MAGIC和之间切换的字段IMAGE_ROM_OPTIONAL_HDR_MAGIC。IMAGE_FILE_HEADER还包含可以检查的 Machine 字段- 0x8664 - x64
- 0xaa64 - 64 位模式下的 ARMv8
- 0x0200 - 英特尔安腾处理器家族
0x0284 - 64 位 Alpha AXP。
同样SizeOfOptionalHeader在IMAGE_FILE_HEADER可检查两个特定值之一。
所有这些都具有相同的含义吗?有什么区别,具体情况,特殊情况?
我发现Machine字段检查是间接方式,因为该字段旨在定义处理器架构。因此,它作为启发式方法是间接且不可靠的。
SizeOfOptionalHeader即使对于相同的位数也会有所不同,因为某些图像目录可能不存在。