Android 有各種加密混淆工具敞临,現(xiàn)在iOS逆向也在發(fā)展态辛,自然也有對應的混淆工具應運而生。
利用混淆工具挺尿,可以更好地保護我們的代碼奏黑,不被輕松地惡意分析破解。
混淆工具主要優(yōu)點是:
1票髓,無須變動項目源碼攀涵。
2,功能靈活可選洽沟,根據(jù)需要自由組合
目前的不足主要是:
1以故,會導致安裝包體積增大。
2裆操,混淆代碼會被編譯優(yōu)化掉怒详。
3炉媒,提審存在被拒的風險。
這里介紹的是張總寫的工具:Hikari
下載地址:https://github.com/HikariObfuscator/Hikari/releases
下載完成昆烁,將 Hikari.xctoolchain 解壓到~/Library/Developer/Toolchains/ 或 /Library/Developer/Toolchains/ 都可以吊骤。
現(xiàn)在新版本張總已經(jīng)打包成安裝器了,應該直接安裝即可静尼。我是之前下載的老版本白粉,這里選擇前者,只對當前用戶可用鼠渺。
接著势篡,在 Xcode->Toolchains中换衬,選擇 HikariObfuscator
然后將所有與要運行的target相關的target的Enable Index-While-Building 的值改為NO。
否則編譯會報錯: error: cannot specify -o when generating multiple output files
。
還需要關閉編譯優(yōu)化站玄,將所有 target 的 Optimization Level 改為 None:
然后通過編譯參數(shù)笨腥,開啟需要的混淆選項帐萎,在 Other C Flags
里面加表悬。
可用參數(shù)如下:
-mllvm -enable-allobf 全部啟用
-mllvm -enable-bcfobf 啟用偽控制流
-mllvm -enable-cffobf 啟用控制流平坦化
-mllvm -enable-splitobf 啟用基本塊分割
-mllvm -enable-subobf 啟用指令替換
-mllvm -enable-acdobf 啟用反class-dump
-mllvm -enable-indibran 啟用基于寄存器的相對跳轉(zhuǎn),配合其他加固可以徹底破壞IDA/Hopper的偽代碼(俗稱F5)
-mllvm -enable-strcry 啟用字符串加密
-mllvm -enable-funcwra 啟用函數(shù)封裝
這里測試了幾種:
1沼侣,字符串加密
可以看到祖能,混淆前在 IDA 里面,字符串清晰可見华临,混淆后字符串基本沒影了芯杀。
2,函數(shù)封裝
原本簡單的一個函數(shù)雅潭,現(xiàn)在變成一大串結(jié)構(gòu)揭厚。
3,偽控制流
本來沒有控制流程的扶供,增加了好幾個跳轉(zhuǎn)流程筛圆。
4,控制流平坦化
騰訊安全博客的圖效果更佳突出椿浓,無恥地盜圖了: