本文主要介绍Hikari工具混淆的使用
最近在研究马甲包这块,所以涉及到混淆代码的,试了写脚本插入垃圾代码、生成垃圾函数、以及修改资源md5值,觉得混淆的力度还是不够大,于是。。。研究了下Hikari混淆。。
首先,需要的工具,1,反编译工具Hopper;2,Hikari
下载Hikari后,双击安装,

安装完了之后,在xcode中选择 xcode->Toolchains->Hikari 如图:

然后将所有与要运行的target相关的target的Enable Index-While-Building 的值改为NO。(注意!!pod进来的库也需要添加!!)

关闭编译优化,将所有 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 启用函数封装
做完这些后,编译,编译完成后混淆就完成了。
可以发现混淆前后的包不一样大小,这是正常的。
如果你想看编译结果,可以使用反编译工具Hopper去反编译查看,具体Hopper使用方法下一篇文章介绍吧。
网友评论