一、简介
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 目录。
三、集成到 Xcode 使用
(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
四、效果
混淆之后,用静态工具分析效果如下图:
转载请注明:exchen's blog » [iOS Hacker] obfuscator-llvm Xcode集成配置