- 0day安全
- 王清主編
- 6757字
- 2019-01-01 12:26:06
1.3 必備工具
1.3.1 OllyDbg簡介
Ollydbg是一個集成了反匯編分析、十六進(jìn)制編輯、動態(tài)調(diào)試等多種功能于一身的功能強(qiáng)大的調(diào)試器。它安裝簡單,甚至不需要點(diǎn)擊安裝文件就能直接運(yùn)行;它擴(kuò)展性強(qiáng),您甚至可以為自己寫出有特殊用途的插件;它簡單易用,初學(xué)者只需要知道幾個快捷鍵就能立刻上手……Olldbg的優(yōu)點(diǎn)實(shí)在是數(shù)不勝數(shù),現(xiàn)在已經(jīng)成為主流調(diào)試器之一。
與SoftICE和WinDbg相比,Ollydbg雖然無法調(diào)試內(nèi)核,但其人性化的GUI界面省去了初學(xué)者往往望而卻步的調(diào)試命令,您需要的只是掌握五六個快捷鍵,然后用鼠標(biāo)click,click,click……。
OllyDbg并非浪得虛名,在用戶態(tài)調(diào)試中,真的只要有它“only one”,就可以走遍天下都不怕了。它的主功能界面在默認(rèn)情況下分為5個部分,讓您在調(diào)試過程中輕松掌握指令、內(nèi)存、棧、寄存器等重要信息。除此以外,如果您是習(xí)慣于在SoftICE和WinDbg上敲調(diào)試命令的程序員,OllyDbg也體貼地為您保留了調(diào)試命令的debug方式。
這里只介紹6個最基本的功能快捷鍵,知道它們就可以基本用起這個調(diào)試器了,如表1-3-1所示。
表1-3-1 基本功能快捷鍵
其調(diào)試界面如圖1.3.1所示。
本書中絕大部分調(diào)試實(shí)驗(yàn)都將使用OllyDbg,您會在后面章節(jié)中頻繁見到這個調(diào)試器。相信您在跟隨我們完成幾個調(diào)試實(shí)驗(yàn)之后,一定會對這款調(diào)試器有一個較深層次的掌握,甚至愛不釋手。
OllyDbg博大精深,其內(nèi)存斷點(diǎn)、內(nèi)存跟蹤(trace)、條件斷點(diǎn)和眾多插件的功能將在后續(xù)章節(jié)中陸續(xù)進(jìn)行介紹。
1.3.2 SoftICE簡介
SoftICE可能是最德高望重的調(diào)試器了,它功能強(qiáng)大,工作在ring0級,因此可調(diào)試驅(qū)動等內(nèi)核對象。

圖1.3.1 OllyDbg調(diào)試界面簡介
首先要說明一下“ICE”可不是英文單詞“冰”的意思,而是“In Circuit Emulator”的縮寫,即實(shí)體電路模擬器,簡單說來就是用于截獲CPU所有動作的一種設(shè)備。通常要做到徹底監(jiān)視CPU的所有動作是需要硬件設(shè)施的,但SoftICE用軟件方式實(shí)現(xiàn)了這一功能。不夸張地說,如果您懂得怎么用它,您就可以crack任何軟件,甚至是操作系統(tǒng)。
但是由于SoftICE會暴力地中斷所有進(jìn)程,而且?guī)缀跛泄δ芏纪ㄟ^調(diào)試命令來運(yùn)行,其易用性在很大程度上受到了OllyDbg的挑戰(zhàn)。比如很多人喜歡聽著音樂工作,但媒體播放器進(jìn)程一樣會被SoftICE中斷。此外,由于SoftICE能夠調(diào)試和修改很底層的東西,在使用過程中死機(jī)、藍(lán)屏也是家常便飯。即便如此,還是有眾多資深的調(diào)試員忠實(shí)地支持著SoftICE。
依以往的經(jīng)驗(yàn),如果調(diào)試ring3級的用戶態(tài)進(jìn)程,我們所推薦的首選調(diào)試器還是OllyDbg,方便也安全;但若調(diào)試ring0,命令就命令吧,反正想要調(diào)試內(nèi)核的人都不是剛剛?cè)胄械牟锁B。
在Compuware NuMega公司把SoftICE打包進(jìn)“Compuware SoftICE Driver Suite”驅(qū)動開發(fā)套件之前,安裝SoftICE并不是一件容易的事情,因?yàn)榭偸谴嬖谝恍┘嫒菪缘膯栴},例如,鼠標(biāo)異常、斷點(diǎn)異常、顯卡驅(qū)動不匹配導(dǎo)致顯示不正常等。另外,有許多文獻(xiàn)資料都建議在Windows 2000上安裝SoftICE。
當(dāng)Compuware SoftICE Driver Suite驅(qū)動套件出現(xiàn)后,SoftICE的安裝問題似乎就變成了歷史性話題。我們可以輕松地在Windows XP上安裝并設(shè)置SoftICE。我目前使用的就是Compuware SoftICE Driver SuiteRelease 2.7。
題外話:SoftICE被呼出時(shí)會獨(dú)占CPU,中斷一切進(jìn)程和消息。例如,隨著調(diào)試的進(jìn)行,您會發(fā)現(xiàn)Windows桌面右下角的時(shí)間開始出現(xiàn)偏差,因?yàn)闀r(shí)鐘也被中斷了。由于Windows的截圖熱鍵“print screen”和其他的截圖軟件都會被中斷,如果不用虛擬機(jī),要獲得一張SoftICE的運(yùn)行截圖著實(shí)要花一番工夫。甚至在一些文獻(xiàn)中有人用數(shù)碼相機(jī)拍下SoftICE運(yùn)行界面。
圖1.3.2是安裝好后默認(rèn)的SoftICE界面,包括了常用的寄存器信息、反匯編信息和命令執(zhí)行情況等。

