Dryxio/reagent

Reconstruct and validate C/C++ code from compiled programs with AI.

解決的問題

ReAgent 是設計用於自動化從編譯後的二進位檔中重建 C/C++ 函數。它透過使用 AI 代理,根據二進位證據迭代優化實作,彌補原始反組譯輸出(通常難以閱讀)與高品質、可驗證的原始碼之間的差距。

工作原理

此工具與 Ghidra 整合,收集證據——例如反組譯程式碼、組合語言、控制流程圖(CFG)與交叉參考——並輸入 LLM 的流程中。它使用「逆向器」模型產生候選程式碼,並使用獨立的「檢查器」模型進行驗證。

此過程由嚴格的驗證工作流程管理:

  1. 結構驗證:將產生的程式碼與二進位證據進行比對,找出明顯的不一致。
  2. 建置與測試門檻:在隔離的專案副本中執行專案特定的建置與測試命令,確保程式碼確實能編譯並通過測試。
  3. 一致性分析:使用 11 個內建的啟發式信號(例如,檢查遺失原始碼或呼叫次數不匹配)來標記潛在問題。

適用對象

此工具專為需要在專案規模上從二進位檔重建原始碼的逆向工程師與軟體分析師設計,而非在反組譯器中進行單次手動分析。

主要亮點

  • 自主工作流程:在有限迴圈中整合證據收集、實作與審查。
  • 多 LLM 支援:相容 Claude API/CLI、OpenAI 相容 API 與 Codex CLI。
  • 隔離驗證:在暫時專案副本中執行建置與測試命令,避免修改原始原始碼樹。
  • 知識圖譜:產生連接函數、呼叫與全域變數的持久化證據圖。
  • 保守驗證:使用多層方法(檢查器、結構驗證器、建置測試與一致性信號)確保高可信度結果。

相關

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