要在Xcode中使用O-LLVM,必须要编写一个Xcode插件。
首先
1 2 3 4 5
| $ 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
| <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 3 4
| $ sudo plutil -convert binary1 Info.plist $ 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
| <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>7.0</string> -> <string>4.0</string>
|
然后:
1 2 3 4
| $ cd English.lproj/ $ sudo mv Apple\ LLVM\ 5.1.strings "Obfuscator 3.4.strings" $ sudo plutil -convert xml1 Obfuscator\ 3.4.strings $ sudo vim Obfuscator\ 3.4.strings
|
更改:
1 2 3 4 5 6 7 8
| <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>7.0</string> -> <string>4.0</string>
|
然后:
1
| $ sudo plutil -convert binary1 Obfuscator\ 3.4.strings
|
完成以上操作后重启Xcode,然后随便打开一个project,在Build Settings中更换新的编译器:

将默认的编译器选项更换成Obfuscator 4.0(当然,根据你们git-clone下来的版本为准)。
然后
我们可以添加你想要的混淆方式的标志

目前O-LLVM提供的方式有三种,分别是
指令替换 -mllvm -sub
控制流伪造 -mllvm -bcf
控制流平展 -mllvm -fla
具体的替换模式请查阅官方WIKI