YouMind
登入

如何將 Opus 5.5 變成逆向工程利器:8 步驟完整教學

@hanakoxbt
英語2026年10月13日
194K
139
14
15
332

TL;DR

本指南詳細介紹了使用 REA 工具和 Opus 5.5 進行軟體逆向工程的 8 步驟工作流程。內容涵蓋目標路由、安裝、偵察、反編譯、處理混淆、群體分析、淨室重建以及驗證。

2026 年 10 月 8 日,一個三個月前還沒人聽過的 repository,登上了 GitHub Trending 第一名。

它叫 REA(Reverse Engineer Anything,逆向工程任何東西),能給你的 Agent 一台真正的反組譯器。

**把這篇加入書籤—— 如果你想要完整長篇版本,關於這個主題的 20 堂完整課程已經上線:**

reacourse.xyz

它會帶你從一個空白終端機,走到一份能通過自身一致性測試的重建程式碼,每一道指令、每一個提示詞都寫得清清楚楚。從這裡開始。

那一週,各處的反應都一樣。

Matthew Berman 用三個字形容它,360 萬人看到了。

https://x.com/MatthewBerman/status/2108245653843509415

REA 是一個開源 MCP Server 加上 CLI,可以接進 Claude Code、Codex、Cursor 和 Gemini CLI。

MIT 授權,由 morluto 開發,2026 年 7 月 12 日首次發布,三個月後 GitHub Stars 突破 10 萬。

所有運算都在本機執行,每個結論都會標記為「觀察」、「推論」或「未知」,並附上對應的位址或呼叫點。

這就是從一個封閉的二進位檔,走到一份完全屬於你的重建程式碼的完整路徑,一共八個步驟。

Hanako - inline image

在開始步驟之前:大家已經用它做出了什麼

重點不是工具本身,而是這四週內真正落地的成果。

ArtCraft 把七款 Adobe 應用程式重建成免費的開源替代品,接著用 WordCraft、GridCraft 和 DeckCraft 對 Office 下手。

現在一共有十二款 App,全部用 Rust 從頭寫成,原生支援三大平台,其中十一款還能透過 WebAssembly 直接在瀏覽器分頁裡跑。

遊戲方面的成果更具體:

  • 《超級瑪利歐陽光》有了原生 PC 移植版:大約花了 365 個 Agent 小時與 173 億 token,同時使用 Claude 和 Codex
  • 在 REA 官方部落格上用 Agent 重建的一款東方 Project 遊戲:697 個函式,696 個完全吻合,約 12 天就能玩
  • Aegis 驗證器(3,077 個類別)被拆解並重建,133 個測試案例全數通過
  • DX-Ball 的聲音平移函式用 C 重建,通過 3,205 個原始 x86 測試案例,並完整還原了 63 個編譯後的位元組

注意這份清單「沒有」包含什麼。

沒有人破解授權檢查,沒有人公開別人的原始碼。

上面每一項,都是把行為還原出來、記錄下來,再用全新的程式碼重新實作。

01. 打開任何東西之前,先判斷目標類型

它能爆紅,不是因為它很會讀某一種檔案,而是因為它幾乎什麼都能讀,而且每個主張都會附上證據。

https://x.com/RoundtableSpace/status/2109165852578992582

那份清單也是你要做的第一個決定。浪費一整個下午最常見的方式,就是目標明明是個 JavaScript 就躺在那裡的 Electron App,你卻跑去開反組譯器。

把 REA 指向 Electron,幾秒內就能拿到模組、import 和 IPC 邊界,根本不需要任何引擎;而原生的 Mach-O 或 ELF 則會開啟 Hopper 資料庫,這條路更深,也更慢。

搞清楚自己面對的是哪一種,能省下好幾個小時,所以讓你的第一個提示詞來做這件事。

markdown
1我想了解 [APP] 中的 [功能] 是如何運作的,它位於 [絕對路徑]。
2 先告訴我這是哪種類型的目標(原生、Electron/JS、.NET、Go、APK、WASM),
3 然後選出正確的 REA 工具來開啟它。先不要開始深入分析。
4 接著用一段話描繪它:用什麼技術打造、規模多大、要找 [功能] 應該先看哪裡。
5 請把觀察、推論和未知分開列出。
Hanako - inline image

幾乎沒人提到的一點:很多 Unity 遊戲的邏輯是以 .NET 形式發布的,而 REA 不需要額外引擎就能讀 .NET。

這就是為什麼一款買來的 Steam 遊戲,能在半小時內從二進位檔變成可編輯的 C#。

而且你電腦上的每個 Electron App,現在不用啟動就能讀:

bash
1# where the JavaScript lives
2macOS: /Applications/<App>.app/Contents/Resources/app.asar
3Windows: C:\Users\<you>\AppData\Local\Programs\<App>\resources\app.asar
4 npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

