Suzu macOS Playground

M02 · CTF

讀懂 load commands

載入內建 arm64 樣本,用解剖器讀出標頭與 load commands:說出進入點在哪、 哪個 segment 可執行、哪個可寫,並指出兩者為何不重疊(W^X)。

← 先讀 M02 章節

Mach-O 解剖器

模型邊界:本工具真解析 Mach-O 結構(對照本機 otool 驗證), 但不做 CMS 簽章驗證、不算 CodeDirectory CDHash(M03)。上傳的檔案全程留在你的瀏覽器,不會上傳。僅在自有/獲授權的樣本上練習(DESIGN.md §10)。

過關目標

解答是「操作模擬器到對的狀態 + 能說出原理」,非提交 flag 字串。互動式自動評分為 roadmap 項目;目前以自我檢核完成。

提示

卡住時

進入點看 LC_MAIN 的 entryoff;保護權限看每個 LC_SEGMENT_64 的 initprot 欄位。

走錯方向時

__TEXT 是 r-x(可執行不可寫),__DATA_CONST 是 rw-(可寫不可執行)。沒有 segment 同時 w+x。

想更深入

想想:若 __TEXT 可寫,攻擊者就能直接改程式碼頁。W^X 正是要切斷「寫入→執行」這條路。

相關指令

otoolsize
← 回 CTF 場