RENA 讓開發者能用 Agent 逆向分析任何應用,從行為到原生二進位制
Reverse engineer anything with agents, from app behavior down to native binaries
RENA 是一個開源工具,能讓開發者在本機無需原始碼即時逆向分析多種應用,並透過 MCP 連線 Agent 產生可直接使用的功能版本。
- 支援範圍:原生二進位制、JavaScript/Electron、.NET 程式、網站、WASM、EVM、Android APK、Flutter、韌體等。
RENA 讓開發者可在本機無需原始碼即時逆向分析多種應用,輕鬆重建功能;支援多平臺工具,並以 MCP 連線 Agent 進行自動化調查。
在某個應用程式中看到想在自己產品中使用的功能嗎?請讓你的代理使用 REA 進行調查。它可以在不檢視原始碼的情況下檢查該應用程式,說明功能運作方式,展示證據,並為你的專案構建一個版本。
REA 讓你的代理連線到用於檢查本機二進位檔、JavaScript 與 Electron 應用程式、.NET 程式集以及網站的工具。你也可以在終端機中使用相同的工具。分析在本機執行,結果包含每項結論背後的證據與限制。
Setup 會將 REA 註冊到你的代理並安裝相應的工作流程說明。原生分析可使用現有的 Hopper、Ghidra 或 IDA 安裝;Setup 也可在取得授權後選擇安裝 Hopper。靜態 JavaScript 分析不需要原生分析引擎。
前往 REA 網站 檢視安裝說明、圖解指南與實際案例研究。
快速開始
設定你的代理
在安裝 Node.js 與 npm 後,執行:
npx rea-agents setup
選擇你的代理,審核建議的變更,並批准。Setup 會加入 REA 的 MCP 伺服器及相應的工作流程說明,並備份現有設定。之後重新啟動你的代理。
Setup 支援 Claude Code、Codex、Cursor、Gemini CLI、Grok Build 以及 其他代理。請參閱 安裝與設定以瞭解供應商設定與手動 MCP 註冊。
請你的代理
Understand how search works in the Notes app, show me the evidence, and build a
similar feature for my project.
將 Notes 替換為你想要瞭解的目標應用程式及其功能。
使用終端機
檢查已解壓的 JavaScript/Electron 應用程式目錄或 ASAR:
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
結果包含模組、匯入、Electron 邊界及其證據。
將路徑替換為你的目標,例如 Windows 上的 "D:/apps/example"。
為了常規使用安裝 rea 命令:
npm install --global rea-agents rea --help
先為原生分析設定供應商。參閱 CLI 與證據指南瞭解原生命令、供應商選擇、 快照與指令碼。
更新 REA
REA 變更頻繁,新版本包含大量錯誤修正。保持你的 安裝為最新。
若使用 npm install --global 或 bun add --global 安裝的 CLI:
rea update
Bun 的全域更新需要 Bun 1.2.17 或更新版本。若使用較舊的 Bun 版本,
請先手動升級 Bun,再執行 rea update。
為了重新整理你的代理註冊與技能,執行更新所列印的設定指令。
若你使用 npx,請使用以下方式更新你的代理設定:
npx rea-agents@latest setup
檢閱設定變更並重新啟動您的代理。對於一次性的 CLI 指令,
請使用 npx rea-agents@latest 後接指令。使用 Bun 時,
請用 bunx rea-agents@latest 取代 npx rea-agents@latest。
REA 的工作原理
您的代理通過 MCP 呼叫 REA 以檢查目標並追蹤相關程式碼。 REA 回傳發現及其證據。代理將使用這些資訊來詢問後續 問題、解釋行為,或編寫並測試實作。 CLI 指令使用相同的工作流程。
您可以分析的專案
REA 需要 Node.js 22.x (>=22.19)、24.x (>=24.11) 或 26+,以及 npm。 額外工具與主機支援取決於目標:
| 目標 | REA 回傳的內容 | 需求與指南 |
|---|---|---|
| 原生二進位檔 | 偽程式碼、組譯碼、字串、符號、呼叫與參照 | Hopper、Ghidra 或 IDA;原生分析 |
| 離線 ELF 佈局 | 節段、段、原始符號/重定位與靜態緩解候選項 | 呼叫方提供的 pwntools 在 Linux x64;二進位診斷 |
| Go 二進位檔 | 嵌入式編譯器版本、模組、替代方案與建置設定 | 內建靜態 ELF/PE/薄型 Mach-O 檢查;不需要安裝 Go |
| WASM 工件 | 驗證、節段、精確的匯入/匯出 WAT 形式與解碼後的 WAT | 呼叫方提供的 WABT 1.0.42; inspect_wasm_artifact |
| EVM 位元組碼 | 派遣選擇器、位元偏移、推論引數與可變性 | 本機原始/十六進位載體在 Linux x64;離線 EVM 指南 |
| 已記錄的 Linux 崩潰 | 原始筆記,每個已記錄執行緒的暫存器/訊號以及可選對映候選者 | 呼叫方提供的 pwntools 在 Linux x64;可選的 GDB/pwndbg;已記錄的崩潰 |
| JavaScript / Electron | 模組、匯入、原始碼對映、路由、IPC 與原生外掛關係 | Node.js 與 npm;應用程式分析 |
| 網站 | 頁面結構、指令碼、網路觀測與所請求的截圖 | Chrome 系列瀏覽器;瀏覽器分析 |
| 已儲存的網路擷取 | 請求、回應、暴露的有效載荷與來源位置 | HAR;Linux 上的 mitmdump 用於本機 mitmproxy 擷取;擷取指南 |
| .NET 程式集 | 元資料、CIL 指令、宣告的原生相依性與建置比較 | 無 (僅靜態);managed-code 指南 |
| Android APK | Manifest 宣告、類別、反編譯方法與參考 | Headless JADX 及完整 JDK 在 Linux/macOS/Windows x64;Android 指南 |
| Android 裝置 | 裝置、套件、程序、日誌、轉儲、螢幕擷取與 APK/檔案傳輸 | 呼叫方提供的 adb(模擬器或硬體);ADB 指南 |
| JEB 專案 | 引擎支援的專案單元、產物摘要與型別/方法偽程式碼 | 呼叫方啟動的 JEB 客戶端提供 MCP,使用 REA_JEB_MCP_URL 選取;JEB 指南 |
| Android 資源 | 解碼的 manifest、字串表、語言區域與版本資訊 | 呼叫方提供的 Apktool 啟動器;資源指南 |
| Flutter 應用程式 | Dart 快照雜湊、每個 ABI 的函式庫摘要與引擎建置來源 | 無 (靜態 APK 解析);Flutter 指南 |
| 韌體 | 區域、擷取結果與原生分析交接 | Binwalk / Unblob 在 Linux;韌體指南 |
| 套件與資源 | 檔案清單、摘要、plist、Apple bundle 結構與擷取資源 | Artifact 與 JavaScript 指南, Apple 應用程式 |
| 程序行為 | 終端機輸出、互動、退出與檔案系統觀測,以及執行比較 | Linux/macOS 搭配本機 PTY;程序擷取 |
靜態 JavaScript 與 .NET 檢查會閱讀所提供的檔案而不執行應用程式。執行時擷取會以您的使用者許可權執行或互動於選定目標;每個執行時指南皆說明其效應。
原生格式與主機支援因供應商而異。參見
Hopper 與 Ghidra 設定、
IDA 指南,以及
Windows Ghidra 實驗支援。
Ghidra 亦支援 16 位元 DOS 分析。
對於大型二進位檔,請使用 REA_GHIDRA_STARTUP_TIMEOUT_MS 或 REA_HOPPER_STARTUP_TIMEOUT_MS 提升供應商的啟動截止時間。
供應商選擇請參見 CLI 指南。
檢查 發行版本可用性 以確認自最新 npm 發行以來新增的功能。
展示
DX-Ball:重建聲音平移計算
追蹤一個聲音呼叫至其位置至平移輔助函式,檢查指令,並將不完整偽程式碼轉換為 C。重建成功 3,205 個原始 x86 範例,並重現所有 63 個已編譯函式位元組。
Notion:追蹤 Electron 剪貼簿橋接
尋找渲染器的剪貼簿 API,追蹤其經過 preload 與 IPC 進入主程序,並檢查豐富剪貼簿格式。
TH04:恢復 DOS 子彈環計算
檢查原始 PC-98 遊戲的 16 位元指令,恢復已修正與目標角度的計算,並將重建的 C++ 與歷史編譯器輸出進行比較。
如果你在某個有趣的專案上使用了 REA,我們很樂意看到。將你的案例分享在一個issue或一個pull request,包含目標、你的問題、REA 如何協助,以及你發現了什麼。
常見問題
哪些代理可以使用 REA?
任何支援本機 MCP 伺服器的代理。設定會配置支援的代理;其他客戶端可以使用手動 MCP 註冊。
我需要 Hopper、Ghidra 或 IDA 嗎?
深入的原生分析使用其中之一。靜態 JavaScript 與 .NET 檢查可以在沒有原生分析引擎的情況下工作。設定可以在批准後安裝 Hopper;Ghidra 與 IDA 使用你現有的安裝。請參閱 供應商設定。
我需要先啟動 Hopper 嗎?
REA 在操作需要時會啟動 Hopper。在 macOS 上,首次執行對話方塊可能會要求你選擇演示模式或啟用你的授權。請在同一使用者會話中完成該提示,先於第一次 CLI/MCP 操作或無人值守工作。必要時可手動開啟 Hopper。請參閱 Hopper 啟動與故障排除。
從 skills.sh 安裝技能會做什麼?
該技能為你的代理提供調查指令。使用 npx rea-agents setup 來註冊 REA 的 MCP 伺服器並安裝相應的指令,然後重新啟動你的代理。請參閱 僅安裝技能。
REA 回傳什麼程式碼?
原生分析回傳偽程式碼與組譯碼。JavaScript/Electron 分析回復模組及其關係。你的代理使用這些發現來編寫並測試實作;範例展示提供實作範例。
REA 會上傳我的應用程式嗎?
REA 會在本機分析目標。你的代理會收到工具結果,其模型供應商有自己的資料政策。
如果我遇到錯誤該怎麼辦?
先更新;最近的發行版本可能已修復此問題。
對於使用 npm install --global 或 bun add --global 安裝的 CLI:
rea update
通過 npx 進行代理設定:
npx rea-agents@latest setup
如果你正在使用代理,完成 設定重新整理 並重新啟動它。重試相同任務。如果問題仍然存在,開啟一個 issue,並提供你的 REA 版本、目標型別、重現步驟及錯誤輸出。
檔案
先從網站的 實作範例 開始。 欲瞭解精確選項、先決條件與結果合約:
- 安裝與設定:代理註冊、供應商配置、更新與解除安裝。
- 就緒與故障排除:診斷單一代理或分析引擎。
- CLI 與證據:命令、供應商選擇、快照、匯入/匯出與退出狀態。
- MCP 合約 與 代理提示:工具結果、會話與引導調查。
- 工具目錄:生成的工具、供應商與 CLI 命令清單。
- 路線圖:計畫工作與功能追蹤。
透過 SECURITY.md 報告漏洞。
星號歷史
🎉 110,000 GitHub 星號 — 謝謝!
感謝所有使用 REA、報告錯誤、提出功能需求、測試版本及貢獻修復的人。
免責宣告
請參閱 DISCLAIMER.md 以取得負責任使用指引。
本專案對於非法或未授權使用的立場涵蓋所有 REA 版本、發行管道與平臺;每份副本仍保有其適用授權。
REA 供合法研究、教育、互通、軟體儲存,以及對您擁有或已獲授權檢查之軟體進行分析。
貢獻
我們很樂意得到您對 REA 的協助!開啟議題以報告錯誤或建議功能,或 送出 Pull Request 以改程序式碼或檔案。
參見 CONTRIBUTING.md 以瞭解開發環境設定與檢查,testing 以瞭解驗證流程,及 architecture map 以瞭解專案結構。
授權
REA 所撰寫之程式碼採用 MIT 授權。第三方素材保留其自身授權與版權宣告;請參閱 Third-party notices 以取得相依套件清單、保留授權文本與外部工具條款。
您必須合法取得並獲得授權才能使用商業工具,包括 IDA Pro / Hex-Rays 反編譯器、Hopper 與 JEB,且須遵守其適用授權。 REA 不授予任何工具授權、金鑰或啟用權。試用與示範仍受供應商條款限制,包括使用者、功能、自動化與輸出分享限制。 破解副本、盜用金鑰、未授權金鑰分享與繞過授權限制均不被授權。 此指引不會修改 MIT 或第三方授權。
來源:Hacker News (official RSS) · github.com
