2021-01-01 00:00:00
zl
iOS混淆筆記
入職新公司,沒有帶筆記,結果就N臉懵了,記在掘金方便往后查找。
混淆:
下載安裝鏈接:https://github.com/HikariObfuscator/Hikari/releases
將Hikari.xctoolchain解壓到~/Library/Developer/Toolchains/ 或/Library/Developer/Toolchains/ 即可。區別是前者只有當前用戶可用,后者所有用戶都可使用
1.選擇Xcode -> Toolchains -> HikariObfuscator將混淆工具和項目關聯。
2.將所有與要運行的target相關的target(包括pod進來的庫)Enable Index-While-Building 的值改為NO。
3.Optimization Level 的值設置為 None[-O0]
3.如果是全局混淆,則在需要混淆的target中直接將Other C Flags的值加上所需的混淆標記
Other C Flags
- 每個flag前加需要上-mllvm
一般添加以下三種標記:
-mllvm -enable-fco
-mllvm -enable-funcwra
-mllvm -enable-strcry
-mllvm -enable-acdobf
4.編譯即可完成混淆
其余全部標記:
-mllvm -enable-bcfobf 啟用偽控制流
-mllvm -enable-cffobf 啟用控制流平坦化
-mllvm -enable-splitobf 啟用基本塊分割
-mllvm -enable-subobf 啟用指令替換
-mllvm -enable-acdobf 啟用反class-dump
-mllvm -enable-indibran 啟用基于寄存器的相對跳轉,配合其他加固可以徹底破壞IDA/Hopper的偽代碼(俗稱F5)
-mllvm -enable-strcry 啟用字符串加密
-mllvm -enable-funcwra 啟用函數封裝
-mllvm -enable-allobf 依次性啟用上述所有標記
- 如果無法提審:正常使用Hikari工具鏈編譯后刪除IPA的Info.plist下的
DefaultToolchainOverrideInfo
。然后重啟Xcode和Organizer。
對于代碼信息的修改,可以使用KLGenerateSpamCode程序,根據文檔提示進行修改。
Github地址: https://github.com/klaus01/KLGenerateSpamCode
對于各功能的使用,需要注意順序。
刪除空行和注釋可能存在少部分代碼的誤刪。
項目過于復雜不建議修改類文件前綴,可能產生未知bug。部分目錄修改前綴也不可取,未在目錄內的引用不會更改,需要手動更改。
垃圾代碼生成器,使用工具ChaosTool
下載地址:https://www.yaozuopan.top
/* 支持返回值/屬性/參數類型 **/:NSString/NSArray/NSData/NSDictionary/UIImage 最好刪除UIimage,否則部分垃圾代碼容易產生報錯