首先讲一下理论哈
一、 LLVM是什么?
(1)LLVM是lowlevel virtual machine的简称,是一个编译器框架。苹果公司的Xcode 4.0之后用的都是LLVM编译器。
(2)LLVM 诞生于2003.10伊利诺伊大学香槟分校,创始人ChrisLattner,现任苹果公司『开发者工具』部门的主管。
二、 LLVM-Obfuscator 是什么?
LLVM-Obfuscator 是瑞士西北应用科技大学安全实验室针对LLVM编译组件开发的代码混淆工具,该工具完全开源,目的是为了增加逆向工程的难度,保证代码的安全性。
三、下载及编译
下载地址
目前最新版的是4.0的,下载地址是 https://github.com/obfuscator-llvm/obfuscator/tree/llvm-4.0,也可以用 git 下载。
安装 cmake
OSX 下没有 cmake,需要安装,不然是不能编译 obfuscator-llvm 的。下载地址是:http://www.cmake.org/download,我下的版本是3.4.3。下载完成之后,进入到解压之后目录下,输入以下命令进行安装
1sudo ./bootstrap && sudo make && sudo make install
编译
$ 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
编译成功之后 clang 在 build 下的 bin 目录。
四、集成XCODE
修改 xcplugin
首先复制一个 Obfuscator.xcplugin
$ 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(作用:将1.0.xcplugin复制到Obfuscator.xcplugin)
$ cd Obfuscator.xcplugin/Contents/
$ sudo plutil -convert xml1 Info.plist(检查xml1语法并将其转为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
修改 xcspec
执行如下命令
$ sudo plutil -convert binary1 Info.plist(检查并将binary1转为Info.plist)
$ cd Resources/
$ sudo mv Clang\ LLVM\ 1.0.xcspec Obfuscator.xcspec(改变1.0.xcspec所在目录为Obfuscator.xcspec)
$ sudo vim Obfuscator.xcspec(编辑Obfuscator.xcspec)
将以下键值修改一下
(画重点!!!!!
)
Description
Apple LLVM 8.0 compiler -> Obfuscator 4.0 compiler
ExecPath
clang -> /path/to/obfuscator_bin/clang
Identifier
com.apple.compilers.llvm.clang.1_0 -> com.apple.compilers.llvm.obfuscator.4_0
Name
Apple LLVM 8.0 -> Obfuscator 4.0
Vendor
Apple -> HEIG-VD
Version
7.0 -> 4.0
修改 English.lproj
$ cd English.lproj/
$ sudo mv Apple\ LLVM\ 5.1.strings "Obfuscator 3.4.strings"(将Apple\ LLVM\ 5.1.strings放到Obfuscator 3.4.strings)
$ sudo plutil -convert xml1 Obfuscator\ 3.4.strings(将xml转为Obfuscator\ 3.4.strings)
$ sudo vim Obfuscator\ 3.4.strings(编辑Obfuscator\ 3.4.strings)
将以下键值修改一下
(这里也有一个重点就是你要看一下你自己的版本,不要直接COPY
命令 LS)
Description
Apple LLVM 8.0 compiler -> Obfuscator 4.0 compiler
Name
Apple LLVM 8.0 -> Obfuscator 4.0
Vendor
Apple -> HEIG-VD
Version
7.0 -> 4.0
最后执行以下命令就大功告成了
$ sudo plutil -convert binary1 Obfuscator\ 3.4.strings
接下来就可以调通了
参考了很多资料,下面吧链接给出
Installation · obfuscator-llvm/obfuscator Wiki · GitHub
hacker-obfuscator-llvm-xcode集成配置
GitHub - obaby/xcode-obfuscator-llvm-plugin: Xcode obfuscator-llvm plugin
Android LLVM-Obfuscator C/C++ 混淆编译的深入研究 - CSDN博客
iOS混淆--OLLVM在iOS中的实践 | DragonFly的博客
有错的地方希望大家指出,共同进步