xcode 10.1 obfuscator 代码混淆 史上最全爬坑路

代码混淆有好几种 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中的对应内容:
com.apple.compilers.clang -> com.apple.compilers.obfuscator  
Clang LLVM 1.0 Compiler Xcode Plug-in -> Obfuscator Xcode Plug-in

$ 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

你可能感兴趣的:(xcode 10.1 obfuscator 代码混淆 史上最全爬坑路)