Hikari代码混淆

2020.01.14 此方法早已无法使用,原作者也不再更新

下载pkg安装文件:
https://github.com/HikariObfuscator/Hikari/releases

安装成功Toolchains会出现Hikari选项


Hikari代码混淆_第1张图片
image.png

将项目中所有target(包括pod进来的三方库)Enable Index-While-Building Functionality设为NO


Hikari代码混淆_第2张图片
image.png
Hikari代码混淆_第3张图片
image.png

三方库target忘记设置的话会报如下两个错误:
-index-store-path
cannot specify -o when generating multiple output files

Optimization Level 的值设置为 None[-O0]

在 Build Settings -> Other C Flags 中加入混淆标记
-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代码混淆_第4张图片
image.png

编译。
编译完成后混淆就完成了,可以用hopper工具进行对比

ps:我用的xcode10,Hikari.xctoolchain的clang版本太低,会出现如下报错:


image.png

进入/资源库/Developer/Toolchains/,找到Hikari.xctoolchain右键显示包内容,进入usr/lib/clang,里面有两个文件夹,分别是7.0.0和10.0.0,把7.0.0删除,把10.0.0重命名为7.0.0,编译就通过了

你可能感兴趣的:(Hikari代码混淆)