code-obfuscation-deobfuscation 是做什麼的?
代碼混淆分析與反混淆實戰手冊。適用於逆向分析受垃圾代碼、不透明謂詞、自修改代碼、控制流平坦化、虛擬機保護或字串加密保護的二進制文件。
概述
本技能提供了一套完整的代碼混淆檢測與反混淆指南,涵蓋了各種常見的混淆技術。無論您是資深逆向工程師還是剛入門的新手,都能從中找到實用的分析策略和自動化腳本範例。
支援的混淆類型
- 垃圾代碼:插入無意義的指令以混淆控制流
- 不透明謂詞:使用難以靜態評估的條件語句來增加分析難度
- 自修改代碼:在運行時動態修改自身指令
- 控制流平坦化:將原始控制流結構轉換為統一的調度器模式
- 虛擬機保護:將原始代碼編譯為自定義字節碼,並通過解釋器執行
- 字串加密:對敏感字串進行加密,運行時動態解密
使用方法
先決條件
- 安裝 Python 3.8+
- 安裝 IDA Pro 7.6+ 或 Ghidra 10.0+
- 安裝 x64dbg(可選,用於動態調試)
安裝插件
pip install obfuscation-tools
基本工作流程
-
靜態分析:使用
static_analyzer.py掃描二進制文件中的混淆模式python static_analyzer.py -i sample.exe -o report.json -
動態調試:運行
dynamic_debugger.py捕獲運行時行為python dynamic_debugger.py -i sample.exe -t 30 -
反混淆:基於分析結果執行
deobfuscator.py進行代碼清理python deobfuscator.py -i report.json -o cleaned_sample.exe
進階技巧
處理虛擬機保護
需結合符號執行(如 angr)和污點分析:
import angr
proj = angr.Project('sample.exe')
cfg = proj.analyses.CFGFast()
#... 後續分析邏輯
控制流平坦化還原
使用模式匹配算法識別調度器並重建原始控制流:
pattern: dispatcher -> state_var -> switch_case
疑難排解
- 問題:分析工具無響應:檢查是否為受保護的 .NET 二進制文件,需先脫殼
- 問題:動態調試進程崩潰:啟用反反調試機制,使用
--anti-anti-debug標誌
參考資源
授權
MIT License