首先講一下理論哈
一获洲、 LLVM是什么?
(1)LLVM是lowlevel virtual machine的簡(jiǎn)稱(chēng),是一個(gè)編譯器框架。蘋(píng)果公司的Xcode 4.0之后用的都是LLVM編譯器讼渊。
(2)LLVM 誕生于2003.10伊利諾伊大學(xué)香檳分校,創(chuàng)始人ChrisLattner尊剔,現(xiàn)任蘋(píng)果公司『開(kāi)發(fā)者工具』部門(mén)的主管爪幻。
二、 LLVM-Obfuscator 是什么?
LLVM-Obfuscator 是瑞士西北應(yīng)用科技大學(xué)安全實(shí)驗(yàn)室針對(duì)LLVM編譯組件開(kāi)發(fā)的代碼混淆工具,該工具完全開(kāi)源挨稿,目的是為了增加逆向工程的難度仇轻,保證代碼的安全性。
三奶甘、下載及編譯
下載地址
目前最新版的是4.0的篷店,下載地址是 https://github.com/obfuscator-llvm/obfuscator/tree/llvm-4.0,也可以用 git 下載甩十。
安裝 cmake
OSX 下沒(méi)有 cmake船庇,需要安裝,不然是不能編譯 obfuscator-llvm 的侣监。下載地址是:http://www.cmake.org/download,我下的版本是3.4.3臣淤。下載完成之后橄霉,進(jìn)入到解壓之后目錄下,輸入以下命令進(jìn)行安裝
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
首先復(fù)制一個(gè) 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復(fù)制到Obfuscator.xcplugin)
$ cd Obfuscator.xcplugin/Contents/
$ sudo plutil -convert xml1 Info.plist(檢查xml1語(yǔ)法并將其轉(zhuǎn)為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
執(zhí)行如下命令
$ sudo plutil -convert binary1 Info.plist(檢查并將binary1轉(zhuǎn)為Info.plist)
$ cd Resources/
$ sudo mv Clang\ LLVM\ 1.0.xcspec Obfuscator.xcspec(改變1.0.xcspec所在目錄為Obfuscator.xcspec)
$ sudo vim Obfuscator.xcspec(編輯Obfuscator.xcspec)
將以下鍵值修改一下
(畫(huà)重點(diǎn)!R降酢G!卿堂!
)
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轉(zhuǎn)為Obfuscator\ 3.4.strings)
$ sudo vim Obfuscator\ 3.4.strings(編輯Obfuscator\ 3.4.strings)
將以下鍵值修改一下
(這里也有一個(gè)重點(diǎn)就是你要看一下你自己的版本束莫,不要直接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
最后執(zhí)行以下命令就大功告成了
$ sudo plutil -convert binary1 Obfuscator\ 3.4.strings
接下來(lái)就可以調(diào)通了
參考了很多資料,下面吧鏈接給出
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中的實(shí)踐 | DragonFly的博客
有錯(cuò)的地方希望大家指出草描,共同進(jìn)步