圖1.3.2 SoftICE 調(diào)試界面
默認(rèn)的SoftICE界面很小,字體和顯示行數(shù)看起來都不是很舒服,通常需要進(jìn)一步設(shè)置才能順手地使用。SoftICE有一套設(shè)置窗口屬性的命令用來自定義工作界面。
從開始菜單中找到“Compuware SoftICE Driver Suite”下SoftICE的“Settings”,打開后如圖1.3.3所示。在這里輸入界面設(shè)置命令

圖1.3.3 SoftICE配置界面
選擇“General”,可以看到在默認(rèn)安裝的情況下,SoftICE的初始化命令只有一條:X。在“Initialization”編輯框中輸入如下命令:
Faults off;set font 2; lines 44 ; data 3;dd; dex 3 ss:esp ; data 0 ; wc 20 ;code on ; X ;
這樣,調(diào)試界面就變得比較順眼了。這串初始化命令的含義如表1-3-2所示。
表1-3-2 初始化命令的含義
在調(diào)試時(shí),首先選擇從開始菜單中通過“Start SoftICE”啟動批處理文件“ntice.bat”,運(yùn)行SoftICE,然后通過開始菜單中的“Symbol Loader”啟動裝載界面,選擇要裝載運(yùn)行的PE文件,最后單擊“裝載運(yùn)行”按鈕,運(yùn)行程序,如圖1.3.4所示。

