黑客反匯編揭秘
作者:[美]Kris Kaspersky 譯者:譚明金 定價:59.00 頁碼:532 開本:短16開 出版時間:2004-09-01
dearbook訂書地址 本書分為兩大部分。第一部分結(jié)合精心挑選的實例,系統(tǒng)地討論了黑客代碼分析技術(shù),包括調(diào)試器于反匯編器等典型分析工具的使用、代碼分析的基本過程以及相關(guān)疑難問題的處理等。第二部分介紹了程序保護(hù)所面臨的各種挑戰(zhàn)及其相關(guān)的反調(diào)試、反跟蹤、防反匯編加密解密技術(shù)等內(nèi)容,這實際上是代碼分析方面的高級專題。該書在內(nèi)容上將針對性、實踐性與綜合性有機(jī)地結(jié)合在一起,很好地滿足了學(xué)習(xí)代碼分析技術(shù)的需要。該書主要是為致力于計算機(jī)安全維護(hù)而阻止黑客侵襲或者從事安全保護(hù)程序開發(fā)人員寫的。同時,本書對于深入學(xué)習(xí)程序和操作系統(tǒng)等計算機(jī)內(nèi)核知識,也有很好的參考價值。
圖書目錄 第1部分 精通黑客基本技術(shù) 第1章 概述 2 1.1 保護(hù)方式分類 2 1.2 保護(hù)強(qiáng)度 4 第2章 第一步:熱身 6 第3章 第二步:熟練使用反匯編器 11 第4章 第三步:外科手術(shù) 17 第5章 第四步:熟練使用調(diào)試器 24 5.1 方法0:破解原始密碼 25 5.2 方法1:直接在內(nèi)存中搜索用戶輸入的密碼 37 5.3 方法2:在密碼輸入函數(shù)上設(shè)置斷點 46 5.4 方法3:針對消息設(shè)置斷點 49 第6章 第五步:IDA粉墨登場 53 第7章 第六步:結(jié)合調(diào)試器使用反匯編器 82 第8章 第七步:識別高級語言的關(guān)鍵結(jié)構(gòu) 85 8.1 函數(shù) 85 8.2 啟動函數(shù) 100 8.3 虛函數(shù) 104 8.4 構(gòu)造函數(shù)與析構(gòu)函數(shù) 136 8.5 對象、結(jié)構(gòu)體與數(shù)組 147 8.6 this指針 164 8.7 new操作符與delete操作符 165 8.8 庫函數(shù) 169 8.9 函數(shù)的參數(shù) 173 8.9.1 函數(shù)的返回值 255 8.9.2 局部堆棧變量 309 8.9.3 寄存器與臨時變量 327 8.9.4 全局變量 338 8.9.5 常量與偏移量 344 8.9.6 文本與字符串 357 8.9.7 IF-THEN-ELSE條件語句 374 8.9.8 SWITCH-CASE-BREAK語句 415 8.9.9 循環(huán)語句 433 8.9.10 數(shù)學(xué)運算符 475 第2部分 提高軟件分析難度的技術(shù)途徑 第9章 概述 500 第10章 反調(diào)試技術(shù) 502 10.1 調(diào)試技術(shù)發(fā)展簡介 502 10.2 調(diào)試器的工作原理 503 10.3 實模式與保護(hù)模式下的異常處理 505 10.4 黑客如何破除程序的保護(hù)機(jī)制 505 10.5 程序的保護(hù) 506 10.6 如何進(jìn)行反跟蹤 506 10.7 斷點的防范 512 第11章 反匯編防范技術(shù) 518 11.1 最新操作系統(tǒng)的自修改代碼 518 11.2 Windows內(nèi)存體系結(jié)構(gòu) 519 11.3 使用WriteProcessMemory函數(shù) 520 11.4 在堆棧中執(zhí)行代碼 522 11.5 可重定位代碼的缺陷 522 11.6 優(yōu)化編譯器的是與非 524 11.7 使用自修改代碼保護(hù)應(yīng)用程序 525 11.8 總結(jié) 529 第12章 新保護(hù)技術(shù)討論與展望 530 說明 531
圖書前言 本書通過展示如何創(chuàng)建與繞過保護(hù)環(huán)節(jié)等方面的內(nèi)容,向讀者開啟了一扇通往安全機(jī)制這一神秘世界的大門。該書是為喜歡破譯難解之謎的人們,以及將業(yè)余時間或者上班時間都花在對程序與操作系統(tǒng)進(jìn)行刨根問底的人們寫的,同時,它也是為經(jīng);蛘吲紶枏氖卤Wo(hù)程序開發(fā)的人員,以及想知道如何出色而可靠地阻止無處不在的黑客的人員寫的。 黑客底層分析技術(shù),即用調(diào)試器與反匯編器開展工作所需要的技能,是本書介紹的主要內(nèi)容。書中詳細(xì)介紹了識別與重建源代碼的關(guān)鍵結(jié)構(gòu)——函數(shù)(包括虛函數(shù))、局部與全局變量、分支、循環(huán)、對象及其層次、數(shù)學(xué)運算符等方面的內(nèi)容。 選取閱讀本書時所需要的工具軟件,完全由讀者個人的喜好決定。每個人的愛好是很不一樣的,因此,請不要把我在下面提到的那些東西看成板上釘釘?shù)氖,只管將它們?dāng)做一些建議好了。使用本書需要的工具軟件包括: 調(diào)試器——SoftIce,版本在3.25以上 反匯編器——IDA,版本為3.7x(推薦使用3.8版本,4.x版本更佳) 十六進(jìn)制編輯器——HIEW,任何版本都行 開發(fā)包——SDK與DDK(后者不是必需的,但擁有它的確很好) 操作系統(tǒng)——任何版本的Windows操作系統(tǒng)都行,但強(qiáng)烈推薦使用Windows 2000或者更高的版本 編譯器——讀者最喜歡的任何C/C++或者Pascal編譯器(書中雖然對Microsoft Visual C++、Borland C++、Watcom C、GNU C以及Free Pascal等編譯器各自具有的特點都進(jìn)行了詳細(xì)描述,但用得最多的只是Microsoft Visual C++ 6.0編譯器) 現(xiàn)在,我們來比較詳細(xì)地介紹一下這些內(nèi)容: SoftIce。SoftIce調(diào)試器是黑客們使用的主要武器。雖然有一些免費的調(diào)試器(比如Microsoft的WINDEB與劉濤濤的TRW)可供使用,但SoftIce比所有這些免費程序提供的功效加在一起還要有效與方便。幾乎所有版本的SoftIce都能滿足用戶的需要,作者使用的是3.26版本。這是一個經(jīng)受了時間考驗的版本,它具有很好的穩(wěn)定性,并且在Windows 2000下運行良好。該軟件的當(dāng)前版本4.x與我計算機(jī)上的電視卡(Matrox Millennium G450)不能在一起很好地運作,大致說來,隨著運行時間的推移,它會出現(xiàn)死機(jī)。除此以外,在第四個版本的所有新增功能中,只有“參考點省略”(FPO, Frame Point Omission)這一部分功能(參見“局部堆棧變量”一節(jié))才對通過ESP寄存器直接尋址局部變量的程序員特別有用,這無疑是一個很實用的特性,然而,如果一定要實現(xiàn)類似的操作,沒有它同樣可以做到。去購買SoftIce調(diào)試器吧,讀者是不會遺憾的。(破譯程序的工作與盜版行為可不是一回事,直到今天,從事這類工作的人們都還算得上是誠實的。) IDA Pro。目前世界上功能最強(qiáng)的反匯編器無疑是IDA。沒有IDA固然可以生存,但有了它肯定可以生活得更好。IDA為瀏覽所剖析的內(nèi)容提供了一個便利的工具,它自動識別庫函數(shù)和局部變量(包括通過ESP直接尋址的那些變量),并支持眾多的處理器與文件格式。一句話,黑客要是不配備它就不能稱為黑客了。但是在我看來,為它大做廣告其實是不必要的。惟一的問題是,讀者如何才能得到這個IDA工具程序。加進(jìn)該軟件程序的盜版是十分罕見的(我看到過的最新版本是 IDA 3.74,不過它顯得不夠穩(wěn)定),提供它的Internet網(wǎng)站通常更少。IDA開發(fā)人員會迅速阻止任何非授權(quán)性質(zhì)的產(chǎn)品分發(fā)企圖。獲取該軟件的惟一可靠途徑是從開發(fā)人員(http//www.idapro.com)或者正式發(fā)行商那里購買。不幸的是,該軟件并不提供配套的文檔資料(非常簡短且不系統(tǒng)的即時幫助信息除外)。 HIEW。HIEW不僅僅是一個十六進(jìn)制的編輯器,它還將反匯編器、匯編器與編碼器的功能集于一身。HIEW雖然不能取代IDA而使用戶不必去購買 IDA,但在某些情況下,它會帶給用戶很多的回報。(IDA運行起來很慢,因此,假如用戶僅僅是想快速地看一眼待用文件的話,則浪費大量的時間確實是件令人頭疼的事情。)不過,HIEW的主要用途不在于反匯編,而在于進(jìn)行一些細(xì)小的修剪——針對二進(jìn)制文件進(jìn)行一些小小的外科手術(shù)。這樣做的目的通常是去除部分保護(hù)機(jī)制,從而使該工具能夠正常地運行。 SDK(軟件開發(fā)套件——應(yīng)用程序開發(fā)包)。需要從SDK包獲得的主要資源是關(guān)于Win32 API函數(shù)以及用于PE文件的DUMPBIN實用工具等方面的文檔資料。沒有這些資料,無論是黑客還是開發(fā)人員什么都做不了。至少,用戶需要通過文檔資料來了解主要系統(tǒng)函數(shù)的原型和用途。這類信息雖然可以從浩如煙海的編程書籍中收集而來,但是沒有哪本書能夠宣稱它所展示的內(nèi)容達(dá)到了必要的深度和廣度,所以說,用戶遲早要去使用SDK。怎樣去獲取SDK呢?SDK是MSDN的一部分,MSDN按季度以光盤的形式進(jìn)行發(fā)布,同時也可以通過征訂來分發(fā)。(用戶可以通過官方網(wǎng)站http//msdn.microsoft.com來了解關(guān)于訂閱條件方面的內(nèi)容。)此外,MSDN也隨Microsoft Visual C++ 6.0編譯器一起提供(這個版本雖然不是特別新,但它對于閱讀本書已經(jīng)足夠了)。 DDK(驅(qū)動程序開發(fā)套件——驅(qū)動程序開發(fā)包)。黑客使用DDK開發(fā)包做什么?它有助于弄清楚,驅(qū)動程序是如何開發(fā)、工作,以及如何被攻擊的嗎?除了基本的文檔和大量的樣例之外,DDK包還包括一個非常有價值的文件NTDDK.h,該文件含有絕大部分非公開結(jié)構(gòu)的定義,它同揭示系統(tǒng)某些非一般性操作細(xì)節(jié)的注釋內(nèi)容一起加載。隨DDK一起提供的一些實用程序也是有用的,其中,WINDEB調(diào)試器就是DDK所包括的實用工具之一,這是一個相當(dāng)好的調(diào)試器,但無論從什么角度看,它都難及SoftIce的項背,因此,本書不考慮它的使用。(如果讀者找不到SoftIce,WINDEB也湊合能用。)用于編寫驅(qū)動程序的MASM匯編工具顯得十分有用,另外,DDK還有一些使黑客的生活變得稍微容易點兒的小程序。最新的DDK版本可以從Microsoft站點免費下載。不過,要記住一點,用于NT的整個DDK的大小超過了40MB(壓縮的),它甚至要求磁盤上存在更多的空間。 操作系統(tǒng)。我無意將自己的品味和嗜好強(qiáng)加于讀者,不過,我還是強(qiáng)烈地建議讀者安裝Windows 2000或者更高的版本。這樣做的原因在于它是一個性能非常穩(wěn)定且運行牢靠的操作系統(tǒng),能夠抵御嚴(yán)重的應(yīng)用程序錯誤的破壞。與黑客的工作緊密相關(guān)的一件事情是,這種針對程序的核心層所施加的外部干擾使程序非常容易陷入崩潰而出現(xiàn)難以預(yù)料的行為。Windows 9x操作系統(tǒng)和崩潰程序的頻繁“罷工”表現(xiàn)出“高度一致”的步調(diào),有時候,計算機(jī)請求啟動高達(dá)幾十次之多!如果啟動頻繁發(fā)生而讀者又不用去修復(fù)因為故障而遭到破壞的磁盤的話,那只能說用戶運氣不錯。(這樣的事情雖然很少發(fā)生,但還是存在發(fā)生的必然。)凍結(jié)Windows 2000要困難得多,在我睡眠不好或者疏忽大意的時候,我“成功”實施凍結(jié)的次數(shù)一個月也不會多于兩次。而且,Windows 2000允許用戶在任何時候加載SoftIce而不用重新啟動系統(tǒng),這實在是太方便了!最后要說明的一點是,本書的所有內(nèi)容都是基于Windows 2000或者更高版本而展開敘述的,作者也很少提及其他系統(tǒng)所表現(xiàn)出的不同之處。 本書的讀者需要事先對匯編語言很熟悉。即使沒有用匯編語言編寫程序的經(jīng)歷,至少也應(yīng)該知道諸如寄存器、段、機(jī)器指令等概念指的是什么,否則,閱讀本書很可能感到太復(fù)雜而難于理解。作者的建議是,讀者去找一本匯編方面的指南書籍,然后進(jìn)行系統(tǒng)的學(xué)習(xí)。 除了匯編語言,讀者至少還應(yīng)該具備操作系統(tǒng)方面的一般概念。 此外,從Intel和AMD站點上下載所有可以獲得的關(guān)于處理器的文檔資料,也是很有用的。 至此,已經(jīng)準(zhǔn)備足夠素材,該是起步向前的時候了!
出處:藍(lán)色理想
責(zé)任編輯:donger
|