背景
參考博客實現了基於腳本的函數名混淆,現需進一步混淆頭文件(.h 檔)中的類名、屬性、方法聲明等,詢問現有腳本是否支持或需重構工具鏈。
推薦方案:ZMConfuse
GitHub 開源專案 ZMConfuse 提供了完整的 iOS 代碼混淆方案,涵蓋:
- 類名、方法名、屬性名、協議名混淆
- 頭文件(.h/.hpp)與實現文件(.m/.mm)同步混淆
- 支持 CocoaPods 依賴庫排除、白名單配置
- 基於 Python 腳本,易於集成到 Xcode Build Phases
集成步驟
- Clone 專案:
git clone https://github.com/zhengmin1989/ZMConfuse.git
- 根據
confuse.sh 配置專案路徑、白名單(保留系統框架、第三方庫符號)。
- 在 Xcode Target 的 Build Phases 中添加 Run Script,調用混淆腳本(建議放在 Compile Sources 之前)。
- 編譯運行,檢查生成的
confuse.h 映射表,確認關鍵符號未被誤混淆。
注意事項
- 混淆屬於編譯時操作,不影響源碼管理,建議僅在 Release 配置下啟用。
- 涉及 Runtime 動態調用(如 KVC、KVO、JSON 序列化)的類/屬性需加入白名單。
- 定期更新工具以適配新版 Xcode 與 Swift 混編項目。