圖1.3.4 用SoftICE加載進(jìn)程
程序運(yùn)行起來后,用快捷鍵Ctrl+D即可激活SoftICE,調(diào)出調(diào)試界面。
SoftICE的調(diào)試命令非常多,這里作為入門性介紹,只給出幾個最常用的命令讓您上手。
(1)基礎(chǔ)調(diào)試命令(如表1-3-3所示)
表1-3-3 基礎(chǔ)調(diào)試命令
(2)信息查看與編輯命令(如表1-3-4所示)
表1-3-4 信息查看與編輯命令
命令雖然比較多,但實(shí)際上只要知道bp是下斷點(diǎn),d是顯示數(shù)據(jù)(display),e是修改數(shù)據(jù)(edit),再記住三個單步的快捷鍵,以及用快捷鍵Ctrl+D在操作系統(tǒng)和SoftICE之間切換控制權(quán),您就可以上手進(jìn)行最簡單的跟蹤和調(diào)試了。
如果想深入學(xué)習(xí),您可以在看雪學(xué)院(http://www.pediy.com/)找到SoftICE的命令手冊和使用教程。
1.3.3 WinDbg簡介
個人感覺,WinDbg的風(fēng)格介于OllyDbg和SoftICE之間,是一款比較“溫和”的調(diào)試器,其調(diào)試界面如圖1.3.5所示。它可以調(diào)試內(nèi)核,但卻不像SoftICE那么暴力,總是中斷操作系統(tǒng);它保留了一部分Visual Studio中常用的快捷按鈕,也保留了和SoftICE一樣豐富的調(diào)試命令。從功能上講,它可以設(shè)置異常復(fù)雜的斷點(diǎn)條件邏輯,在這一點(diǎn)上絲毫不比SoftICE和OllyDbg遜色。
從WinDbg功能界面上那些熟悉的調(diào)試快捷按鈕上很容易找到Visual Studio 6.0的影子。比起OllyDbg絢麗的GUI界面,一些初學(xué)者不喜歡它稍顯干癟的界面和繁多的調(diào)試命令。然而由于“師出微軟嫡系”,WinDbg更像是一個正規(guī)的調(diào)試器,因此其“粉絲團(tuán)”大多集中于“規(guī)規(guī)矩矩”的程序員。
WinDbg的主要功能都是靠調(diào)試命令來完成的,而且這些命令很大程度上和SoftICE所使用的調(diào)試命令類似。這里給出一些最常用的命令。這些命令大多是英文單詞的縮寫,所以結(jié)合單詞的含義更容易被掌握。

圖1.3.5 WinDbg調(diào)試界面
調(diào)試功能的命令如表1-3-5所示。
表1-3-5 調(diào)試功能的命令
信息顯示與編輯功能如表1-3-6所示。
表1-3-6 信息顯示與編輯功能
本書在講解第4篇中關(guān)于內(nèi)核安全及調(diào)試的部分將主要以WinDbg調(diào)試為主,更多的WinDbg調(diào)試技巧請參閱第4篇相關(guān)內(nèi)容。
1.3.4 IDA Pro簡介
IDA Pro無疑是當(dāng)今最強(qiáng)大的反匯編軟件,其工作界面如圖1.3.6所示。雖然目前的IDA版本也可以做一些簡單的動態(tài)調(diào)試工作,但大多數(shù)情況下我們主要使用它的靜態(tài)反匯編功能。
很多工具都能把二進(jìn)制的機(jī)器代碼翻譯成匯編指令,但為什么提起反匯編工具,IDA永遠(yuǎn)都是首屈一指的強(qiáng)者呢?這是因?yàn)镮DA擁有強(qiáng)大的標(biāo)注功能。

圖1.3.6 IDA工作界面
即使是對匯編語言非常精通的程序員,也無法直接閱讀成千上萬行匯編指令。我們需要把龐大的匯編指令序列分割成不同層次的單元、模塊、函數(shù),對其逐個研究,最終摸清楚整個二進(jìn)制文件的功能。
所謂逆向的過程,在很大程度上就是對這些代碼單元的標(biāo)注。每當(dāng)我們弄清楚一個函數(shù)的功能時(shí),我們就會給這個函數(shù)起一個名字。使用IDA對函數(shù)進(jìn)行標(biāo)注和注解可以做到全文交叉引用,也就是說,標(biāo)注一個常用函數(shù)后,整個程序?qū)@個函數(shù)的調(diào)用都會被替換成我們所標(biāo)注的名字,這可比直接對內(nèi)存地址的調(diào)用形式好理解多了(通常情況下,反匯編得到的函數(shù)調(diào)用往往都是對內(nèi)存地址的調(diào)用)。
對匯編代碼的標(biāo)注可以自上而下進(jìn)行,也可以自下而上進(jìn)行。自上而下是指從main函數(shù)開始標(biāo)注,相當(dāng)于對函數(shù)調(diào)用圖從樹根開始遍歷;自下而上逆向是指從比較底層的經(jīng)常被調(diào)用的子函數(shù)開始標(biāo)注,每標(biāo)注一個這樣的底層函數(shù),代碼單元的可讀性就會增加許多,當(dāng)最終標(biāo)注到main函數(shù)時(shí),整個程序的功能和流程就基本上可以掌握了。大多數(shù)情況下,我們會從兩個方向同時(shí)開始逆向。
除了在人工標(biāo)注時(shí)IDA提供了交叉引用、快速鏈接等功能外,IDA的自動識別和標(biāo)注功能也是最優(yōu)秀的。目前的IDA版本能夠自動標(biāo)注VC、Borland C、Delphi、Turbo C等常見編譯器中的標(biāo)準(zhǔn)庫函數(shù)。試想一下,在反匯編的結(jié)果中發(fā)現(xiàn)所有的memcpy、printf函數(shù)都已經(jīng)被自動標(biāo)注好的時(shí)候是什么感覺。
IDA好像是一張二進(jìn)制的地圖,通過它的標(biāo)注功能可以迅速掌握大量匯編代碼的架構(gòu),不至于在繁雜的二進(jìn)制迷宮中迷失方向。目前版本的IDA甚至可以用圖形方式顯示出一個函數(shù)內(nèi)部的執(zhí)行流程。在反匯編界面中按空格鍵就可以在匯編代碼和圖形顯示間切換,如圖1.3.7所示。

