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
还包含可以检查0x8664的计算机字段- x64
0xaa64-64位模式下的ARMv8
0x0200-Intel Itanium处理器家族
0x0284-64位Alpha AXP。
还包括
SizeOfOptionalHeader
IMAGE_FILE_HEADER
可以检查两个特定值之一。它们是否都具有相同的含义?有任何区别,特定条件和例外情况吗?
我发现
Machine
字段检查是间接方式,因为该字段旨在定义处理器体系结构。因此,它是间接的且不可靠,因为启发式操作。即使对于相同的位,
SizeOfOptionalHeader
也有所不同,因为某些图像目录可能不存在。#1 楼
IMAGE_OPTIONAL_HEADER->MAGIC
(一点都不是可选的:])决定了Windows OS加载程序将其加载为32位还是64位。取决于IMAGE_OPTIONAL_HEADER->MAGIC
的值,加载程序将如何解析IMAGE_OPTIONAL_HEADER
的其余部分。 如上所述,可以将
SizeOfOptionalHeader
用作交叉引用。IMAGE_FILE_HEADER-> MAGIC用于确定目标CPU。主要用于确定应如何解释机器代码。
评论
由于Magic已经位于可选标头结构中,因此可能在IMAGE_FILE_HEADER被“映射”为32或64位类型的可选标头结构之后,在内存之前定义了位数。
– SerG
15年2月12日在21:36
评论
有什么原因不能只检查decomp中的64位寄存器吗?我在寻找真理。我需要一种快速可靠的方式来自动处理文件。