更新的演示即將推出!
逆向工程助理 (ReVA) 是一個為逆向工程任務建構與反彙編程式無關的 AI 助理的專案。這包括離線和線上推理以及簡單的架構。
ReVa 與其他為 RE 任務建立 AI 助理的努力不同,因為它使用工具驅動的方法。 ReVa旨在為LLM提供各種小工具,就像您的RE環境為您提供了一套小工具一樣。 ReVa 將此方法與推理鏈技術結合,使法學碩士能夠完成複雜的任務。
提供給法學碩士的每個工具都旨在易於法學碩士使用並容忍各種輸入並減少法學碩士的幻覺。我們透過為法學碩士提供模式但容忍其他輸入來做到這一點,包括指導法學碩士的描述,並將可糾正的錯誤重定向回法學碩士,並包括額外的輸出以指導法學碩士的下一個決策。
例如,當 LLM 要求從您的 RE 工具進行反編譯時,我們將接受十六進位的原始位址、基數為 10 的原始位址、帶有命名空間的符號名稱或符號。如果法學碩士給我們提供了錯誤的輸入,我們會將其報告給法學碩士,並附上糾正輸入的說明(例如,可能鼓勵它使用函數列表)。為了鼓勵像人類一樣探索,我們報告了額外的上下文,例如命名空間和交叉引用以及反編譯,這是使法學碩士以與人類相同的方式探索二進製文件的一個小推動。
使用這種技術,您可以提出一般性問題並獲得相關答案。該模型優先考慮來自工具的信息,但當沒有信息時,它仍然可以回答訓練中的一般問題。
您可以提出以下問題:
__mod_init
段的用途。mmap
返回什麼?逆向工程的一個重要組成部分是製程。許多其他工具只是詢問法學碩士的一個問題,這意味著很難確定事情發生的原因。在 ReVa 中,我們將所有行動分解為小部分,並在輸出中包含法學碩士的想法。這允許分析師監控法學碩士的行動和推理,如果需要的話可以中止和更改提示。
RevA基於langchain,支援多種模型。
提供內建支援:
有關提供程序設定的更多信息,請參閱配置。
如果 langchain 支持,添加額外的推理伺服器很容易。
ReVa 的配置位於 CodeBrowser 工具選項中。開啟程式並前往編輯 -> 工具選項 -> ReVa。
有以下選項:
有針對提供者的部分。
預設情況下,OpenAI 金鑰是從環境變數OPENAI_API_KEY
載入的。您也可以在 Ghidra 中設定金鑰。將金鑰設定回OPENAI_API_KEY
值將從 Ghidra 配置中清除金鑰並從環境中載入它。
您也可以選擇型號。預設選擇gpt-4o
。此模型與 ReVa 提供的工具和提示配合使用效果最佳。
gpt-4
也能很好地工作,但速度很慢,並且需要用戶更多提示才能探索二進位檔案。
Ollama 是本地推理伺服器。預設伺服器設定為 localhost,使用預設 Ollama 連接埠。如果您想在遠端電腦上執行推理,可以將其變更為遠端伺服器。這對於自行託管的組織很有用。
您也可以選擇型號。該模型必須已載入到伺服器上。良好的性能表現如下:
mixtral
llama3
phi
RevA 有一個兩步驟工作流程。
ReVa 使用 RE 工具的擴充來執行分析。請參閱下面的 Ghidra 支援。
為了提出問題並運行推理,提供了命令列工具。運行reva-chat
以開始聊天會話。此命令將找到您打開的 Ghidra 並連接到它。若要開啟新的聊天,請在另一個終端機中再次執行該命令。
如果您開啟了多個 Ghidra,您可以使用reva-chat --project ${project-name}
選擇正確的一個,如果未設置, reva-chat
會詢問您要連接到哪個項目。
為了在reva-server
和擴充之間進行通信,使用了 gRPC。您可以閱讀更多相關資訊(此處)[./DEVELOPER.md]。從這些協定定義建置原始檔是由 Makefile 驅動的。要建立協議原始碼文件,請在專案的根目錄中執行以下命令:
make protocol
首先安裝python元件,我喜歡使用pipx
。使用如下命令安裝它:
pip install pipx
在reverse-engineering-assistant
資料夾中,執行:
pipx install .
安裝 python 專案後,pipx 可能會警告您需要將資料夾新增至 PATH 環境變數。確保該資料夾(現在包含reva-server
和reva-chat
)位於您的 PATH 變數中。 pipx 可以使用以下命令為您完成此操作:
pipx ensurepath
該擴充功能需要啟動reva-server
,並且您需要執行reva-chat
。如果您不想將它們新增至 PATH,請參閱設定部分以了解如何設定執行檔的路徑。
一旦擴充功能啟動了reva-server
,就可以開始聊天了:
reva-chat
必須安裝 Python 套件才能使 Ghidra 擴充功能正常運作!
請按照 ghidra-assistant 插件中的說明進行操作。
安裝後,在 CodeBrowser 工具中啟用ReVa Plugin
擴充功能(開啟檔案並點擊:檔案 -> 設定 -> 其他)。
如果您希望預設啟用 ReVa,請按一下檔案 -> 儲存工具來儲存設定。
如果一切正常,您將在功能表列上看到 ReVa 選單。
您可以在Edit -> Tool Options -> ReVa
中修改外掛程式配置。
每當 ReVa 執行一個操作時,它都會為每個操作建立一個撤銷點。如果 ReVa 重新命名 5 個變量,這將是一次撤銷。
ReVa 在 CodeBrowser 工具的視窗選單中新增了選項。選擇視窗 -> ReVa 操作日誌以開啟 ReVa 操作日誌視窗。
此視窗顯示 ReVa 已執行且想要執行的操作。您可以透過雙擊 ✅ 或 圖示來接受或拒絕變更。您也可以透過雙擊位址轉到將執行操作的位置。
如果您拒絕某項操作,ReVa 將會收到通知,然後她會繼續前進。
您也可以在 ReVa 選項中啟用「自動允許」。這將自動接受 ReVa 想要執行的所有操作。
ReVa 也為 Ghidra UI 增加了一些元素。您可以要求 ReVa 在聊天視窗中執行某些操作,“詳細檢查main
中的變數用法,使用更具描述性的名稱重命名變數。”,或使用選單系統。
例如,您可以右鍵單擊反編譯中的變量,選擇Reva -> 重新命名變量,ReVa 將執行該操作。
你喜歡我的工作嗎?想要支持這個專案和其他專案嗎?對這個項目的設計和建造有興趣嗎?這個項目和許多其他項目都是在我的直播中構建的:https://twitch.tv/cyberkaida!