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
最后更新时间: 2024-11-20 17:34:45

results matching ""

    No results matching ""