【几维安全】iOS编译器产品使用说明书
的有关信息介绍如下:
安全编译器是一款面向互联网企业和个人开发者提供的源代码加密工具,与普通编译器相似,可将C、C++、Objective-C等源代码编译成二进制代码,不同之处在于,安全编译器在编译的时候,能够对代码逻辑进行混淆、变形、膨胀等加密处理,同时还能够对敏感的字符串进行加密保护 。从而避免被IDA Pro等破解工具反编译代码,窃取核心技术。
安全编译器支持iOS项目[APP、动态库、静态库]和安卓NDK项目[SO动态库、静态库]!
1. 安装编译器
1.确保已安装Xcode
2.解压kiwisec-obfuscator-xcode-XXXX.zip文件
3.将文件夹KiwiSecSet.xcplugin拷贝到目录/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins下,如图所示:
4.重启Xcode(完全退出)
5.检查是否安装成功,出现编译器选项即为安装成功:
2、编译器使用
2.1. 关键词解释
-kce-fla
横向膨胀
将每一个basic block 分开然后用switch statment来进行运行流程的控制
-kce-bcf
纵向膨胀
复制原方程里的basic block并且混入无用的指令,在方程开始启示部位加入条件转移指令以已有两个basic block为分支
__attribute__((optnone))
标签
指定方程打上标签后会保证被混淆
2.2. 设置选择几维安全编译器
在”Build Setting->Build Options->Compiler for C/C++/Objective-C”中选择KiwiSec LLVM (Version);
2.2. 设置混淆强度
混淆强度调整选项为Xocde中指定-kce-fla和-kce-bcf,强度以数值大小向上增强(默认强度为-kce-fla=1 -kce-bcf=50)。
主要CFlags和C++Flags都要设置
-kce-fla=xx(上限为5)
-kce-bcf=xx(上限为99)
如图:
如果找不到参考下面设置方式
2.4. 指定函数强制混淆
强制指定函数混淆,打标签后的函数必定混淆,混淆强度默认是-kce-fla=3,-kce-bcf=99(无法更改),在需要混淆的函数头部加上标签__attribute__((optnone)):
2.4.1. 函数声明:
C/C++ 示例:
int main(int argh,char **argv) __attribute__((optnone)){
printf(“Hello,World!”);
return 0;
}
Object-C 示例:
- (void) __attribute__((optnone)) didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
3.注意事项
1.注意关闭项目的bitcode选项
2.注意不要修改默认Xcode目录路径,标准路径为/Applications/Xcode.app/Contents/…….,如果修改为类似/Applications/Xcode9.app/Contents,会导致找不到编译器。
3.如果出现C++链接问题,如图:
请在链接标签上面进行设置:-lstdc++,如图
4、如果加密的是静态库,请在使用该静态库的项目里面链接clang-lib目录下的libclangrt.all.a静态库保证不出现链接问题,如图
5.如果出现:
/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/KiwiSecSet.xcplugin/Contents/kiwisec/clang: Permission denied
或者
/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/KiwiSecSet.xcplugin/Contents/clang: Permission denied
请给设置clang具有可执行权限,到clang目录下执行chmod 744 clang
4. 卸载编译器
删除目录
/Application/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins下的KiwiSecSet.xcplugin之后重启Xcode即可
5、编译效果图
混淆前:
混淆后:



