跳轉到內容

X86 反彙編/Mac OS X

來自華夏公益教科書,開放的書籍,開放的世界

Mach-O 格式概述

[編輯 | 編輯原始碼]

MacOS(以前稱為 OS X)使用 Mach-O 檔案格式來編碼可執行檔案、目標檔案和共享庫(.dylib 檔案)。在這裡,我們將關注 Mach-O 格式的 64 位版本。Mach-O 檔案中的大部分資料是“段”和“節”,其中段是節的容器,儲存有關每個節的資訊。節本身是資料的容器。Mach-O 檔案有五個主要結構

結構 描述
頭部 包含有關檔案結構的用途和大小的資訊
載入命令 所有段和節的宣告
資料 檔案的實際內容(例如,資料節、文字節)。
符號表 指示每個符號在檔案中的位置
字串表 包含每個符號的名稱

請注意,每個結構都是一個完整的位元組序列,它們之間沒有空隙。

頭部是檔案的第一部分,它包含 8 個無符號 32 位整數

名稱 用途 位元組序 典型值
魔數 檔案的魔數 大端序 64 位架構為 0xFEEDFACF
CPU 型別 可執行檔案的目標 CPU 型別 小端序 x86_64 為 0x01000007
CPU 子型別 使用的特定 CPU 型別 小端序 所有 x64 CPU 為 0x00000003
檔案型別 檔案用途 小端序 目標檔案為 0x00000001,可執行檔案為 0x00000002
載入命令數量 載入命令的數量(不包括節頭部) 小端序 變數
載入命令大小 載入命令佔用的位元組數 小端序 變數
標誌 額外的檔案資訊 小端序 0x00000000
保留 無實際用途 小端序 0x00000000
華夏公益教科書