關(guān)于LLVM pass 的學(xué)習(xí)(1)-- 開發(fā)準(zhǔn)備

前言:

純粹為了學(xué)習(xí),所以引用了很多人的資料诽里,不是為了指導(dǎo)他人,只是記錄這段時(shí)間的學(xué)習(xí)成果

一: 開發(fā)pass 前的準(zhǔn)備

1: 獲取LLVM源碼

git clone [http://llvm.org/git/llvm.git](http://llvm.org/git/llvm.git)
git clone [http://llvm.org/git/clang.git](http://llvm.org/git/clang.git) llvm/tools/clang
git clone [http://llvm.org/git/clang-tools-extra.git](http://llvm.org/git/clang-tools-extra.git) llvm/tools/clang/tools/extra
git clone [http://llvm.org/git/compiler-rt.git](http://llvm.org/git/compiler-rt.git) llvm/projects/compiler-rt

或者也可以獲取Ollvm 的源碼
https://github.com/obfuscator-llvm/obfuscator
其他的還有交大維護(hù)的孤挺花(Armariris)項(xiàng)目
clone git@github.com:gossip-sjtu/Armariris.git
最好的選擇是張總的Hikari 項(xiàng)目
https://github.com/HikariObfuscator/Hikari/releases

2:編譯成xcode項(xiàng)目

mkdir build
cd build
// 使用編譯器cmake 創(chuàng)建xcode 項(xiàng)目赏殃,項(xiàng)目地址在llvm目錄下
cmake -G Xcode CMAKE_BUILD_TYPE="Debug" ../llvm
open LLVM.xcodeproj

其中ollvm的編譯流程

mkdir obf
cd obf
clone [git@github.com](mailto:git@github.com):gossip-sjtu/Armariris.git
cmake -DCMAKE_BUILD_TYPE:String=Release ./Armariris
make -j4

3: pass 中結(jié)構(gòu)劃分
在LLVM中
Module: 程序的基本單位是模塊(Module),比如一個(gè).c或.cpp文件
Function: 函數(shù)是模塊的基本組成單位华嘹,代表文件中的一個(gè)函數(shù)奖地,所以一個(gè)Module由一個(gè)或多個(gè)函數(shù)組成橄唬。
BasicBlock: 函數(shù)的基本組成單位 (每個(gè)函數(shù)會(huì)被劃分為一些block,它的劃分標(biāo)準(zhǔn)是:
一個(gè)block只有一個(gè)入口和一個(gè)出口所以一個(gè)Function由一個(gè)或多個(gè)Basic Block組成)
Instructions: 指令是Basic Block的基本組成單位参歹,所以一個(gè)Basic Block由一個(gè)或多個(gè)Instructions組成


關(guān)系圖

二: 開發(fā)流程

1 我們需要繼承指定的pass
比如:
struct functionObfuscation : public FunctionPass
2 實(shí)現(xiàn)其中的方法
virtual bool runOnFunction(Function &F)
3 需要將我們自己寫的pass 注冊(cè)
static RegisterPass<functionObfuscation> X(“funcobf", "Hello World Pass");
4 編譯我們自己的pass稱為動(dòng)態(tài)庫(kù)
opt -load path/to/LLVMPassDemo.dylib -funcobf -time-passes -disable-output test.bc
其中動(dòng)態(tài)庫(kù)就是存放編譯后我們寫的pass, funcobf選項(xiàng)就是指運(yùn)行functionObfuscation這個(gè)pass

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末仰楚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子犬庇,更是在濱河造成了極大的恐慌僧界,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件臭挽,死亡現(xiàn)場(chǎng)離奇詭異捂襟,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)埋哟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門笆豁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人赤赊,你說(shuō)我怎么就攤上這事闯狱。” “怎么了抛计?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵哄孤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我吹截,道長(zhǎng)瘦陈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任波俄,我火速辦了婚禮晨逝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘懦铺。我一直安慰自己捉貌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布冬念。 她就那樣靜靜地躺著趁窃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪急前。 梳的紋絲不亂的頭發(fā)上醒陆,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音裆针,去河邊找鬼刨摩。 笑死寺晌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的码邻。 我是一名探鬼主播折剃,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼像屋!你這毒婦竟也來(lái)了怕犁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤己莺,失蹤者是張志新(化名)和其女友劉穎奏甫,沒(méi)想到半個(gè)月后魂务,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體暂论,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年贞铣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胜蛉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挠进。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖誊册,靈堂內(nèi)的尸體忽然破棺而出领突,到底是詐尸還是另有隱情,我是刑警寧澤案怯,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布君旦,位于F島的核電站,受9級(jí)特大地震影響嘲碱,放射性物質(zhì)發(fā)生泄漏金砍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一麦锯、第九天 我趴在偏房一處隱蔽的房頂上張望恕稠。 院中可真熱鬧,春花似錦扶欣、人聲如沸鹅巍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至县貌,卻和暖如春术陶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背煤痕。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工梧宫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留接谨,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓塘匣,卻偏偏與公主長(zhǎng)得像脓豪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子忌卤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容