你正在使用一個 App,注意到某個功能「就是能用」。離線即時搜尋、巧妙的同步行為、順暢的更新流程。你也想在自己的產品裡做出類似的功能,但你沒有原始碼、沒有文件,也不知道該從哪裡開始。
傳統上,答案是「學習逆向工程」。這代表你要先挑一個反組譯器,學它的 API,深入研究字串和符號,手動追蹤呼叫圖,並在不同工具之間複製整理結果。這是一門很深的技能,大多數應用程式開發者根本沒有時間去學。
REA 採取了不同的做法:它把這些工作交給你的 AI 程式碼代理。
這篇文章會介紹 REA 是什麼、它如何運作、如何設定,以及它是否值得你花時間嘗試。
REA 是一個用 TypeScript 撰寫的開源(MIT 授權)工具,提供 AI 代理一種一致的方式來分析軟體。它提供兩種形式:
rea):可以在終端機直接執行它的概念很簡單:把代理指向某個 App,詢問某個功能是怎麼運作的,然後代理用 REA 來檢查該 App、用證據解釋功能,接著為你的技術棧打造一個改寫版本。

REA 把每一次分析分成三個階段:
先說清楚一點: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
可匯出、比較、重用的證據紀錄
有幾個設計選擇特別值得注意:
原生二進位檔的支援最深,但 REA 不只支援這些:
.app 套件,包含 Swift 與 Objective-C 中繼資料最快的方式:
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 伺服器,但沒有自動偵測到,請把以下內容加入設定:
{
"mcpServers": {
"rea": {
"command": "npx",
"args": ["-y", "[email protected]", "mcp"]
}
}
}
請鎖定為 npm 上最新發布的版本。
如果逆向工程工具執行你不信任的程式碼,可能會有風險。REA 整體上非常偏向保守:
REA_EVIDENCE_ROOTS_JSON 這類變數。sudo,而且與提供者之間使用已驗證的本機 socket 通訊。相對地,提供者和被啟動的目標程式仍然會以你的使用者權限執行。REA 不是安全沙箱,所以在處理惡意軟體時,不要把它當成沙箱使用。
如果你符合以下情況,答案是肯定的:
如果你符合以下情況,可以先等等:
幾個實務上的注意事項:
REA 把逆向工程從專家技能,變成你可以交給程式碼代理處理的工作。你描述功能,代理分析 App,向你展示它如何得出結論,然後協助你打造自己的版本。