本文主要介紹Hikari工具混淆的使用
最近在研究馬甲包這塊愕鼓,所以涉及到混淆代碼的囤采,試了寫腳本插入垃圾代碼、生成垃圾函數寺惫、以及修改資源md5值疹吃,覺得混淆的力度還是不夠大,于是西雀。萨驶。。研究了下Hikari混淆艇肴。腔呜。
首先叁温,需要的工具,1核畴,反編譯工具Hopper膝但;2,Hikari
下載Hikari后谤草,雙擊安裝跟束,
安裝完了之后,在xcode中選擇 xcode->Toolchains->Hikari? 如圖:
然后將所有與要運行的target相關的target的Enable Index-While-Building 的值改為NO丑孩。(注意<窖纭!pod進來的庫也需要添加N卵АB灾)
關閉編譯優(yōu)化,將所有 target 的 Optimization Level 改為 None:
開啟需要的混淆選項:Build Settings->Other C Flags 中加入混淆標記:-mllvm -enable-bcfobf -mllvm -enable-cffobf -mllvm -enable-splitobf -mllvm -enable-subobf -mllvm -enable-acdobf -mllvm -enable-indibran -mllvm -enable-strcry -mllvm -enable-funcwra -mllvm -enable-allobf
具體標記解釋:
-mllvm -enable-allobf 全部啟用?
-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 啟用函數封裝
做完這些后刨肃,編譯,編譯完成后混淆就完成了箩帚。
可以發(fā)現混淆前后的包不一樣大小真友,這是正常的。
如果你想看編譯結果紧帕,可以使用反編譯工具Hopper去反編譯查看盔然,具體Hopper使用方法下一篇文章介紹吧。