obfuscator-llvm 是一个开源的代码混淆编译器,能够使编译出来的文件添加垃圾代码和各种跳转流程,给逆向分析者增加难度。
(1) 下载
目前最新版的是4.0的,下载地址是: https://github.com/obfuscator-llvm/obfuscator/tree/llvm-4.0,也可以用 git 下载。
(2) 安装 cmake
OSX 下没有 cmake,需要安装,不然是不能编译 obfuscator-llvm 的。下载地址是:http://www.cmake.org/download,我下的版本是3.4.3。下载完成之后,进入到解压之后目录下,输入以下命令进行安装
| 
 1 
2 
 | 
 sudos ./bootstrap && sudo make && sudo make install 
 | 
(3) 编译
| 
 1 
2 
3 
4 
5 
6 
 | 
 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 目录。
(1) 修改 Info.plist
首先复制一个 Obfuscator.xcplugin:
| 
 1 
2 
3 
4 
5 
6 
 | 
 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 
 | 
将以下键值修改一下:
| 
 1 
2 
3 
 | 
 <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> 
 | 
修改完成,执行以下命令:
| 
 1 
2 
 | 
 sudo plutil -convert binary1 Info.plist 
 | 
(2) 修改 xcspec
执行如下命令:
| 
 1 
2 
3 
4 
 | 
 cd Resources/ 
sudo mv Clang\ LLVM\ 1.0.xcspec Obfuscator.xcspec 
sudo vim Obfuscator.xcspec 
 | 
将以下键值修改一下:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
 | 
 <key>Description</key> 
<string>Apple LLVM 8.0 compiler</string> -> <string>Obfuscator 4.0 compiler</string> 
<key>ExecPath</key> 
<string>clang</string> -> <string>/path/to/obfuscator_bin/clang</string> 
<key>Identifier</key> 
<string>com.apple.compilers.llvm.clang.1_0</string> -> <string>com.apple.compilers.llvm.obfuscator.4_0</string> 
<key>Name</key> 
<string>Apple LLVM 8.0</string> -> <string>Obfuscator 4.0</string> 
<key>Vendor</key> 
<string>Apple</string> -> <string>HEIG-VD</string> 
<key>Version</key> 
<string>8.0</string> -> <string>4.0</string> 
 | 
(3) 修改 strings
执行如下命令:
| 
 1 
2 
3 
4 
5 
 | 
 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 
 | 
将以下键值修改一下:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
 | 
 <key>Description</key> 
<string>Apple LLVM 8.0 compiler</string> -> <string>Obfuscator 4.0 compiler</string> 
<key>Name</key> 
<string>Apple LLVM 8.0</string> -> <string>Obfuscator 4.0</string> 
<key>Vendor</key> 
<string>Apple</string> -> <string>HEIG-VD</string> 
<key>Version</key> 
<string>8.0</string> -> <string>4.0</string> 
 | 
最后执行以下命令:
| 
 1 
2 
 | 
 $ sudo plutil -convert binary1 Obfuscator\ 4.0.strings 
 | 
(4) 修改 Xcode 的编译设置
打开 Xcode,选择一个项目,修改 Build Setting 的 GCC_VERSION 为 Obfuscator 4.0,如图下图所示:

然后添加 obfuscation flags

混淆之后,用静态工具分析效果如下图:

原文地址: https://www.exchen.net/ios-hacker-obfuscator-llvm-xcode%E9%9B%86%E6%88%90%E9%85%8D%E7%BD%AE.html
原文:https://www.cnblogs.com/exchen/p/10352687.html