02. 五分鐘裝好,再補上一個引擎

讓這套流程跑得起來的不是什麼巧妙的提示詞,而是一個真正接到 Agent 上的反組譯引擎——某位開發者正是這樣形容它的。

https://x.com/techNmak/status/2108431092462338178

安裝程序會把 MCP Server 註冊到你的 Agent,並裝上對應的工作流技能。

它會在寫入任何東西之前顯示所有變更,並備份它碰到的檔案。

node -v # Node 22.19+、24.11+ 或 26+。不支援 23 和 25 版

bash
1npx rea-agents@latest setup # registers the MCP server, asks before writing
2npm install --global rea-agents # the short rea command, forever
3rea --help
4# restart the agent, then verify. doctor only checks, it never changes anything
5npx -y rea-agents@latest doctor --client claude_code --json

重新啟動比聽起來更重要:終端機 session 必須全新開啟,桌面 App 則要完整結束,因為只關視窗是不夠的。

接著,只針對你真正想讀的東西安裝引擎:

在處理第一個真實目標之前,值得先寫好一份文件:claude-md 裡的家規。

只分析你擁有的東西;每個主張都要標記為觀察、推論或未知;註明背後的位址;任何還原出來的行為,如果沒有通過測試,就不算完成。

bash
1# native programs and games: Ghidra 12.1.x and JDK 21 or newer
2 export GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.1.4_PUBLIC
3 export JAVA_HOME=/absolute/path/to/jdk-21
4 npx -y rea-agents@latest doctor --provider ghidra --json
5
6 # Android apps: JDK 17+ and jadx-headless-mcp 0.7.1
7 export REA_JADX_MCP_JAR=/absolute/path/jadx-headless-mcp-0.7.1-all.jar
8 rea inspect-android-package /path/App.apk
9
10 # smart contract bytecode, Linux x64 for now
11 rea inspect-evm-interface ./runtime.hex hex --json

03. 偵察:地圖要在程式碼之前

先別打開任何一個函式。

一道指令就能告訴你這個二進位檔跑在哪種機器上、裡面有多少函式,以及所有埋藏的可讀文字。

那些文字是你一整天能拿到最快的線索:端點、錯誤訊息和功能名稱,在你讀任何邏輯之前就把這個 App 描述清楚了。

json
1rea.open_binary { path: "/Applications/Target.app/Contents/MacOS/Target" }
2rea.binary_overview {}
3 arch: arm64
4 functions: 1,284 identified
5 entry: _main @ 0x1000051c0
6
7rea.search { query: "http" }
8 0x10004a2c0 "https://api.target.app/v3/sync"
9 0x10004a300 "Authorization: Bearer "
10
11rea.xrefs { address: "0x100012ab0" }
12 147 references -> core config loader, called everywhere
Hanako - inline image

REA 會計算每個函式被呼叫幾次,那個數字就是交叉參考次數。

被呼叫 147 次的函式就是這個 App 的架構,只被呼叫兩次的則是晚點再處理也無妨的輔助函式。

按那個數字排序往下做,永遠不要照檔案順序,因為照檔案順序做,就是人們在一個只有四個有趣函式的二進位檔裡耗掉整個週末的原因。

04. 反編譯一個函式,然後讓 Opus 替裡面所有東西命名

反編譯器會把原始的機器指令轉回接近 C 語言的東西。

結果會很粗糙:像 var_28 這種變數名、到處都是型別轉換、糾纏不清的分支。粗糙沒關係,因為模型只需要「看得懂」。

bash
1# one function by address, as JSON you can save and reuse
2rea decompile /path/to/Target 0x100012ab0 --provider hopper --json > fn_config.json
3
4# or find it by name and follow its references
5rea function /path/to/Target parseConfig --provider hopper --json
6rea xrefs /path/to/Target 0x100012ab0 --provider hopper --json

接著把輸出丟給 Opus 5.5,讓它去做反組譯器做不到的事:

markdown
1這是一個有 147 個交叉參考的函式的反編譯虛擬碼。
2
31. 根據每個變數的使用方式重新命名,並用一句話說明用途。
42. 列出它讀寫的資料結構,並指出它遵循的模式。
53. 用呼叫慣例所暗示的語言,把它改寫成乾淨、道地的程式碼。
64. 標出任何缺少的錯誤處理、輸入驗證或安全檢查。
7
8回答前先以 xhigh 努力程度思考。不確定的地方都要標記出來。
Hanako - inline image

Opus 5.5 提供五種努力程度:low、medium、high、xhigh 和 max。

Medium 用來檢查和導覽,high 用來標註一般函式,max 則留給混淆過的程式碼和大量指標運算。

努力程度是這套流程裡影響品質最大的一個旋鈕,但大多數人都維持預設值,然後怪模型不好用。

