Xcode集成O-LLVM

作者: 眯大帅 | 来源:发表于2017-09-19 14:43 被阅读329次

获取O-LLVM源码

$ 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

要在Xcode中使用O-LLVM,必须要编写一个Xcode插件。

首先

$ 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

更改

<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>

不懂vim操作的同学请自行百度。

然后:

$ sudo plutil -convert binary1 Info.plist
$ cd Resources/
$ sudo mv Clang\ LLVM\ 1.0.xcspec Obfuscator.xcspec
$ sudo vim Obfuscator.xcspec

更改:

<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>

然后:

$ 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 

更改:

<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>

然后:

$ sudo plutil -convert binary1 Obfuscator\ 3.4.strings

完成以上操作后重启Xcode,然后随便打开一个project,在Build Settings中更换新的编译器:

image.png

将默认的编译器选项更换成Obfuscator 4.0(当然,根据你们git-clone下来的版本为准)。

然后
我们可以添加你想要的混淆方式的标志

image.png

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

具体的替换模式请查阅官方WIKI

相关文章

网友评论

  • 小鱼人_1d45:iphonesimulator/LibHNLogic.build/DerivedSources -F/Users/vegeance/TianTaiKaMi/clientcode/common/libs -stdlib=libc++ -c /Users/vegeance/TianTaiKaMi/clientcode/common/LibHNLogic/HNPlatformLogic/HNPlatformSpreadManager.cpp -o /Users/vegeance/Library/Developer/Xcode/DerivedData/MixProject-enqaofqhwwnvtpcsvnhdmcbgepyz/Build/Intermediates.noindex/LibHNLogic.build/Debug-iphonesimulator/LibHNLogic.build/Objects-normal/x86_64/HNPlatformSpreadManager.o

    In file included from /Users/vegeance/TianTaiKaMi/clientcode/common/LibHNLogic/HNPlatformLogic/HNPlatformSpreadManager.cpp:3:
    /Users/vegeance/TianTaiKaMi/clientcode/common/LibHNLogic/HNPlatformLogic/HNPlatformSpreadManager.h:7:10: fatal error: 'string' file not found
    #include <string>
    ^~~~~~~~
    1 error generated.
    Command /Users/vegeance/build/bin/clang-4.0 failed with exit code 1
    根本编译不过啊,8.33和9.2都编译不过,为什么基础库会报错??????急,在线等。。

本文标题:Xcode集成O-LLVM

本文链接:https://www.haomeiwen.com/subject/stwwsxtx.html