美文网首页iOS 深度好文
利用Obfuscator-LLVM在iOS中实现混淆

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

作者: the宇亮 | 来源:发表于2018-07-05 13:37 被阅读517次

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

相关文章

网友评论

  • TokapoNzld:试了试,编译超慢的,很小的一个工程,两个小时都编译不好,楼主又遇到过嘛
    the宇亮:@TokapoNzld 那可能是你的工程比较大,我只设置一个参数,不会编译这么久。 -bcf_prob默认是30,你可以改小点设置成 -bcf_prob=10,可能会快点。
    TokapoNzld:@the宇亮 就设置一个参数 -mllvm -bcf ,然后编译两个多小时多还没编译好
    the宇亮:编译的快慢和设置的参数有关,你是怎么设置的?我用的时候,-bcf_loop 和 -bcf_prob设的比较大就会很慢。

本文标题:利用Obfuscator-LLVM在iOS中实现混淆

本文链接:https://www.haomeiwen.com/subject/wfauuftx.html