停止。在呼叫任何端點前,請先完整閱讀本 SKILL.MD。
analyze-elf 是做什麼的?
從已編譯的 ELF 二進位檔中逆向工程萃取功能特徵。這不是一個反組譯工具,而是一個特徵萃取器,回答「這個二進位檔做了什麼?」
使用時機
- 了解編譯型 CLI 工具的功能(Bun SEA、Go、Rust、C/C++)
- 萃取 CLI 指令、旗標與說明文字
- 還原狀態機、協定結構與事件類型
- 映射 JSON-RPC 方法與 Zod 資料模型
- 產出含 Mermaid 圖表的起訴摘要文件
快速入門
# 主要指令 — 萃取特徵,產生摘要
.pi/skills/analyze-elf/run.sh features /path/to/binary --goal "了解任務系統"
# 搭配 /treesitter 進行 AST 分析(較慢,但更深入)
.pi/skills/analyze-elf/run.sh features /path/to/binary --ast --goal "找出所有 RPC 方法"
# 輸出 JSON 格式供程式化使用
.pi/skills/analyze-elf/run.sh features /path/to/binary --output-format json
# 低階 ELF 資訊(標頭、符號表、執行環境檢測)
.pi/skills/analyze-elf/run.sh elf /path/to/binary
# 透過正規表達式萃取字串
.pi/skills/analyze-elf/run.sh strings /path/to/binary --pattern "mission|worker"
指令
| 指令 | 說明 |
|---|---|
features | 主要指令。 萃取特徵 → 產生含 Mermaid 圖表的摘要 |
elf | 低階:標頭、區段、符號表、執行環境檢測 |
strings | 正規表達式過濾的字串萃取 |
features 會萃取哪些內容
| 類別 | 方法 | 範例 |
|---|---|---|
| CLI 指令 | 說明文字模式比對 | exec, daemon, mcp |
| 狀態機 | 列舉賦值模式(M.State="value") | orchestrator_turn, paused |
| 事件類型 | KH.literal("type_name") 模式 | mission_accepted, worker_completed |
| JSON-RPC 方法 | method: KH.literal("name") 模式 | droid.session_notification |
| Zod 結構 | KH.object({...}) 欄位萃取 | Feature, WorkerHandoff, State |
| npm 套件 | 捆綁 package.json 中的 "name": "pkg" | @grpc/grpc-js |
| API 路由 | /api/ 與 /v1/ 路徑字串常量 | /api/auth/login |
| 類別/函數 | 透過 /treesitter 進行 AST 分析(需 --ast 旗標) | MissionRunner, spawnWorker |
組合
/treesitter(AST 分析)
當傳入 --ast 參數時,此技能會:
- 從
.rodata區段中切割出 JS 原始碼字串 - 過濾出包含 JS 特徵的行(函數、類別、import、Zod 模式)
- 將區塊傳送至
/treesitter parse --language javascript進行解析 - 萃取類別、函數與方法簽章
/create-walkthrough(自動產生)
features 指令會產出一份起訴摘要,包含:
- Mermaid CLI 指令樹
- Mermaid 狀態機圖
- Mermaid 事件類型分類圖
- 含欄位型別的結構表
- 風險評估(「可能出錯的地方」)
/create-figure
透過 elf 指令可產生 DOT 格式的相依性與模組圖,
再透過 /create-figure 進行視覺化呈現。
相依套件
pyelftools— 結構化 ELF 解析httpx— /scillm API 呼叫typer— CLI 框架loguru— 日誌記錄- 系統工具:
binutils(readelf, nm, strings)