iOS版使用说明

1.概述

本文的主要介绍iOS源码混淆保护Xcode插件的使用方式,阅读者需具备iOS开发经验,否则使用可能存在困难。

2.安装插件

Xcode插件:执行sudo ./install.sh命令安装编译器,使用完成后执行sudo ./uninstall.sh命令即可恢复原始编译器【如有多个Xcode版本,参考Ndk的方式指定特定的clang编译器进行替换】 如下图: "2-1"

Xcode插件安装完成后会看到finished installing kiwicompiler提示,如下图 "2-1"

3.指定函数加密

将include目录下的头文件拷贝到iOS项目中,并在需的地方进行引用即可,该头文件只是一个宏定义,用于标记需要加密的重要函数(如果不想标记,可以使用随机加密参数)

对需要进行混淆保护的函数,添加KIWOBF标签,以告知编译器该函数需要进行混淆编译。如下图: "2-1"

4.高级配置

如需高级加密,可自定义配置参数

加密参数说明

标识 作用 描述
-kce-fla 控制流平坦化强度 将每一个basic block分开然后用switch statment来进行运行流程的控制;取值范围是0~5,默认值1
-kce-fla-chance 控制流平坦化函数比例 针对未设置标签或未勾选的函数,进行随机加密,如果只加密标记的函数,设置0即可;取值范围是0~100,默认值15
-kce-bcf 虚假控制流强度 复制原方程里的basic block并且混入无用的指令,在方程开始开始部位加入条件转移指令,变成多个basic block分支;取值范围是0~5,默认值1
-kce-bcf-prob 控制流平坦化基本块比例 每次加密随机覆盖基本块的比例,100表示所有基本块都加密;取值范围是0~100,默认值15
-kce-bcf-chance 虚假控制流函数比例 针对未设置标签或未勾选的函数,进行随机加密,如果只加密标记的函数,设置0即可;取值范围是0~100,默认值15
-kce-mbs 轻量虚拟化 轻量虚拟化开关,在不改变原逻辑的情况下替换程序基本块的跳转,函数调用为间接跳转,防止对目标程序被静态分析 【专业版才有该功能】默认值1开启
-kce-mbs-chance 轻量虚拟化函数比例 针对未设置标签或未勾选的函数,进行随机加密,如果只加密标记的函数,设置0即可;【专业版才有该功能】取值范围是0~100,默认值0
-kce-str 字符串加密 字符串加密开关,对项目中的明文字符串进行加密保护,默认值1开启
-kce-use-unity Unity开关 设置-kce-use-unity=1,表示当前为Unity项,如果是Unity项目,不设置会编译异常。默认为0非Unity项目
-kce-use-swift Swift开关 设置-kce-use-swift=1,表示当前为Swift项目,如果是Swift项目,不设置会编译异常。默认为0非Swift项目

注意说明:Unity项目必须设置-kce-use-unity=1,Swift项目必须设置-kce-use-swift=1

可对比混淆前后可执行文件的大小,或使用IDA Pro分析实际混淆效果[参数越大,编译时间更长,如果编译时等待时间过长,建议调整参数后重新编译]

iOS项目的混淆参数在 Other C Flags,Other C++ Flags,Other Swift Flags中设置, 加密参数默认值为-kce-bcf=1 -kce-fla=1 -kce-bcf-chance=0 -kce-fla-chance=0 -kce-mbs=1 -kce-mbs-chance=0 -kce-str=1,所以无特殊需求完成上一个步骤即可开始编译。

如需高级加密,可自定义配置参数,比如:-kce-bcf=2 -kce-fla=2 -kce-bcf-chance=30 -kce-fla-chance=30 -kce-mbs=1 -kce-mbs-chance=40 如下图:

"2-1"

5.执行编译

项目编译操作和原始流程一样,iOS项目在Xcode中执行Build,NDK项目执行ndk-build即可。编译过程中可以通过日志查看加密过程信息,如下图: "2-1"

6.卸载插件

Xcode插件:执行sudo ./uninstall.sh即可自动恢复原始编译器,Xcode编译器插件卸载完成后会提示finished uninstalling kiwicompiler "2-1"

7. 加密效果参考

混淆效果参考

如遇问题请联系我们的客服或技术支持

results matching ""

    No results matching ""