反編譯告訴你程式碼「做了什麼」,模型告訴你「為什麼」,以及重建它所需的命名。

05. 混淆:打破值得打破的,其餘做好預算

有些 App 天生就是為了抵抗你正在做的事:邏輯被打亂、字串被加密、純粹為了浪費你注意力而加的假分支。

這是連最強模型也會卡住的地方,而且有實際數據佐證。

Elastic Security Labs 讓 Claude Opus 在 20 個任務中對抗 Tigress 混淆器,直接得出兩個教訓。

失敗嘗試的成本大約是成功嘗試的兩倍,因為模型在放棄之前會一直硬推;而多層混淆的成功率是零,所以死磕它是花最多錢、學到最少東西的做法。

Hanako - inline image

實務上的原則是:預算要配給「每個函式」,而不是「每次對話」。

先清掉垃圾,因為一個叫 Caveman 的免費工具能移除大約 75% 的反編譯雜訊,讓模型把注意力花在真正的邏輯上。

markdown
1這個函式看起來被混淆了。請用 max 努力程度處理。
2
31. 找出使用的技巧(控制流平坦化、不透明謂詞、
4 死碼、字串加密、函式拆分),並在此一一指出。
52. 解開它們:移除死分支、評估不透明謂詞、解除分派器的平坦化、
6 若金鑰可還原則解密內嵌字串。顯示剩下的內容。
73. 信心度評 1-10 分。低於 6 分時,指出不確定的部分,以及需要什麼上下文才能
8 釐清。不要默默猜測。

06. 群集:一個控制器,多個工作者

單一對話無法好好讀完 500 個函式。

它會忘記四十個函式前看到的東西、用三種不同方式命名同一個 struct,然後開始悄悄自相矛盾。

解法不是塞更多上下文,而是拆分角色:一個負責發派工作的控制器,以及一群各自只處理一個函式就停下的工作者。

Hanako - inline image
markdown
1你是一個逆向工程控制器。函式地圖在 functions.json 裡
2(address、name、size、xref_count)。
3
41. 依呼叫圖的親近性將函式分群;依交叉參考次數排序各群。
52. 把每個群組派給一個工作者。絕對不要自己分析任何函式。
63. 把已解析的 struct 注入每份工作簡報,讓命名保持一致。
74. 信心度低於 6 的要進行第二輪,並補上已解析鄰居的上下文。
85. 追蹤累計 token 消耗,並在每個群組完成後回報。
9
10你是一個工作者。你會拿到一個反編譯好的函式,以及目前為止已解析的 struct。
11嚴格回傳:address、purpose、confidence (1-10)、structs_used、structs_new、
12clean_source、flags。重複使用現有的 struct 名稱,絕對不要為控制器已經給過你的
13struct 發明第二個名字。一次只處理一個函式。做完就停。

REA 也在 MCP Server 裡內建了引導式工作流,但多數人從來沒打開過:

  • - investigate_feature —— 從發現一路追蹤到具體的函式
  • - compare_application_versions —— 比較兩個版本,看看到底改了什麼
  • - verify_reconstruction —— 用保存下來的證據檢驗你的重建成果
  • - audit_residual_unknowns —— 列出仍未證實的部分

07. 淨室:兩個上下文之間的那道牆,才是真正的產品

淨室重建的意思是:你複製的是 App 的行為,而不是裡面的程式碼。

做對了,你發布的東西完全屬於你;做錯了,你就在自己的 repository 裡揹著別人的著作權。

這是一套有 40 年歷史的方法,不是 2026 年的新發明。

80 年代初,Compaq 用這個方法花了大約 100 萬美元重建 IBM 的 BIOS,這也是其他品牌的 PC 得以存在的唯一原因。

1992 年,Sega v. Accolade 案的法院認定,當拆解程式碼是理解其運作方式的唯一途徑時,可能構成合理使用;2000 年 Sony 在 Sony v. Connectix 案中以 0 比 3 敗訴,因為最終的模擬器裡沒有任何 Sony 的程式碼。

另一條界線同樣清楚:2011 年 George Hotz 與 Sony 和解,在 PS3 根金鑰公開後同意停止相關行為。

Hanako - inline image

四條規則讓你站在正確的一邊,而 ArtCraft 團隊在每次建置時都會自動檢查這四項:

  • - 觀察,絕不複製。把目標當黑箱執行,只截圖它自己的視窗,絕不把它的程式碼貼進你的專案
  • - 規格,而非原始碼。檔案格式來自公開標準(OOXML 是 ECMA-376 / ISO 29500,加上已發布的 RTF 和 ODF 規格),絕不來自閱讀競爭對手的解析器
  • - 只用原創素材。每個圖示、字型、範本和音效都是用程式碼畫出來的、屬於公有領域或採開放授權,並在歸屬檔案裡列出一行紀錄
  • - 把兩份工作分開。一個 Agent 負責還原行為並撰寫規格,另一個不同的上下文只根據該規格進行實作

