你正在使用一個 App,注意到某個功能「就是能用」。離線即時搜尋、巧妙的同步行為、順暢的更新流程。你也想在自己的產品裡做出類似的功能,但你沒有原始碼、沒有文件,也不知道該從哪裡開始。

傳統上,答案是「學習逆向工程」。這代表你要先挑一個反組譯器,學它的 API,深入研究字串和符號,手動追蹤呼叫圖,並在不同工具之間複製整理結果。這是一門很深的技能,大多數應用程式開發者根本沒有時間去學。

REA 採取了不同的做法:它把這些工作交給你的 AI 程式碼代理。

這篇文章會介紹 REA 是什麼、它如何運作、如何設定,以及它是否值得你花時間嘗試。

什麼是 REA?

REA 是一個用 TypeScript 撰寫的開源(MIT 授權)工具,提供 AI 代理一種一致的方式來分析軟體。它提供兩種形式:

  • CLI(rea):可以在終端機直接執行
  • MCP 伺服器:像 Claude Code、Cursor、Codex、Gemini CLI、Windsurf 和 Claude Desktop 這類代理都可以直接呼叫

它的概念很簡單:把代理指向某個 App,詢問某個功能是怎麼運作的,然後代理用 REA 來檢查該 App、用證據解釋功能,接著為你的技術棧打造一個改寫版本。

REA 在 Hopper 中執行分析

心智模型:反編譯、理解、重建

REA 把每一次分析分成三個階段:

  1. 反編譯 - 開啟 App,還原出可讀的程式碼、字串、符號名稱,以及其他線索。
  2. 理解 - 沿著程式碼從 App 的一個部分追到另一部分,直到代理能解釋這個功能實際上是如何運作的。
  3. 重建 - 把學到的內容轉換成你自己產品中的功能,使用你的語言與框架。

先說清楚一點:REA 並不聲稱能還原原始原始碼,也不會複製 App。它提供給代理的是偽程式碼、組合語言、符號、字串與關聯,並且會顯示每個結論背後的證據。

一次真實的分析會長什麼樣子

假設你對代理下達這個指令:

逆向工程 Notes App。找出離線搜尋如何運作,解釋給我聽,
並用 TypeScript 和 SQLite 為我的專案做一個版本。

在背後,代理會使用 REA 工具,大致經過以下步驟:

步驟 代理做什麼 範例 REA 工具
1 開啟並辨識二進位檔 open_binary, binary_overview
2 搜尋與搜尋相關的線索 search_strings, search_procedures, list_names
3 把線索連到實際程式碼 find_xrefs_to_name, xrefs, procedure_callers
4 重建控制流程 get_call_graph, procedure_callees
5 反編譯重要函式 procedure_pseudo_code, batch_decompile
6 在你的專案中撰寫功能 你自己的代理正常使用的編輯與測試工具

REA 負責第 1 到第 5 步。第 6 步則是你的代理做它本來就擅長的事:寫程式。

如果你曾經手動做過逆向工程,你一定會認得這個流程。差別在於,現在是代理在操作,而不是你。

背後的運作方式

REA 本身不是反組譯器。它是一層協調層,位於你的代理與真正的分析工具之間。

Agent / Terminal
      |
      v
  REA (CLI + MCP server)
      |
      +--> 深度分析提供者:Hopper、Ghidra
      +--> 原生 macOS 工具(Mach-O、程式碼簽章、plist、Swift 去混淆名稱)
      +--> 封裝格式提供者(ZIP、APK、IPA、ASAR、MSIX 清單)
      +--> 瀏覽器提供者(被動式 Chrome DevTools Protocol 觀察)
      +--> 行程擷取提供者(受控的終端機工作階段)
      |
      v
  可匯出、比較、重用的證據紀錄

有幾個設計選擇特別值得注意:

  • 由提供者負責重工作。 Hopper 是主要的深度分析提供者,而 Ghidra 則支援唯讀、由你自行提供的模式,可用於 Linux(另外還有實驗性的 Windows x64 模式)。
  • 所有結果都會產生證據。 每個成功結果都會儲存成結構化的「Evidence v2」紀錄,包含提供者、信心程度與已知限制。你可以匯出這些資料包、之後再匯入,並且比較不同 App 版本之間的差異。
  • 未知就是未知。 REA 很嚴格,不會把猜測包裝成事實。靜態推論與執行期觀察會分開標示,不完整資料也會如實標示為不完整。
  • 以本機為設計核心。 沒有雲端代管的分析服務。你分析的 App 會留在你的電腦上(但你的 AI 模型提供者仍然有自己的資料政策)。
  • CLI 與 MCP 使用同一套引擎。 你的代理能做的事,你也可以直接在終端機做。

目前可以分析哪些內容

