Dryxio/auto-re-agent

Open-source AI reverse-engineering agent using Ghidra and LLMs to reconstruct and validate C/C++ functions from binaries.

解決的問題

auto-re-agent 自動化將編譯後的二進位檔逆向工程為可重構 C/C++ 源碼的繁瑣過程。雖然傳統反編譯器提供偽碼,但此工具旨在生成可編譯、可測試且可整合至專案原始碼樹的有效候選實作。

工作原理

該工具協調一個結合程式分析與 LLM 驅動重構的自主流程:

  1. 證據收集:使用 ghidra-ai-bridge 從 Ghidra 提取反編譯結果、組合語言、控制流圖(CFG)、P-程式碼以及結構化資料(結構體、列舉、虛函數表)。
  2. 逆向/檢查循環:一個「逆向」LLM 生成候選實作,隨後由獨立的「檢查」LLM 進行審查。此循環持續進行,直到程式碼被接受或達到上限為止。
  3. 保守性驗證:該代理使用結構驗證器查找生成程式碼與二進位證據之間的不匹配,並執行 11 個內建啟發式一致性信號,以標記遺漏來源或呼叫次數不一致等問題。
  4. 驗證門控:可自動在暫時專案副本中執行專案特定的建置與測試命令(例如透過 CMake 和 CTest),以確保生成的程式碼確實能建置並通過測試。

適用對象

需要大規模重構高品質 C/C++ 函數的軟體逆向工程師與開發人員,適用於遺留二進位檔或封閉原始碼專案。

主要亮點

  • 多 LLM 支援:相容 Claude(API/CLI)、OpenAI 相容 API 以及 Codex CLI。
  • 自主工作流程:無需持續人工干預,即可處理函數選擇、證據收集與迭代優化。
  • 建置驗證:與實際建置系統整合,確保候選程式碼不僅語法正確,且功能上可行。
  • 知識圖譜:維護一個持久的 knowledge-graph.json,連結函數、呼叫與全域變數,為 LLM 提供上下文。
  • 非破壞性:在覆蓋層與暫時目錄中生成候選程式碼,而非直接修改原始原始碼樹。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案