最後那條規則是大家最常跳過的,而它才是真正的界線。

你的調查 Agent 按定義就是被污染的,因為它讀過反編譯結果;而你的建構 Agent 不能受到污染。

markdown
1根據完成的分析,撰寫一份用於重新實作的淨室規格書。
2
3只描述「行為」:每個公開介面、資料模型、每個使用者可見的功能作為可測試的需求、
4讀寫的檔案格式、錯誤處理。
5
6不要包含位址、偏移量、反編譯的變數名稱、組合語言,或任何
7從原始程式複製來的東西。一個從未見過該二進位檔的開發者,必須能
8單靠這份文件實作出相容的版本。
9
10章節:架構、資料模型、公開 API、檔案格式、測試案例。

依照描述來開發不只是法律上的保護傘。

它讓你能為自己的語言做出正確的選擇,而不是繼承別人二十年前做的決定——這就是 WordCraft 在某些地方比 Word 更快的原因。

08. 驗證一致性,然後透過 MCP 發布

你從來就沒有原始碼,所以沒辦法逐行 diff。

你要比較的是行為:相同的輸入送進兩個版本,得到相同的輸出。

markdown
1建立一個行為測試框架,用來比較原始二進位檔和我的重建版本。
2
3產生 50 組輸入:30 組正常、10 組邊界(空值、最大長度、Unicode)、10 組錯誤
4(格式錯誤、損毀)。每組都跑過兩者,盡可能逐位元組比對,
5否則進行語意比對。回報吻合率、差異處,以及每一項的嚴重程度
6(外觀 / 行為 / 關鍵)。儲存到 report.md。

「我覺得它吻合」不是證據,吻合率才是;而那份報告,是你放在發布文最上方最有說服力的東西。

接著像 REA 和 Craft 系列 App 那樣,把重建成果做成 MCP Server 發布,讓下一個人的 Agent 能像你操作 REA 一樣操作你的工具。

給每個函式一個清楚的名稱和一鍵安裝指令,每個動作就會變成具名命令,點擊、快捷鍵和 Agent 都能用相同方式觸發。

bash
1claude mcp add wordcraft -- wordcraft-cli mcp
2
3> Open report.docx, make every heading 14pt bold, export to PDF
4 ok select.all-headings -> 12 selected
5 ok format.font-size 14 . format.bold
6 ok export report.pdf (selectable text, bookmarks kept)

限制,以及會浪費你一整個週末的五個錯誤

REA 碰不到伺服器端,因為它讀的是你機器上的東西,而跑在公司伺服器上的程式碼從來就沒有交到你手上。

反編譯出來的程式碼是重建品,不是原始碼,這正是第 08 步存在的全部理由。

被 stripped 的 C++ 二進位檔依然比 Unity .NET 遊戲難搞得多,而商業引擎還是需要正式授權。

  • - 在 JavaScript 就擺在那裡的 Electron App 上開反組譯器
  • - 在看摘要之前就把整個二進位檔倒出來,這會把邏輯淹沒,還會讓帳單暴增
  • - 照檔案順序讀函式,而不是照交叉參考次數
  • - 讓模型把程式碼複製進你的重建版本,一次貼上就毀了淨室
  • - 沒有一致性報告就發布

既然 X 上有一半的人花了一整個星期在喊盜版,那就誠實說一下法律這條線:在自己電腦上讀一個 App 是學習,根據行為重建功能是產業從 80 年代以來一直在做的事,而複製程式碼或破解付費功能才是會讓你被告的部分。

研究原版,發布你自己的版本。

這八個步驟的每一步,背後都有一堂課:

reacourse.xyz ,裡面有精確的提示詞、失敗模式,以及這套方法失效的地方。

過去,閉源意味著你永遠不會知道。

現在,它的意思是:拿出證據給我看。

多數人會繼續按月付費,去用一個他們花一個下午就能看懂、一個週末就能重建的功能。

而少數學會閱讀軟體的人,想做什麼就能做什麼。

追蹤我並訂閱我的 Telegram 頻道:

https://t.me/+75nMf005jRpjMDU1

一鍵儲存

使用 YouMind AI 深度閱讀爆款文章

保存原文、追問細節、總結觀點,並在一個 AI 工作空間裡把爆款文章沉澱成可複用筆記。

了解 YouMind
寫給創作者

把你的 Markdown 變成乾淨的 𝕏 文章

圖片上傳、表格、程式碼區塊,往 𝕏 上手動重排太痛苦。YouMind 把整篇 Markdown 一鍵轉成乾淨、可直接發佈的 𝕏 文章草稿。

試試 Markdown 轉 𝕏

更多可拆解樣本

近期爆款文章

探索更多爆款文章