解压Obfuscator-xcplugin
目录内的文件,得到Obfuscator.xcplugin.zip
1.The Unarchiver
直接解压
2.使用cat
命令
cat xc* > file.zip
打开file.zip
得到Obfuscator.xcplugin.zip
解压Obfuscator.xcplugin.zip
得到Obfuscator.xcplugin
将Obfuscator.xcplugin
放入
/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/
1.New File...
2.iOS
3.Other
4.Configuration Settings File
Config.xcconfig
内填写
GCC_VERSION = com.apple.compilers.llvm.obfuscator.4_0
COMPILER_INDEX_STORE_ENABLE = NO
OTHER_CFLAGS = -mllvm -bcf -mllvm -fla -mllvm -sub
PROJECT
内configurations
选择Config.xcconfig
-mllvm -bcf
-mllvm -bcf_loop=1
-mllvm -fla
-mllvm -split
-mllvm -split_num=1
-mllvm -sub
-mllvm -sub_loop=1
static NSString* method(id param) __attribute((__annotate__(("bcf fla split sub"))));
插件是通过obfuscator生成的。
Hopper Disassembler
打开编译后的二进制查看对比。
xcconfig
可以通过cocoaPods
配置,动态的对核心库,核心代码做混淆。
打开分支hikarich
,按解压步骤获取Obfuscator.xcplugin-hikarich.zip
,解压后放入
/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/
Hikari
目前支持下文所述的编译器标记
-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
一次性启用前文所述的所有标记。
注意:不支持指定方法混淆,混淆指令可能会被Release优化。