免責聲明
本文僅供資安研究人員、逆向工程學習者、軟體授權合規稽核人員參考。嚴禁用於未經授權的商業軟體破解、盜版傳播、繞過技術保護措施等違法行為。請遵守當地智慧財產權法規與軟體授權協議。
暴力破解定義與適用場景
「暴力破解」在軟體保護語境下,指不分析授權演算法,而是直接修改程式碼邏輯、跳過檢查、移除時間/功能限制,使軟體在無合法授權下仍可完整運行。適用於:
- 無授權碼機制、僅有時間炸彈 (Time Bomb) 的試用版/測試版。
- 授權演算法過於複雜 (強加密、雲端驗證、硬體綁定),逆向成本極高。
- 需移除試用期倒數視窗、啟動畫面、功能鎖定等 UI 限制。
- 使用 Key File 授權,但金鑰檔驗證邏輯可繞過。
- 加殼/加密保護軟體,需先脫殼再修補。
常見軟體保護類型與破解策略對照
| 保護類型 | 特徵 | 暴力破解切入點 |
| 時間限制 | 啟動時比對系統時間/安裝日期,過期拒絕執行 | 修改比較指令 (JNE→JMP)、NOP 掉呼叫 MessageBox 的代碼、Hook GetSystemTime/Time API 回傳固定值 |
| 功能限制/試用提示視窗 | 彈出對話框要求註冊、倒數計時 | 定位視窗字串資源 → 交叉參考找到呼叫處 → 修改條件跳躍或直接 NOP 掉視窗顯示代碼 |
| 序號/授權碼驗證 | 本地演算法驗證輸入序號 | 若演算法可逆 → 算號機;若不可逆 → 修改驗證結果旗標 (EAX=1/0)、NOP 掉失敗分支 |
| Key File / License File | 讀取外部授權檔案驗證簽章 | 修改檔案讀取失敗處理邏輯 → 視為驗證成功;或 Hook 檔案 API 偽造金鑰內容 |
| 加殼/加密 (UPX, VMProtect, Themida, Enigma) | 程式碼加密壓縮,動態解壓執行 | 必須先脫殼 (通用脫殼機、手動 ESP 定律、記憶體傾印重建 IAT) 獲得原始碼區再修補 |
核心工具鏈
- 靜態分析: IDA Pro (互動式反組譯器)、Ghidra (NSA 開源)、Binary Ninja、Hopper、Cutter。
- 動態分析/除錯: x64dbg/x32dbg (現代主流)、OllyDbg (舊 32-bit)、WinDbg (核心/使用者模式)、Scylla (IAT 重建)、LordPE。
- 輔助工具: PE-bear (PE 結構檢視)、Resource Hacker (資源修改)、Detect It Easy (DIE, 加殼識別)、Import Reconstructor (IAT 修復)、CFF Explorer。
實戰流程範例:移除試用期過期提示 (32-bit PE)
- 資訊收集: 記錄彈窗標題/內容字串 (如 "Trial expired", "This version is outdated")。
- 靜態搜尋: IDA/Ghidra → Search → Sequence of bytes / String literals 找到字串位址。
- 交叉參考 (Xrefs): 查看引用該字串的函式位址,定位顯示訊息框的呼叫點 (通常為
MessageBoxA/W 或自定義對話框)。
- 分析上層邏輯: 向上追蹤呼叫鏈,找到決定是否顯示視窗的條件判斷 (通常為
CMP + JNE/JE/JNZ/JZ 比較過期旗標/日期)。
- 修補策略:
- 將條件跳躍指令改為無條件跳躍 (JMP) 或反向條件 (JNE→JE)。
- 或直接 NOP (0x90) 掉整個視窗顯示呼叫區塊 (需確保不影響後續必要初始化)。
- 或修改比較運算數 (如比較日期的常數改為極大值)。
- 儲存修補: IDA → Edit → Patch program → Apply patches to input file;或使用十六進位編輯器 (HxD) 直接修改檔案偏移位元組。
- 驗證: 執行修補後程式,確認無過期提示、功能正常。若崩潰,檢查是否破壞關鍵初始化邏輯,需更精細修補。
加殼軟體脫殼關鍵點
- 識別加殼器:DIE、PEiD、Exeinfo PE。
- 通用脫殼:載入 x64dbg → 設定斷點於
kernel32!LoadLibraryExW、ntdll!LdrLoadDll、或硬體執行斷點於 OEP 區域 (記憶體屬性變 RWX) → 執行至 OEP → Scylla Dump → 修復 IAT → 修正 OEP → 另存新檔。
- 進階保護 (VMProtect/Themida/Enigma):虛擬化保護、反除錯、完整性檢查、資源加密。需結合動態追蹤 (Tracer)、記憶體快照比對、腳本自動化 (Python/IDAPython) 逐層剝離。
法律與道德邊界
- 合法逆向工程情形 (參考各國法) : 相容性開發、安全性研究 (協調揭露)、惡意軟體分析、遺產系統維護 (原廠倒閉、無授權管道)、教育學術研究。
- 違法行為: 破解商業軟體授權、製作/散布破解補丁/Keygen、繞過 DRM/TPM、銷售盜版軟體、提供破解教學牟利。
- 白帽研究者準則: 遵循 CVD (協調漏洞揭露) 流程,向廠商回報授權繞過邏輯缺陷,協助修補而非公開利用細節。
結語
暴力破解本質是「修改程式邏輯以改變執行流程」,核心技能在於靜態分析定位關鍵判斷點、動態除錯驗證假設、精準修補二進位碼。掌握此技術應用於合法授權的滲透測試、惡意軟體分析、相容性修補、軟體考古等建設性領域,才能發揮正向價值。請尊重智慧財產權,支持正版軟體生態。