圖1.3.7 IDA的圖形顯示界面
IDA的擴(kuò)展性非常好,除了可以用IDA提供的API接口和IDC腳本擴(kuò)展它自身外,IDA還可以把標(biāo)注好的函數(shù)名、注釋等導(dǎo)入OllyDbg,讓我們在動態(tài)調(diào)試的時(shí)候也不會暈。如果把IDA自身的標(biāo)注比做紙質(zhì)地圖,那么這個功能就相當(dāng)于車載GPS的電子地圖了。
這里給出幾個IDA中常用的快捷鍵命令,如表1-3-7所示。
表1-3-7 常用的快捷鍵命令
知道這幾個快捷鍵,您就可以自行去標(biāo)注匯編代碼了。徹底掌握IDA不是一兩天就能做到的,由于在漏洞利用中我們主要使用的是動態(tài)調(diào)試工具,所以IDA的許多高級特性(如編寫IDC腳本等)本書暫不介紹。如果在漏洞分析時(shí)需要進(jìn)行靜態(tài)反匯編,本書會結(jié)合案例給予適當(dāng)補(bǔ)充。
1.3.5 二進(jìn)制編輯器
漏洞調(diào)試總是需要和二進(jìn)制打交道。一款方便易用的十六進(jìn)制編輯軟件可以讓您打開任意的二進(jìn)制文件,方便地跳到某處偏移,查看或修改那里的機(jī)器代碼。
比較著名的十六進(jìn)制編輯器包括UltraEdit、Hex Workshop和WinHex和010 editor。
UltraEdit的功能如圖1.3.8所示,這是9.0版本的界面。您可以用它以二進(jìn)制形式輕易地打開任何文件并進(jìn)行編輯、查找、替換等操作。用它可以方便地完成機(jī)器代碼的修改或者shellcode的編輯。

圖1.3.8 UltraEdit編輯界面
二進(jìn)制編輯只是UltraEdit的一項(xiàng)功能。正如它的名字,這是一個超級編輯器,它還可以作為幾乎所有常見編程語言的編輯器。例如,在打開擴(kuò)展名為C的文件時(shí),它將提供C語言中的關(guān)鍵字、語法標(biāo)注、函數(shù)識別等功能,有些功能甚至比微軟SDK中的文本編輯器還方便。
Hex Workshop是一款和UltraEdit類似的十六進(jìn)制編輯軟件,只是它更關(guān)注于二進(jìn)制本身,其編輯界面如圖1.3.9所示。它可以方便地進(jìn)行十六進(jìn)制編輯、插入、填充、刪除、剪切、復(fù)制和粘貼工作,配合查找、替換、比較、計(jì)算校驗(yàn)和等命令使工作更加快捷,并附帶計(jì)算器和轉(zhuǎn)換器工具。

