利用Obfuscator-LLVM在iOS中实现混淆

1.整体流程
开源项目Obfuscator-LLVM是一个带有混淆功能的编译器,是在编译阶段做混淆。
我们需要下载并编译项目;制作xcode编译器插件;把插件中编译器的执行文件指向编译好的Obfuscator-LLVM的bin目录下的可执行文件Clang;重启Xcode后,修改编译器为这个新的编译器。
具体流程可以参考一下两个文章:
https://www.jianshu.com/p/a631b5584de6
https://www.jianshu.com/p/2451f1c276ac

2.开始前先了解下,要注意的几个问题:

  • 文章中提供的是基于LLVM 4.0的版本,在Xcode9.4下用的时候编译会报错,所以请用这个LLVM5.0版本的: https://github.com/Qrilee/llvm-obfuscator
  • cmake的安装方法可以参考 https://www.jianshu.com/p/388b21757d5d
  • 制作插件时,修改这个文件Obfuscator.xcspec的时候,ExecPath是改为刚才编译出来的可执行文件的目录,build/bin/Clang(要写绝对路径)。
  • 如果是Xcode9以上,编译会报错,需要修改Enable Index-While-Building Functionality 为NO

3.混淆编译时的参数。
-mllvm -bcf_loop=3
-mllvm -bcf_prob=90
以上这两个参数都会明显影响到编译出包的大小和编译时间。

4.如何升级ollvm请参考:
四款iOS加固工具评测 https://juejin.im/post/5ad85a70f265da5045480148
5.要了解clang和llvm的关系请参考:
深入研究Clang(一)Clang和LLVM的关系及整体架构 https://blog.csdn.net/snsn1984/article/details/17716261

6.发现之前的5.0版本的ollvm无法访问了,找到一个更新的版本6.0,且带有字符串混淆。
https://github.com/yazhiwang/ollvm-tll.git

你可能感兴趣的:(利用Obfuscator-LLVM在iOS中实现混淆)