AI 知識

沒有原始碼,AI 就能還原?先看這三道證據

你把一個程式交給 AI,它列出模組、解釋流程,甚至寫出看起來能運作的版本。最危險的一刻,可能不是它卡住,而是它講得太順,讓你直接把「合理」當成「已證實」。

沒有原始碼時,分析者只能從手上的檔案、反編譯結果或執行時觀察,逐步推回可能的行為。AI 可以協助整理這些線索;但解釋完整,不等於證據完整。真正該問的不是「它能不能還原」,而是「哪些結論已被觀察支持,哪些仍是推測」。

REA 接起的是分析工具,不是正確答案保證

REA 是開源的 AI 輔助逆向分析工具。依專案 README,它透過 MCP 讓 AI agent 呼叫分析工具,範圍包含原生程式、JavaScript/Electron、.NET 與網站。MCP 在這裡可以理解成 AI 與工具之間的連接介面;不是自動判斷答案真假的裁判。

文件描述的流程是:agent 提問,工具檢視或追蹤目標,回傳發現與證據,再由 agent 追問、解釋、撰寫或測試實作。也就是把「找線索」和「形成解釋」接起來,而不是直接取得原作者的原始碼。

原生程式的反編譯結果可能是偽程式碼與組合語言;JavaScript/Electron 分析則可呈現模組及其關係。這些輸出有助理解,但不能把一份看起來像原始碼的結果,自動當成原作者的寫法、完整設計意圖或可自由利用的作品。

第一關:這份報告,到底分析哪一份檔案?

檔名相同,不代表內容相同。換了版本、打過修補,甚至只換一份建置產物,原先的結論就未必適用。

REA 的 CLI 文件說明,證據紀錄可保存分析目標的身分、來源位置、觀察、推論及未解項;部分操作也支援分析結果快照,並以目標內容、操作參數與提供者設定是否一致,判斷能否重用結果。這種設計值得注意,因為「分析了什麼」是後面所有結論的起點。

實務上可以先要求報告交代檔案雜湊、取得來源、版本與分析條件。這是本文的管理建議,不是 REA 對每次分析必然完整成功的保證。只有專案名稱或一張截圖,還不足以把結果對回你現在手上的軟體。

第二關:它看到的,和它猜到的,有沒有分開?

「觀察到某段程式呼叫一個函式」與「推測這個函式負責付款驗證」,是兩種不同強度的說法。前者還需要指出位置和條件,後者則要交代推論依據,以及有沒有其他解釋。

REA 的證據格式把觀察、推論和未解項分開。讀報告時可以沿用這個思路:每個重要結論,都應能回到檔案位置、分析輸出或執行紀錄;不能只有 AI 的一段敘述。

尤其別把指令正常結束,誤認成所有問題都已解決。CLI 文件允許結果帶有部分完成、警告或未解項。工具有回應,與分析足以支持某個結論,是兩回事。

第三關:寫出另一個版本,能不能對上行為?

以下是虛構教學情境,不是 REA 實測,也不是客戶案例:你擁有一個自己寫的舊格式轉換工具,AI 判斷它會移除空白,並寫出替代程式。

替代程式處理一份正常輸入成功,不代表已經還原原工具。空檔、特殊字元、錯誤輸入,以及原工具會拒絕的資料,可能讓兩者出現不同結果。你需要先說清楚要對齊哪些行為,再用同一批輸入比較輸出與錯誤處理。

這是本文提出的驗證方法,不是官方認證流程。通過選定測試,只能支持那些測試範圍內的行為;不能往上放大成完整相容、沒有安全問題,或可以取代原系統。

關卡 要拿到的證據 還不能下的結論
目標身分 檔案雜湊、來源、版本、分析條件 同檔名就適用所有版本
觀察與推論 可追到的位置或紀錄、推論依據、未解項 AI 解釋完整就是事實
行為對照 同輸入的輸出與錯誤比較、測試範圍 幾個例子通過就是完整還原

「在本機」也不等於「沒有外部影響」

另一個容易誤會的點,是把本機分析當成安全保證。

README 區分了靜態讀檔與執行時分析:靜態 JavaScript/.NET 分析可以不執行目標程式;執行時捕捉則可能執行或互動,使用的是操作者的權限。即使目標分析在本機進行,agent 仍會接收工具輸出,模型供應商也有自己的資料政策。

因此,機密程式、含個資的資料與正式環境,不適合只因「本機」兩字就直接投入。先確認可提供哪些內容、會執行什麼、可能對外連到哪裡,以及哪些輸出會交給 agent。這些是開始前的邊界,不是事後補上一句提醒就能替代。

有檔案,不代表有所有操作的授權

REA 的使用聲明要求合法、具權限的研究與分析,也明確區分檢視檔案和執行、攔截或影響其他系統。拿得到軟體,不能直接推成有權進行任何操作;工具本身的開源授權,也不是原程式、素材或商業用途的授權。

本文不是法律意見,也不判斷特定軟體是否可逆向。若沒有明確權限,或工作涉及受保護機制、他人資料與系統,就不應把「工具能做」當成「可以做」。

AI 降低的是串接線索、整理輸出與形成假設的門檻。你仍要守住三件事:分析的是哪一份檔案、哪些句子有證據、哪些行為真的驗過。下一次看到漂亮的還原報告,先追這三道關卡,再決定相信多少。

資料與查核

查核日期:2026-10-13。下列資料固定於 REA commit 9cf49c7a784ace9b79e4b4c1022c9fbf2b3f77e1,不宣稱未來版本行為相同。

作者:奧微軟體開發企業社內容團隊。本文為獨立 AI 知識整理;作者與 REA 專案無隸屬關係。未安裝 REA、未分析真實程式,也未測試重建精確度、效能或安全隔離。文中檢查表與教學情境為原創說明,不是工具實測或安全認證。

回文章列表