圖1.3.9 Hex Workshop編輯界面
WinHex與上述兩款十六進(jìn)制編輯軟件相比,有一個更加強(qiáng)大的特性,就是可以允許您透過文件系統(tǒng)直接對磁盤的扇區(qū)、簇進(jìn)行操作。專業(yè)的數(shù)據(jù)恢復(fù)專家更喜歡使用這種工具,它的界面如圖1.3.10所示。
除此以外,有些人還會偏好沒有GUI界面的H-viwe等工具。不管什么工具,只要根據(jù)您的個人喜好擁有其中之一就行。本書中將始終使用UltraEdit作為十六進(jìn)制文本編輯器。
除以上幾款二進(jìn)制編輯器之外,在分析具有復(fù)雜數(shù)據(jù)結(jié)構(gòu)的文件時(shí),我們往往會采用010 editor。這個二進(jìn)制編輯器與傳統(tǒng)編輯器有很大不同,它支持解析腳本的運(yùn)行,可以將復(fù)雜的文件格式中有意義的數(shù)據(jù)結(jié)構(gòu)注意提取出來。我們將在第17章討論復(fù)雜文件格式的時(shí)候詳細(xì)介紹010 editor下的文件解析與腳本編程。
1.3.6 VMware簡介
在研究Windows漏洞時(shí),我們往往要實(shí)驗(yàn)Windows 2000、Windows XP、 Windows 2003、Windows vista、Windows 7等多種平臺,有時(shí)還要對比補(bǔ)丁前后系統(tǒng)的變化。如果為每套操作系統(tǒng)、每款補(bǔ)丁都分配一臺計(jì)算機(jī)的話這將是一件非常燒錢的事,而虛擬機(jī)的出現(xiàn)將解決這個問題。

圖1.3.10 WinHex編輯界面
與平時(shí)所說的Java虛擬機(jī)不同,這里所說的虛擬機(jī)是指通過軟件來模擬具有完整硬件系統(tǒng)功能的、運(yùn)行在一個完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng)。通過虛擬機(jī)軟件,您可以在一臺物理計(jì)算機(jī)上模擬出一臺或多臺虛擬的計(jì)算機(jī),這些虛擬機(jī)完全就像真正的計(jì)算機(jī)那樣進(jìn)行工作,例如您可以安裝操作系統(tǒng)、安裝應(yīng)用程序、訪問網(wǎng)絡(luò)資源等等。對于您而言,它只是運(yùn)行在物理計(jì)算機(jī)上的一個應(yīng)用程序,但是對于在虛擬機(jī)中運(yùn)行的應(yīng)用程序而言,它就像是在真正的計(jì)算機(jī)中進(jìn)行工作。
除了節(jié)約資金外,虛擬機(jī)還有以下兩點(diǎn)優(yōu)勢讓安全工作者們不忍拋棄。
(1)虛擬機(jī)具有出色的快照功能。我們可以通過創(chuàng)建快照,可以將虛擬機(jī)中的操作系統(tǒng)快速的恢復(fù)到某一狀態(tài)。例如,調(diào)試病毒樣本后,需要將操作系統(tǒng)恢復(fù)到干凈的狀態(tài);Patch過補(bǔ)丁后,又希望把系統(tǒng)恢復(fù)到有漏洞的狀態(tài)等。
(2)可以防止漏洞分析中對操作系統(tǒng)和資料的破壞。由于漏洞測試過程是在虛擬機(jī)當(dāng)中進(jìn)行的,絕大多數(shù)的情況下不會對宿主機(jī)產(chǎn)生影響。
在Windows系統(tǒng)下,目前流行的虛擬機(jī)軟件有VMware和Virtual PC,它們都能在Windows系統(tǒng)上虛擬出多個計(jì)算機(jī),用于安裝Linux、OS/2、FreeBSD等其他操作系統(tǒng)。本書將使用VMware作為虛擬機(jī)軟件,接下來我們來看看VMware的使用方法。
這里演示安裝的是VMware 6.5.3版本,軟件的安裝過程與一般的應(yīng)用軟件安裝沒有什么區(qū)別,輸入正確序列號后就可以使用。其使用界面如圖1.3.11所示。

圖1.3.11 VMware的使用界面
用鼠標(biāo)選擇圖標(biāo),會出現(xiàn)VMware新建虛擬機(jī)向?qū)В鐖D1.3.12的畫面。

圖1.3.12 新建虛擬機(jī)類型選擇畫面
VMware首先會讓您選擇要建立什么類型的虛擬機(jī),“Typical”指的是傳統(tǒng)硬件環(huán)境的虛擬機(jī),也就是一般使用的基于Intel x86結(jié)構(gòu)的計(jì)算機(jī)系統(tǒng),這也是VMware所推薦的虛擬機(jī)系統(tǒng)安裝環(huán)境。“Custom”是用來建立有特殊硬件結(jié)構(gòu)需要的虛擬機(jī),例如建立支持SCSI控制器的虛擬機(jī)系統(tǒng)環(huán)境,您可以理解“Custom”類型屬于高級配置模式,一般情況下,我們選擇“Typical”來建立虛擬機(jī)環(huán)境。單擊“Next”按鈕后,如圖1.3.13所示。

