Binary Ninja 逆向工程 是做什麼的?
在使用者明確選擇 Binary Ninja、其中間語言 (IL) 能有效協助資料流分析,或當 IDA/Ghidra/radare2 的結果需要獨立交叉驗證時,請使用 Binary Ninja。
安全啟動
- 確認儲存庫案例範圍已準備就緒,再對目標進行操作。
- 檢查
skills/tool-index.md中是否有binaryninja;Binary Ninja 是商業軟體,必須手動安裝並持有有效的 Vector 35 授權。 - 在套用修補或儲存資料庫變更時,請使用副本進行操作。
- 在提出發現結果前,記錄匯入/匯出、進入點、架構及檔案雜湊值。
選擇整合方式
- GUI 或 Python API: 當 Binary Ninja 已經開啟或使用者希望直接進行互動式分析時,優先使用此方式。
- 社群 MCP 橋接器: 僅在使用者明確要求,且已審查第三方外掛邊界時使用。將 Binary Ninja HTTP 監聽器保留在
127.0.0.1:9009;預設不啟用網路暴露。 - 備用方案: 當 Binary Ninja 無法使用,或其授權/API 無法開啟目標時,使用
ghidra-reverse、ida-reverse或radare2。
已審查的社群整合方案為 fosdickio/binary_ninja_mcp,採用 GPL-3.0 授權,外掛中繼資料版本 1.1.0,最低 Binary Ninja 版本 4000。該儲存庫並非 Vector 35 官方元件。此技能已針對 2026-09-03 的提交 8c5134ee46e2bf44f9a4d846bd971c3e39b3e306 進行檢查。
請透過 Binary Ninja 的外掛管理員或從已審查的來源安裝 Binary Ninja 端。對於 MCP stdio 橋接器,請固定橋接器發行版本,而非使用無範圍限制的套件:
npx -y [email protected] --host 127.0.0.1 --port 9009
僅在使用者選定的 MCP 用戶端中註冊該命令。在 Binary Ninja 執行中、二進位檔已開啟,且 localhost 外掛端點回應之前,橋接器尚未就緒。
分析工作流程
- 列舉已開啟的二進位檔,並選取目標檢視。
- 擷取二進位狀態、進入點、區段、匯入、匯出與代表性字串。
- 在解讀單一函式之前,先追蹤呼叫點與交叉引用。
- 使用 HLIL 處理可讀邏輯、MLIL SSA 處理資料流,當提升過程遺失指令層級行為時,使用 LLIL/反組譯。
- 逐步套用名稱、註解與型別;保留原始位址作為證據。
- 將位元組修補、原型變更及儲存檔案寫入視為變異操作。僅在使用者要求時執行,並保留原始構件。
- 對於高影響力的結論,請與第二個證據來源或另一個反組譯器進行交叉驗證。
有用的 MCP 能力群組包括:二進位/檢視選取、list_imports、list_exports、list_strings、decompile_function、get_il、呼叫者/被呼叫者、交叉引用、型別、註解、重新命名及位元組修補。請探索實際的工具清單,而非假設每個上游函式都存在。
輸出
報告具體位址、函式名稱、IL 層級、支援性字串/匯入、信心水準及重現步驟。保持儲存庫中使用的「證據 → 發現 → 路徑」鏈結。