原生二進位檔的支援最深,但 REA 不只支援這些:

  • 原生 App:Mach-O、ELF、PE,以及 macOS .app 套件,包含 Swift 與 Objective-C 中繼資料
  • 封裝與壓縮檔:ZIP、APK、IPA、ASAR,以及不解壓的檔案層級清單
  • Electron 與 JavaScript App:靜態對應進入點、模組、IPC 通道、preload 腳本與 source map,不執行任何程式碼
  • 網站:透過你已經控制的瀏覽器,以本機 Chrome DevTools 端點進行被動觀察
  • .NET(受管 PE/CLI):不執行程式的中繼資料、成員與原生邊界初步分析
  • 版本差異比對:比較 App 的兩個版本,產出變更報告

開始使用

系統需求

  • macOS 12+,或 Ubuntu 24.04+、Fedora 41+、64 位元 Arch Linux(Windows x64 為實驗性功能,且僅支援 Ghidra)
  • Node.js 22.19+ 或 24.11+
  • 一個深度分析提供者:Hopper(安裝流程可協助安裝,且免費試用模式可用)或你自己的 Ghidra 12.1.2 搭配 JDK 21

安裝並執行設定

最快的方式:

npx --yes rea-agents@latest setup

或者全域安裝 CLI:

npm install --global rea-agents
rea setup

設定流程很謹慎。它會偵測你已安裝哪些代理,詢問你想要哪些能力,顯示它將變更的確切檔案,並且在套用任何變更前預設為「否」。如果你想先預覽計畫,可以使用 rea setup --dry-run。

設定完成後,重新啟動你的代理,讓它載入新的 MCP 伺服器。

檢查你的環境

rea doctor

這會告訴你機器上缺少什麼、設定錯誤了什麼,或有哪些功能不受支援。

在終端機中試用

rea analyze /Applications/Notes.app
rea search /Applications/Notes.app "offline"
rea trace /Applications/Notes.app "offline"

或者直接問你的代理

理解 Notes App 中搜尋是如何運作的,把證據給我看,
並為我的專案做一個相似的功能。

手動 MCP 設定

如果你的代理支援本機 MCP 伺服器,但沒有自動偵測到,請把以下內容加入設定:

{
  "mcpServers": {
    "rea": {
      "command": "npx",
      "args": ["-y", "[email protected]", "mcp"]
    }
  }
}

請鎖定為 npm 上最新發布的版本。

安全性與權限

如果逆向工程工具執行你不信任的程式碼,可能會有風險。REA 整體上非常偏向保守:

  • 動態功能(行程擷取、瀏覽器觀察、執行期檢查)預設停用,需要明確的環境變數,以及每次呼叫時的批准。
  • 以檔案為基礎的證據指令,只能在你允許的目錄內運作,並使用像 REA_EVIDENCE_ROOTS_JSON 這類變數。
  • 靜態 JavaScript 分析只會解析程式碼,不會執行它。
  • REA 絕不會呼叫 sudo,而且與提供者之間使用已驗證的本機 socket 通訊。

相對地,提供者和被啟動的目標程式仍然會以你的使用者權限執行。REA 不是安全沙箱,所以在處理惡意軟體時,不要把它當成沙箱使用。

值得試試看嗎?

如果你符合以下情況,答案是肯定的:

  • 你使用 macOS 或 Linux,並且已經在用支援 MCP 的代理,例如 Claude Code 或 Cursor。
  • 你想了解某個 App 的功能是怎麼運作的,尤其是原生 App 或 Electron App。
  • 你對逆向工程有興趣,但一直沒有時間學 Hopper 或 Ghidra。
  • 你需要為相容性,記錄某個沒有文件的檔案格式、通訊協定或介面。
  • 你正在維護軟體,並且想比較不同版本之間的行為差異。

如果你符合以下情況,可以先等等:

  • 你使用的是 Windows。那裡的支援仍然是實驗性且有限的。
  • 你想要一個快速、零設定的工具。REA 有很多可選開關與環境變數,這對安全性很好,但需要時間學習。

幾個實務上的注意事項:

  • Hopper 是獨立的商業軟體。試用模式可用,但有由廠商定義的限制。
  • 深度分析可能會消耗大量代理 token,所以要留意模型成本。
  • 請遵守法律與軟體授權。為了學習與相容性而做逆向工程很常見,但有些授權條款與司法管轄區會限制這麼做。請重建想法與行為,不要複製受著作權保護的程式碼或資產。

總結

REA 把逆向工程從專家技能,變成你可以交給程式碼代理處理的工作。你描述功能,代理分析 App,向你展示它如何得出結論,然後協助你打造自己的版本。


原文出處:https://dev.to/arshtechpro/rea-let-your-ai-agent-reverse-engineer-the-app-features-you-wish-you-had-3en7


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝46   💬1  
741
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登