圖1.3.13 選擇預(yù)安裝操作系統(tǒng)來源
利用VMware安裝操作系統(tǒng)首先第一步就是選擇操作系統(tǒng)源文件的來源,VMware支持傳統(tǒng)的利用光驅(qū)安裝操作系統(tǒng),同時(shí)也支持利用光盤鏡像文件iso來安裝操作系統(tǒng)。我們這里選擇使用iso文件作為安裝操作系統(tǒng)的來源之后,單擊“Next”按鈕,如果虛擬機(jī)能夠自動識別要安裝的操作系統(tǒng)就會顯示圖1.3.16的界面,如果虛擬機(jī)不能夠自動識別要安裝的操作系統(tǒng),就會顯示圖1.3.14的界面。

圖1.3.14 選擇預(yù)安裝操作系統(tǒng)類型
當(dāng)VMware不能夠自動識別要安裝的系統(tǒng)時(shí),我們需要手工選擇要安裝的操作系統(tǒng)類型。VMware支持Windows、Linux、Novell NetWare、Sun Solaris等操作系統(tǒng)。同時(shí),VMware還對每一種類型的操作系統(tǒng)有著更加具體的支持,如圖1.3.15所示。

圖1.3.15 選擇操作系統(tǒng)具體版本
在圖1.3.15的下拉列表中選擇好我們即將安裝的具體操作系統(tǒng)版本型號后(這里選擇的是微軟的Windows XP Professional操作系統(tǒng)),單擊“Next”按鈕,如圖1.3.16所示。

圖1.3.16 填寫待安裝操作系統(tǒng)序列號以及管理員密碼
新版本的VMware比較以前VMware 5的版本在細(xì)節(jié)方面有了較大改變,在安裝操作系統(tǒng)之前提供了設(shè)置待安裝操作系統(tǒng)序列號和設(shè)置管理員用戶密碼的功能,這樣做的目的是為了能夠完成自動化操作系統(tǒng)安裝,不需要人工干預(yù)。設(shè)置完畢后,單擊“Next”按鈕,進(jìn)入下一步設(shè)置,如圖1.3.17所示。

圖1.3.17 設(shè)置虛擬機(jī)操作系統(tǒng)保存路徑
圖1.3.17將設(shè)置虛擬機(jī)操作系統(tǒng)的文件保存位置以及新虛擬機(jī)的名字,此時(shí)要注意選擇的虛擬機(jī)文件保存位置一定要有足夠的硬盤空間,根據(jù)所安裝的操作系統(tǒng)不一樣,VMware虛擬機(jī)需要的保存空間也不一樣,對于像Windows XP Professional這樣的系統(tǒng)來說保存空間最好保持在40GB大小。對于新虛擬機(jī)名則可以不做修改,單擊“Next”按鈕,如圖1.3.18所示。

圖1.3.18 設(shè)置虛擬機(jī)操作系統(tǒng)文件及磁盤大小
圖1.3.18這里主要設(shè)置虛擬機(jī)操作系統(tǒng)磁盤大小和文件保存類型,這里不需要做任何修改,直接單擊“Next”按鈕即可,如圖1.3.19所示。
這一步顯示的是虛擬機(jī)配置完成信息,直接單擊“Finish”按鈕,VMware將開始安裝自動操作系統(tǒng)了,如圖1.3.20所示。

圖1.3.19 設(shè)置完成畫面

圖1.3.20 開始安裝操作系統(tǒng)
等待VMware操作系統(tǒng)安裝完畢后,我們需要注意給新的虛擬機(jī)安裝上VMware Tools,只有安裝了VMware Tools之后,我們才可以讓虛擬機(jī)與真實(shí)主機(jī)進(jìn)行通信。安裝VMware Tools的方法是選擇“VM”菜單中的“Install VMware Tools”選項(xiàng)即可,如圖1.3.21所示。

