代码混淆有好几种 llvm-obfuscator 这是免费的,其他的都是收费的一个app一年5W 不是有实力的公司就别想了 ,按照这样的市场情况,我写这篇文章也值几百大洋呢
1、首先下载源码,编译OLLVM混淆器
$ git clone -b llvm-4.0 https://github.com/obfuscator-llvm/obfuscator.git
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ../obfuscator/
$ make -j7
友情提示 make -j7 我编译一次需要3小时
网上一般都是上面这样做的 但是在 make -j7 37%这里报错,并且google都弄不出来,最后放弃了
4.0版本,在 make -j7 在58%报错
找了一个5.0版本,同样在 make -j7 在58%报错
5.0地址 https://github.com/qtfreet00/llvm-obfuscator
找了一个5.0.1版本,cmake 都报错
5.0.1地址 https://github.com/AllocAndInit/ollvm5.0.1
上帝呀 你救救处在水深火热之中的难民吧
郁闷过后继续寻找解决方案
既然mac 编译不过去 传说中的linux 是否能编译过去呢,然后找后台哥们商量了下用下服务器,很开心通过了
总结 mac编译不过去 用linux 编译,基本都能编译过去
2、配置Xcode--新建Obfuscator插件
$ cd /Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/
$ sudo cp -r Clang\ LLVM\ 1.0.xcplugin/ Obfuscator.xcplugin
$ cd Obfuscator.xcplugin/Contents/
$ sudo plutil -convert xml1 Info.plist
$ sudo vim Info.plist
修改Info.plist中的对应内容:
<string>com.apple.compilers.clang</string> -> <string>com.apple.compilers.obfuscator</string>
<string>Clang LLVM 1.0 Compiler Xcode Plug-in</string> -> <string>Obfuscator Xcode Plug-in</string>
$ sudo plutil -convert binary1 Info.plist
$ cd Resources/
$ sudo mv Clang\ LLVM\ 1.0.xcspec Obfuscator.xcspec
$ sudo vim Obfuscator.xcspec
修改ExecPath的地址为当前build/bin的地址(!重点) 刚刚编译出来的bulid 文件夹下的bin目录路径 例如 /Users/你的用户名/xxx/bulid/bin/clang
Identifier = "com.apple.compilers.llvm.clang.1_0"; -> Identifier = "com.apple.compilers.llvm.obfuscator.4_0";
Name = "Apple LLVM 8.0"; -> Name = "Obfuscator 4.0";
Description = "Apple LLVM 8.0 compiler"; -> Description = "Obfuscator 4.0";
Vendor = Apple; -> Vendor = HEIG-VD;
Version = "7.0"; -> Version = "4.0";
ExecPath = "clang"; -> ExecPath = "/path/to/obfuscator_bin/clang";
又要开始采坑了
一般网上的代码都是这样子的
$ cd English.lproj/
$ sudo mv Apple\ LLVM\ 8.0.strings "Obfuscator 4.0.strings"
$ sudo plutil -convert xml1 Obfuscator\ 4.0.strings
$ sudo vim Obfuscator\ 4.0.strings
"Description" = "Apple LLVM 8.0 Compiler"; -> "Description" = "Obfuscator 4.0";
"Name" = "Apple LLVM 8.0"; -> "Name" = "Obfuscator 4.0";
"Vendor" = "Apple"; -> "Vendor" = "HEIG-VD";
"Version" = "8.0"; -> "Version" = "4.0";
发现找不到 Apple\ LLVM\ 8.0.strings 没关系,其实每个xcode版本这个文件都是不一样的 但是开头都是以Apple 开头的 找个这个文件就可以了,往下就没啥错误了
2、下载安装配置就用网上的教程一般都没错
关键配置(网上都不提的)
红框框的 主要是在archive时候回报错 修改成如下配置就能通过 , 具体有啥影响,未知
image.png
下面这一块 至今不是太明白
使用Obfuscator-LLVM,最简单的方法是设置flags
-fla 混淆控制流
-sub 指令替换
-bcf 虚假的控制流
例如:-mllvm -fla -mllvm -sub -mllvm -bcf_loop=3 -mllvm -split
我的配置方法如下
直接在Flags->c++ 配置,如果在c flags 里面配置有可能会报arm64的错误,然后就懵逼了
直接在下面的地方 添加 -mllvm -fla -mllvm -sub -mllvm -bcf_loop=3 -mllvm -split
image.png