我目前正在製作一個先進的Mach-O可執行反彙編程序,並且對可執行文件頭部的Magic和Cigam部分感到困惑。我瞭解它們是如何工作的以及它們如何確定可執行文件的字節順序,並且如果它的32/64位但是我卡在的一件事是這樣的: 其中十六進制順序表示Magic和Cigam:Mach-O Magic和Cigam澄清
這是共同標題的原始十六進制(直接來自hexdump):
cffaedfe
- 這是一個64位標題,但它是Magic還是Cigam。
我對此感到困惑的原因是因爲所有的順序像cigam需要翻轉每4個字節在相反的方向,我讀的字節在Endianness或不?我看了一下馬赫頭和我發現這個東西:
MH_MAGIC_64 = 0xfeedfacf
MH_CIGAM_64 = 0xcffaedfe(MH_MAGIC交換)
但0xcffaedfe打算從從直接十六進制匹配mach-o文件的意思是它的CIGAM,還是我在Endian中讀取它,並且cffaedfe
變成feedfacf
使它成爲MAGIC?
只是請告訴我:
(直接從文件hexdump都可以)cffaedfe
- 這是魔法或Cigam ????
感謝
如何查看我的機器是使用小端還是大端? – Lucasware
'uint16_t u = 1; printf(「%s endian \ n」,*(uint8_t *)&u?「小」:「大」);' – Siguza