圖1.3.21 安裝VMware Tools
題外話:從安全技術(shù)的角度,電影Matrix(黑客帝國)中描述的故事就有點(diǎn)像在虛擬機(jī)中調(diào)試病毒時(shí)的情景:正常的程序安靜地運(yùn)行在虛擬機(jī)中;少數(shù)像Neo這樣的有“特權(quán)”的程序可以做許多出格的事,甚至跳出虛擬機(jī)進(jìn)入宿主機(jī)(錫安)運(yùn)行;電影第二部結(jié)束時(shí),Neo在“真正的操作系統(tǒng)”錫安中也能使用特權(quán)指令——用意念消滅烏賊機(jī)器人,原來這個所謂的“真正的操作系統(tǒng)”也只是更高一層的虛擬;Agent也是一類特殊的進(jìn)程,它們有一種特權(quán),就是使用Hook函數(shù)注入到任意一個ring3級進(jìn)程中去;由于Smith作為特權(quán)進(jìn)程對Matrix的背叛,導(dǎo)致幾乎所有的進(jìn)程都被他感染;電影第三部末尾Matrix面臨崩潰,Neo犧牲自己幫助Matrix定位到Smith,也就是病毒進(jìn)程的PID,之后通過一輪內(nèi)存殺毒和重啟虛擬機(jī)等操作,使Matrix重新恢復(fù)到“比較正常”的狀態(tài)。
1.3.7 Python編程環(huán)境
Python語言的創(chuàng)始人為Guido van Rossum。1989年圣誕節(jié)期間,在阿姆斯特丹,Guido為了打發(fā)圣誕節(jié)的無趣,決心開發(fā)一個新的腳本解釋程序,作為ABC語言的一種繼承。之所以選中Python(大蟒蛇的意思)作為程序的名字,是因?yàn)樗且粋€Monty Python的飛行馬戲團(tuán)的愛好者。
Python 具有腳本語言中最豐富和強(qiáng)大的類庫,足以支持絕大多數(shù)日常應(yīng)用。著名的自由軟件作者Eric Raymond在他的文章《如何成為一名黑客》中,將Python列為黑客應(yīng)當(dāng)學(xué)習(xí)的四種編程語言之一,并建議人們從Python開始學(xué)習(xí)編程。這的確是一個中肯的建議,回顧過去5年內(nèi)出現(xiàn)的那些著名的安全工具(Sulley fuzz、Paimei、Peach fuzz等),幾乎全部使用Python開發(fā)。
在漏洞挖掘的過程中,經(jīng)常需要迅速地開發(fā)出具有針對性的小工具,諸如:特定的解析器,數(shù)據(jù)包變異器,文件變異器等等。使用Python能把編程環(huán)節(jié)耗費(fèi)的精力降到很低,讓您更迅速地面對真正需要關(guān)心的東西,而不是糾纏于指針或數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)。
Python對應(yīng)的SDK有很多,個人而言,我最偏好于Eclipse+PyDev的組合。如圖1.3.22所示,Eclipse提供了編程必須的謂詞識別、函數(shù)識別、語法高亮等功能,配合PyDev插件后能夠方便的開發(fā)出相當(dāng)規(guī)模的Python工程。

圖1.3.22 Eclipse+PyDev 開發(fā)環(huán)境
通常情況下,有程序基礎(chǔ)的人能夠在幾個小時(shí)內(nèi)掌握Python的基本用法,進(jìn)行簡單的開發(fā)工作。除C和C++語言外,本書中許多小工具和測試代碼也將用Python來實(shí)現(xiàn)。
- 網(wǎng)絡(luò)安全與管理
- 計(jì)算機(jī)網(wǎng)絡(luò)安全技術(shù)(第6版·慕課版)
- Securing Blockchain Networks like Ethereum and Hyperledger Fabric
- 特種木馬防御與檢測技術(shù)研究
- 黑客攻防技巧
- 工業(yè)物聯(lián)網(wǎng)安全
- INSTANT Windows PowerShell
- CTF競賽權(quán)威指南(Pwn篇)
- 計(jì)算機(jī)網(wǎng)絡(luò)安全技術(shù)研究
- 從0到1:CTFer成長之路
- 隱私計(jì)算
- 編譯與反編譯技術(shù)實(shí)戰(zhàn)
- 復(fù)雜信息系統(tǒng)網(wǎng)絡(luò)安全體系建設(shè)指南
- Metasploit 5.0 for Beginners
- 防火墻和VPN技術(shù)與實(shí)踐