AI 逆向工程 REA,這代表什麼(AI懶人報 EP424)
影片:6:21/2026-10-11 上架/56,295 次觀看。字幕只有自動產生的 zh-TW(ASR),無人工上傳版本。
Repo:https://github.com/morluto/rea(REA: Reverse Engineer Anything,TypeScript,2026-04-14 建立)
⚠️ 搜「REA github」會撞到至少三個同名仿冒 repo,全部在 2026-10-07~10-11 之間建立(影片爆紅的同幾天):
shijianzhong/rea(710 星)、rea-tools/rea(9 星)、ReverseEngineerAnything/REA(23 星,描述寫「Official free download / Local zip / Download🡇」、語言是 C++)。本體是morluto/rea,13.2 萬星。 這類「提供 zip 直接下載」的逆向工具仿冒 repo 是常見的惡意程式投遞手法 (推論),認網址不要認名字。
統整
REA 是什麼
REA 自己不拆程式,它是一座橋:一個 MCP server + CLI,把 Ghidra / Hopper / IDA Pro 這類反組譯工具接到你的 agent(Claude Code、Codex、Cursor、Gemini CLI、Grok Build…)手上,讓 agent 自己去拆解、自己追。
安裝是 npx rea-agents setup,選 agent、審核它要改的設定、同意,重啟 agent。需要 Node.js 22.x+。
能分析的目標遠超影片提到的範圍(README 列了 18 類):native binaries、Go binaries、WASM、EVM bytecode、JavaScript/Electron、網站、HAR 網路封包、.NET、Android APK 與實機(adb)、韌體(Binwalk/Unblob)、Linux crash dump、process 行為…。靜態分析只讀檔不執行;runtime capture 會用你的使用者權限真的跑起來。
影片刻意不講操作,只講「這件事代表什麼」,四件事加一條界線。
一、逆向工程從一門專業變成一個 dependency
以前拆一個沒有原始碼的程式,要開 Ghidra 或 IDA,盯著一堆沒名字的函式、看不懂的變數代號,一個功能花好幾天到好幾週,會做的人很少。現在在 agent 裡下一句話。
影片引用一位 YouTuber 的總結:逆向工程以前是一門專業,現在是一個 dependency —— 就像專案裡隨手裝的一個套件。
Electron App(VS Code、Notion)尤其脆弱。同一位 YouTuber 的說法:Electron App 就是一個穿著風衣的網頁 —— 裡面還是 JavaScript,只是被壓縮過、名字被換掉,所以 REA 不用執行它,直接讀檔案就能畫出整個 App 的結構。真正編譯成機器碼的程式名字全沒了、要靠反組譯工具,但對使用者來說一樣是一句話。
對工程師的意義是工具箱多一項:遇到沒有文件的檔案格式、沒人看得懂的舊系統、或第三方套件出錯而你看不到它的原始碼 —— 以前只能放棄或猜,現在可以叫 agent 拆進去看。REA 內建幾個引導指令:追當機原因、比對兩個版本差在哪、驗證你重做的東西跟原版是否一致。
二、別人的產品變成你的教材
REA 說明文件放在最前面的範例就是一句話:
Understand how search works in the Notes app, show me the evidence, and build a similar feature for my project. (搞懂備忘錄 App 的搜尋怎麼運作,給我看證據,然後在我的專案裡做一個類似的功能。)
三個步驟:先拆解 → 把運作方式解釋清楚 → 用你自己的技術做進你自己的專案。把「備忘錄」換成任何你想研究的 App 就行。
影片引的實例:有人的 Sony 耳機要開抗風噪,得開官方 App → 點降噪設定 → 拉滑桿,步驟太多。他叫 agent 用 REA 自己做了一個 Android App,按一下就切換。不是一次成功,來回修了幾次,大約 30 分鐘可用。他也提到用比較舊的模型試過同一件事完全失敗 —— 成敗取決於你接的是哪個模型。
意義:以前羨慕別人產品的某個功能只能猜它怎麼做,現在可以拆開來看,再用自己的方式做一次。
三、證據比答案重要(這集最值得帶走的一點)
回答一個問題:AI 說它拆解出來了,你怎麼知道它不是在編故事?這也是 REA 跟「叫 AI 猜猜看」最大的差別。
AI 手上沒有工具時很容易開始猜,編出看起來很合理的函式名稱,講得很有說服力,但跟程式實際怎麼跑無關。
影片描述 REA 的做法是:每個結論分成三種 —— 觀察到的 / 推論的 / 不知道的,每一條附上證據編號,可以回頭查。引用的金句:沒有收據的結論,只是一個說法。
官方 showcase 的 DX-Ball(打磚塊)案例:反組譯工具一開始只給出一個沒有名字、連參數都沒有的函式。agent 往下追,讀出裡面兩個常數,發現這段只做一件事 —— 球打到左邊的磚塊聲音從左邊出來,打到右邊就從右邊出來。重寫的版本通過 3,205 個原版 x86 測試案例,編譯出來的 63 個位元組與原版一模一樣(README 證實這兩個數字)。影片說他們自己也拿開源軟體對過答案,挖出來的規則是對的。
另外兩個官方 showcase:Notion 的 Electron clipboard bridge(從 renderer 的 clipboard API 追過 preload 與 IPC 進 main process)、TH04 的 DOS 16-bit 彈幕角度計算。
影片給出的通用結論:你自己在做任何會讓 AI 給答案的工具,都可以照這個格式 —— 結論、證據、限制、不知道的部分。一個會說出自己不知道什麼的答案,比一個什麼都很有自信的答案更有用。
四、什麼抄得走,什麼抄不走
很多人的第一反應是「我的產品是不是一句話就會被複製」。答案看東西放在哪裡:
- 拆得開:送到使用者手上的 —— 畫面、操作流程、前端程式、寫在 App 裡面的演算法
- 拆不到:留在你伺服器裡的 —— 排序與推薦、累積的資料、使用者
做 Sony App 那位也提醒:如果一個 App 重要的邏輯跑在自己的伺服器上,拆 App 本身是看不到的。
影片把這點接到他們另一集「軟體要死了嗎」(有人用 AI 十天做出一整套 Adobe 替代品,那套沒有用逆向工程)。兩件事合起來:一個新功能能讓你領先的時間會變短;能拉開差距的是對手看不到的伺服器與資料,還有你改得比別人快。
五、界線
就算技術上做得到,也不代表可以這樣做 —— 工具不會幫你判斷什麼可以拆,這要你自己判斷。
- 大部分不開源的軟體,使用條款寫明禁止逆向工程
- REA 自己的文件寫清楚:取得授權是你自己的責任。README 的 Disclaimer 原文把適用範圍限定在 lawful research、education、interoperability、software preservation,以及你自己擁有或被授權檢查的軟體
- 建議從開源程式、或你自己有權拆解的東西開始
影片最後的五條行動總結
- 遇到沒有文件、看不到原始碼的東西,不要再猜,叫 agent 拆進去看
- 看到喜歡的功能,直接說「搞懂它怎麼運作,給我證據,然後做一個類似的」
- 看 AI 給的結論,先分清楚哪些是觀察到的、哪些是推論的;推論的不要當事實
- 做產品的話,畫面跟流程會被拆解,護城河要蓋在伺服器、資料、使用者那一邊
- 守住界線,只拆開源的、或自己有權拆的東西
AI 沒有發明逆向工程,它只是把門檻拿掉了。送到你手上的它都拆得開,留在伺服器裡的它碰不到。
反覆出現的關鍵字
- 證據 / 收據(evidence) —— 全片密度最高的詞。出現在官方範例的 prompt 裡(show me the evidence)、第三件事整段、行動總結第 2 與第 3 條。README 裡 evidence 也是貫穿全文的詞(CLI 指南就叫 CLI and Evidence guide),每類分析目標的「回傳什麼」都強調附帶 references/evidence
- 觀察到的 / 推論的 / 不知道的 —— 影片反覆拿這三分法當 REA 與「叫 AI 猜」的分界
- 猜(guess) —— 作為反面詞反覆出現:以前「只能放棄或猜」、AI 沒工具時「很容易開始猜」、行動總結「不要再猜」
- 一句話 —— 片名就是「一句話逆向任何 App」,正文至少四次用「對你來說一樣是一句話」壓縮操作成本
- dependency —— 「從一門專業變成一個 dependency」是全片的主論點句
- 送到使用者手上的 / 留在伺服器裡的 —— 第四件事的核心對立,結尾又回收一次
- 橋 —— REA 自己不拆,它把工具接到 agent 手上(README 的 How REA works 用同樣的結構描述)
- 界線 / 授權 —— 獨立成段,且在行動總結裡佔一條
作者明顯把重量放在「證據」而不是「能拆」:第三件事是唯一一段給出可移植到其他場景的通用格式(結論/證據/限制/不知道),其餘四段都是現象描述。
矛盾點
影片自己的內部張力
- 開場案例不是 REA:全片用「Dell 螢幕韌體以前要一兩天到一週,這次 15 分鐘做完」當鉤子建立趨勢,然後下一句承認「他用的是另一套工具」。這個最有說服力的數字其實不是 REA 的戰績
- 「一句話」與實際操作的落差:主打一句話,但唯一的完整第一手案例(Sony 耳機 App)是「來回修了幾次、大約 30 分鐘」,而且換成舊模型「完全失敗」。「一句話」是結果的壓縮說法,不是流程
- 「門檻不見了」與「要看你接哪個模型」併存:如果成敗取決於模型世代,門檻就不是消失而是轉移到了模型取得能力上 (推論)
與 README 核對後的落差
- 星數:影片說「超過六萬顆星」(2026-10-11),今天用 GitHub API 查是 132,588(2026-10-12)。一天內翻倍不太正常,可能影片引用的是較早的數字,也可能有刷星 (推論)。兩個數字都記下來,各自標時間
- 三分法的措辭查不到:影片說「每一個結論都要分成觀察到的/推論的/不知道的,每條附證據編號」。README 全文搜不到這組三分法的對應英文(只有圖說的 alt text 提到 unknowns、以及貫穿全文的 evidence)。這個三分法可能出現在 docs/cli.md 等更下層文件、或是影片自己的概括 —— 未核實
- 影片說 DX-Ball 是「1996 年的 Windows 打磚塊遊戲」,README 的 showcase 段沒有提年份和平台(且另一個 showcase TH04 是 PC-98 DOS 遊戲)。未核實
與 vault 既有筆記的張力
- 對 蓋出高於自己理解程度的系統,能動時落差是隱形的:「逆向工程變成一個 dependency」正好是這則筆記描述的風險情境 —— 拆出來的東西能跑,但你並不理解它。影片完全沒處理這一面,它的第三件事(要證據)是降低這個落差的機制,但前提是你真的去讀那些收據 (推論)
- 對 監督 AI 產出的檢查成本可能比自己寫還高:證據編號讓結論可回溯,看似把檢查成本壓下來;但要驗證一條反組譯出來的結論,你得讀得懂 pseudocode —— 檢查成本是被降低還是只是被換了形式,影片沒談
- 與 PR 要自帶證據,證據是少讀 code 的交換條件 高度同構:都是「用證據換取不必親自讀完」。這兩者是同一個原理在不同場景(code review/逆向工程)的實例,不是矛盾 —— 但這表示「結論+證據+限制+不知道」這個格式在我的 vault 裡已經出現第三次了 (推論)
- 與 不可驗證的 AI 答案照問,但只當方向不當答案:那則筆記的判準是「不可驗證就只當方向」。REA 的三分法把「可驗證/不可驗證」從整個答案的屬性下推到每一條結論的屬性,是更細的刀 (推論)