几维资讯> 行业资讯

几维安全iOS编译器产品注意事项!

几维安全 2018-01-09 18:11:49  3641
分享到:

安装iOS编译器

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下,如图1所示:

iOS编译器.png

1

4.重启Xcode(完全退出)

5.检查是否安装成功,出现编译器选项即为安装成功:

iOS编译器1.jpg

图2

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.3.  设置混淆强度

混淆强度调整选项为Xocde中指定-kce-fla-kce-bcf,强度以数值大小向上增强(默认强度为-kce-fla=1 -kce-bcf=50)。

主要CFlagsC++Flags都要设置

-kce-fla=xx(上限为5)

-kce-bcf=xx(上限为99)

如图:3

iOS编译器3.png

3

如果找不到参考下面设置方式

iOS编译器4.png

图4

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++链接问题,如图5

iOS编译器5.png

图5

请在链接标签上面进行设置:-lstdc++,如图6

iOS编译器6.png

图6

4.如果加密的是静态库,请在使用该静态库的项目里面链接clang-lib目录下的libclangrt.all.a静态库保证不出现链接问题,如图7

iOS编译器7.png

图7

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.      编译效果图

混淆前:

iOS编译器8.jpg

混淆后:

iOS编译器9.jpg


分享到:



《安卓应用加密》 《Unity3D手游加密》 《源代码加密》 《移动端的KiwiVM虚拟机》