我目前正在制作一个高级的 Mach-O 可执行反汇编器,并且对可执行标头的 Magic 和 Cigam 部分感到困惑。我了解它们的工作原理以及它们如何确定可执行文件的字节顺序以及是否为 32/64 位,但我坚持的一件事是:哪种十六进制顺序代表 Magic 和 Cigam:
这是通用标头的原始十六进制(直接来自 hexdump):
cffaedfe- 这是一个 64 位标头,但它是 Magic 还是 Cigam。
我对此感到困惑的原因是因为像 cigam 这样的所有排序都需要以相反的方向翻转每 4 个字节,并且我是否以字节序读取字节???我查看了马赫标题,发现了这些东西:
MH_MAGIC_64 = 0xfeedfacf
MH_CIGAM_64 = 0xcffaedfe(MH_MAGIC 已交换)
但 0xcffaedfe 是否意味着从 mach-o 文件中的直接十六进制进行匹配,这意味着它的 CIGAM 或者我以 Endian 读取它并cffaedfe变成feedfacf变得神奇???
请告诉我:
(直接来自文件 hexdump)cffaedfe - 这是 Magic 还是 Cigam???
谢谢