KiwiCM(iOS)工具-使用文档
“KiwiCM- iOS工具”为安全编译器,是Xcode插件;
包含参数配置加密和指定函数加密两种使用方式。
请按如下步骤操作。
1.安装插件
解压下载后的“KiwiCM工具”,打开本地命令后窗口,cd至解压后的工具包路径,在非ROOT环境下执行安装指令安装插件。
python ./install.py
备注:
如果有多个Xcode版本,请修改configuration.txt文件中Xcode的使用路径,指定插件安装目标Xcode的版本。
2.切换编译器
通过菜单Xcode =>Toolchains=>SecCompile ***切换为安全编译器,打开项目。
备注:
Jenkins环境集成仅需在xcodebuild命令参数中添加 -toolchain secompiler 即可。
3.功能参数配置
可通过设置加密参数来控制加密强度,参数越大,安全性越高,但同时体积也随之增大和性能下降,如有特殊需求,请自行调整参数。
3.1 代码虚拟化等功能配置
**功能包含:控制流平展、控制流伪造、代码虚拟化、字符串加密,**使用时候需进行参数配置,若不配置,则取默认值。
- C/Object-C代码加密参数在 Build Settings > Other C Flags中设置
- C++代码加密参数在Build Settings > Other C++ Flags中设置
- Swift代码加密参数在Build Setti__ngs > Other Swift Flags中设置 __
如下图所示(以C/Object-C代码为例):
**无论是对哪种语言加密,参数均相同,**本文档以C/Object-C代码,在Build Settings > Other C Flags中配置为例进行说明。
(1)参数信息+推荐配置:
参数+推荐配置 | 作用 | 描述 |
-kce-use-unity | Unity开关 | 如果是Unity导出的Xcode项目,则需要开启。取值:1(开启)或0(关闭),默认值:0 |
-kce-bcf=1 | 控制流伪造次数 | 针对代码中的跳转语句和分支语句,随机添加条件跳转指令,模糊代码执行流程;设置为2表示对该函数循环处理2次。取值范围:0~5,默认值:1 |
-kce-bcf-chance=15 | 控制流伪造函数比例 | 进行函数随机控制流伪造,设置为50表示对该项目中50%的函数进行控制流伪造。取值范围:0~100,默认值:15 |
-kce-bcf-prob=20 | 控制流伪造基本块比例 | 函数由多个基本块构成,每次随机覆盖基本块的加密比例,100表示所有基本块都加密。取值范围:0~100,默认值:15 |
-kce-mbs=1 | 代码虚拟化 | 在不改变原逻辑的情况下,对函数中的基本块进行加密转化,并隐藏函数之间的调用关系,防止对目标程序被静态分析;设置为2表示对该函数循环处理2次。取值范围:0~5,默认值:1 |
-kce-mbs-chance=20 | 代码虚拟化函数比例 | 进行函数随机代码虚拟化,设置为50表示对该项目中50%的函数进行代码虚拟化。取值范围:0~100,默认值:0 |
-kce-mbs-inst-chance=20 | 代码虚拟化基本块比例 | 函数由多个基本块构成,每次随机覆盖基本块的加密比例,100表示所有基本块都加密。取值范围:0~100,默认值:100 |
-kce-str=1 | 字符串加密 | 字符串加密开关,对项目中的明文字符串进行加密保护默认关闭。取值:1(开启)或0(关闭),默认值:0 |
-kce-str-chance=20 | 字符串加密比例 | 对项目中的明文字符串进行随机加密的比例。100表示所有字符串都加密。取值范围:0~100,默认值:50 |
(2)推荐配置
-kce-bcf=1
-kce-bcf-prob=15
-kce-bcf-chance=20
-kce-mbs=1
-kce-mbs-chance=20
-kce-mbs-inst-chance=20
-kce-str=1
-kce-str-chance=20
3.2.反调试等动态防御功能配置
功能包含:签名校验、防越狱、防动态调试、防Hook,参数需在Other Linker Flags中参进行配置,如下图所示,若不配置,则取默认值。
(1)参数信息
参数+推荐配置 | 作用 | 描述 |
-kce-signature | 签名校验 | 运行时对签名信息进行安全校验,避免被二次打包,该值为Team ID,即 iPhone Distribution: XXX Company (KCGXXXXXXX) 中的KCGXXXXXXX。(可在Build Setting=>Development Team中查看)默认值:unlimited示例:-kce-signature=KCGXXXXXXX |
-kce-jail-debug-hook=233 | 环境检测(防越狱、防动态调试、防Hook) | 对运行环境进行安全检测,包括越狱环境、动态调试、hook攻击三种检测机制,处理结果:2忽略,3退出。比如允许在越狱手机上运行,但不允许调试和hook攻击,则设置为-kce-jail-debug-hook=233。默认值:222(含义:忽略越狱环境,忽略动态调试,忽略hook攻击)。 |
(2)推荐配置
-kce-jail-debug-hook=233
4.指定函数加密
如需对指定函数加密,请进行如下操作。
**备注:**参数配置可与指定函数加密同时进行
4.1 C/C++/ObjC指定函数加密参数
将根目录下(或include目录下)的头文件(KiwiOBF.h)拷⻉到iOS项目中,并在需的地方进行引用,对指定函数进行虚拟化保护。
4.2 Swift指定函数加密参数
通过JSON配置文件进行指定函数加密。
-kce-config为Swift指定函数加密JSON配置文件,配置文件示例如下:
{
//Swift指定函数加密json key
"kce-swift-obf-funcs" : [
{
// 指定加密函数所属类
"class" : "ViewController",
// 该类下指定加密函数列表
"funcs" : [
"test_func1"
]
},
{
// 支持内部类
"class" : "ViewController.TestClass",
"funcs" : [
"test_func2"
]
}
]
}
5.执行编译
项目编译操作和与原始流程一样,iOS项目在Xcode中执行Build,编译过程中可以通过日志查看加密过程信息。
备注:
若切换至KiwiCM编辑器后,请先清除工程历史编译记录。
6.卸载插件
解压第4步下载的“KiwiCM工具”,打开本地命令后窗口,cd至解压后的工具包路径,执行卸载指令安装插件。
cd ***
python ./uninstall.py