AI 逆向工程的衝擊——30 分鐘拆解一個 App 的時代
ai-securityAI 逆向工程的衝擊——30 分鐘拆解一個 App 的時代
導讀:一位自稱「逆向只會皮毛」的工程師,用 AI 在 30 分鐘內拆解加密的 Cocos2d 遊戲、脫掉商業級加殼、繞過銀行 App 的全套防護。他的 prompt 只有一句:「把它逆向還原成原始碼。」
AI 自己裝工具、自己分析
作者用 Cursor + Claude Opus 4.6,不裝任何額外 skill。AI 拿到 APK 後的流程跟人類逆向工程師一模一樣——先用 jadx 還原 Java 層、觀察是哪個引擎(Cocos2d、Unity、原生)、找加密函式、追密鑰、寫解密腳本。
但 AI 做得更快、更不怕重複嘗試。一個 Cocos2d 遊戲,AI 先掃字串找不到密鑰,就去反編譯 .so 檔,追到設置密鑰的函式,發現密鑰是一個字元一個字元拼接的(所以搜不到完整字串),逐一還原後用 Python 解密所有資源。全程靜態分析,沒有人類介入。
靜態走不通就換動態
另一個 Cocos2d 遊戲,靜態分析找到的密鑰解不開。AI 自動切換策略:安裝 Android 模擬器、裝 Frida、嘗試 hook 各種函式。前幾次 hook 失敗,AI 觀察到 xxtea_decrypt 是 public 函式,改 hook 它——遊戲跑起來後,正確的密鑰就出現了。
一個 Unity 遊戲更精彩:AI 在多種解密方法(AES 各模式、RC4、.NET Random 暴力破解)全部失敗後,觀察到加密檔案中有大量重複的 6 bytes 模式。AI 大膽猜測:明文是 Lua 的註解分隔線 ------。用 0x2d(- 的 hex 值)去 XOR,密鑰就出來了,3000 個檔案全部解開。
銀行級防護也擋不住
銀行等級的 App 有完整防禦體系:商業殼(.text 段加密)、反注入偵測(掃描 frida-agent 記憶體映射)、執行緒名稱掃描、ptrace 自我附加反調試、Root 偵測、模擬器偵測、SSL Pinning。
AI 先觀察 section headers 推斷是哪家的殼,幾種脫殼方法失敗後找到正確路徑成功脫殼。接著逐一列出所有保護措施,針對每項寫 Frida hook 繞過。Java 層的混淆則寫了千行 Python 腳本還原。最終結果:App 在 root 過的模擬器上正常開啟,所有請求可被 hook 攔截。
「原來是我限制了 AI」
作者最深的體悟:他一直假設「AI 應該脫不了殼」,所以從未嘗試。但 AI 狠狠打了他的臉。
他發現 AI 逆向的本質跟人類一樣——做各種嘗試、觀察輸出、根據結果改善、換方法再試。差別在於 AI 不會累、不會煩、嘗試速度是人類的數十倍。只要給 AI 一個能觀察結果的環境(log、error message、hook 輸出)和足夠的時間,幾乎沒有解不開的東西。
每個 App 的逆向花費不到 5 美元(Cursor 計費)、時間約 30 分鐘。
攻防平衡正在傾斜
Client-side 本來就沒有祕密,混淆和加殼只是延緩時間。但 AI 把這個時間從「專業人士數天」壓縮到「非專業人士 30 分鐘」。
守方可能需要「用魔法對付魔法」——用 AI 加殼,每次生成全新的保護模式。但即便如此,在 AI 逆向面前能撐多久?作者也不確定。
對開發者的啟示很直白:別把信任錨放在 client 端。重要邏輯、密鑰、驗證——全部搬到伺服器。
References
- Huli (2026). 從逆向工程重新認識 AI 的強大. blog.huli.tw.
- Huli (2026). 感謝 AI 讓我這外行人也能做簡單的逆向工程. blog.huli.tw.