Suzu macOS Playground

M02 · CTF

分辨架構與找到簽章入口

用解剖器讀出 cpusubtype,正確分辨 arm64 與 arm64e;接著在 LINKEDIT 找到 LC_CODE_SIGNATURE,說出它指向的 SuperBlob 類型與其中的 CodeDirectory slot。

← 先讀 M02 章節

Mach-O 解剖器

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

過關目標

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

提示

卡住時

arm64 與 arm64e 的 cputype 相同;差別在 cpusubtype(ARM64_ALL=0 vs ARM64E=2)與 caps 的 PAC 位元。

走錯方向時

簽章不是 load command 本身的內容,而是 LC_CODE_SIGNATURE 指向 __LINKEDIT 裡的一段 SuperBlob。

想更深入

內建樣本是 ad-hoc 簽章的 arm64(非 arm64e)。CDHash 真算與 CodeDirectory 全解是下一章 M03。

相關指令

otoollipocodesign
← 回 CTF 場