ar — archive library builder
bzip2 — bzip2 command for distribution generation
bunzip2 — bunzip2 command for distribution checking
chmod — change permissions on a file
cat — output concatenation utility
cp — copy files
date — print the current date/time
echo — print to standard output
egrep — extended regular expression search utility
find — find files/dirs in a file system
grep — regular expression search utility
gzip — gzip command for distribution generation
gunzip — gunzip command for distribution checking
install — install directories/files
mkdir — create a directory
mv — move (rename) files
ranlib — symbol table builder for archive libraries
rm — remove (delete) files and directories
sed — stream editor for transforming output
sh — Bourne shell for make build scripts
tar — tape archive for distribution generation
test — test things in file system
unzip — unzip command for distribution checking
zip — zip command for distribution generation
Hikari Obfuscator
Hikari Obfuscator 是一款出色的代码编译混淆器,作用在xcode的build阶段,若使用不当可能会影响App性能。
简介
源码地址
Hikari比Obfuscator-LLVM有一些额外的自定义构建通道和(希望不是)bug。测试是通过在作者的项目WallpaperKit上运行Hikari来完成的。
安装
安装详情
前置条件
安装前,先确认自己的系统已经安装了以下的软件,主要是用来辅助编译Hikari。
另外,你的编译Hikari的环境,应该具有常用的Unix实用程序,例如:
macOS 快速安装
安装常见问题
Hikari应用
官方文档
改变工具链
打开xcode -> 点击左上角的Xcode菜单 -> 选择下拉菜单中的Toolchains -> 选择扩展菜单中的Hikari
用法
xcode项目配置切换到Build Settings
index
, 将Enable index-while-Building Functionality
设为No
。bitcode
,将Eanble BitCode
设为No
。level
,将Optimization Level
设为None[-o0]
。cflags
,在Other C++ Flags
后面追加混淆规则。注意,这里的混淆规则是追加,不应该覆盖默认的选项,不然会出错。Unity项目打包出来的项目一般是以C++为主。混淆规则
官方解释
这里的混淆规则都是随机的,默认为30%。我们也可以自定义随机概率:
提交到appStore
官方做法
将
~/Library/Developer/Toolchains/Hikari.xctoolchain/usr
覆盖到/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr
,注意覆盖前要备份原有的usr
文件夹。将archive里面plist.list文件中的
DefaultToolchainOverrideInfo
删除掉。若是可视化打包,要重启xcode。常见问题
Enable index-while-Building Functionality
没有设为No
。cflags
阶段混淆配置覆盖了默认配置。Optimization Level
没有设为None[-o0]
。CFLAGS
或者CPLUSPLUSFLAGS
。脚本打包命令
参数配置简单的解释如下:
混淆配置详解
1. 不加入任何混淆规则配置
在不设置混淆配置的时候,编译器Xcode 10.1和Hikari性能表现相同。
2. -enable-strcry (启用字符串加密)
3. -enable-bcfobf (启用伪控制流)
4. -enable-cffobf (启用控制流扁平化)
5. -enable-splitobf (启用基本块拆分)
6. -enable-subobf (启用指令替换)
7. -enable-acdobf (启用反类转储机制)
8. -enable-indibran (启用基于寄存器的相对跳转)
会报错,报错信息:
9. -enable-funcwra (启用函数包装器)
会报错,报错信息:
10. -enable-allobf (启用所有混淆规则)
会报错,报错信息: