出版時間:2011-10 出版社:機(jī)械工業(yè)出版社華章公司 作者:錢林松,趙海旭 頁數(shù):411
Tag標(biāo)簽:無
內(nèi)容概要
《C++反匯編與逆向分析技術(shù)揭秘》本書既是一本全面而系統(tǒng)地講解反匯編與逆向分析技術(shù)的安全類專著,又是一部深刻揭示C++內(nèi)部工作機(jī)制的程序設(shè)計類著作。理論與實(shí)踐并重,理論部分系統(tǒng)地講解了C++的各種語法特性和元素的逆向分析方法和流程,重在授人以漁;實(shí)踐部分通過幾個經(jīng)典的案例演示了逆向分析技術(shù)的具體實(shí)施步驟和方法。
全書共分為三大部分:第一部分主要介紹了VC++6.0、OllyDBG和反匯編靜態(tài)分析工具的使用,以及反匯編引擎的工作原理;第二部分以C/C++語法為導(dǎo)向,以VC++6.0為例,深入解析了每個C/C++知識點(diǎn)的匯編表現(xiàn)形式,包括基本數(shù)據(jù)類型、表達(dá)式、流程控制語句、函數(shù)、變量、數(shù)組、指針、結(jié)構(gòu)體、類、構(gòu)造函數(shù)、析構(gòu)函數(shù)、虛函數(shù)、繼承和多重繼承、異常處理等,這部分內(nèi)容重在修煉“內(nèi)功”,不僅講解了調(diào)試和識別各種C/C++語句的方法,而且還深入剖析了各知識點(diǎn)的底層機(jī)制;第三部分是逆向分析技術(shù)的實(shí)際應(yīng)用,通過對PEiD、“熊貓燒香”病毒、OllyDBG調(diào)試器等的逆向分析將理論和實(shí)踐很好地融合在了一起。
本書適合所有軟件安全領(lǐng)域的工作者、想了解C++內(nèi)部機(jī)制的中高級程序員,以及對Windows底層原理感興趣的技術(shù)人員閱讀。
作者簡介
錢林松,資深安全技術(shù)專家、軟件開發(fā)工程師和架構(gòu)師,從事計算機(jī)安全和軟件開發(fā)工作12年,實(shí)踐經(jīng)驗極其豐富。尤其精通軟件逆向分析技術(shù),對C/C++技術(shù)和Windows的底層機(jī)制也有非常深入的研究。武漢科銳軟件技術(shù)有限公司創(chuàng)始人,教學(xué)經(jīng)驗豐富,多年來,為國內(nèi)計算機(jī)安全領(lǐng)域培養(yǎng)和輸送了大量的人才。活躍于看雪論壇,有較高的知名度和影響力。
書籍目錄
前言
第一部分 準(zhǔn)備工作
第1章 熟悉工作環(huán)境和相關(guān)工具
1.1 調(diào)試工具M(jìn)icrosoft Visual C++
6.0和OllyDBG
1.2 反匯編靜態(tài)分析工具IDA
1.3 反匯編引擎的工作原理
1.4 本章小結(jié)
第二部分 C++反匯編揭秘
第2章 基本數(shù)據(jù)類型的表現(xiàn)形式
2.1 整數(shù)類型
2.2 浮點(diǎn)數(shù)類型
2.3 字符和字符串
2.4 布爾類型
2.5 地址、指針和引用
2.6 常量
2.7 本章小結(jié)
第3章 認(rèn)識啟動函數(shù),找到用戶入口
3.1 程序的真正入口
3.2 了解VC++ 6.0的啟動函數(shù)
3.3 main函數(shù)的識別
3.4 本章小結(jié)
第4章 觀察各種表達(dá)式的求值過程
4.1 算術(shù)運(yùn)算和賦值
4.2 關(guān)系運(yùn)算和邏輯運(yùn)算
4.3 位運(yùn)算
4.4 編譯器使用的優(yōu)化技巧
4.5 一次算法逆向之旅
4.6 本章小結(jié)
第5章 流程控制語句的識別
5.1 if語句
5.2 if…else…語句
5.3 用if構(gòu)成的多分支流程
5.4 switch的真相
5.5 難以構(gòu)成跳轉(zhuǎn)表的switch
5.6 降低判定樹的高度
5.7 dowhilefor的比較
5.8 編譯器對循環(huán)結(jié)構(gòu)的優(yōu)化
5.9 本章小結(jié)
第6章 函數(shù)的工作原理
6.1 棧幀的形成和關(guān)閉
6.2 各種調(diào)用方式的考察
6.3 使用ebp或esp尋址
6.4 函數(shù)的參數(shù)
6.5 函數(shù)的返回值
6.6 回顧
6.7 本章小結(jié)
第7章 變量在內(nèi)存中的位置和訪問方式
7.1 全局變量和局部變量的區(qū)別
7.2 局部靜態(tài)變量的工作方式
7.3 堆變量
7.4 本章小結(jié)
第8章 數(shù)組和指針的尋址
8.1 數(shù)組在函數(shù)內(nèi)
8.2 數(shù)組作為參數(shù)
8.3 數(shù)組作為返回值
8.4 下標(biāo)尋址和指針尋址
8.5 多維數(shù)組
8.6 存放指針類型數(shù)據(jù)的數(shù)組
8.7 指向數(shù)組的指針變量
8.8 函數(shù)指針
8.9 本章小結(jié)
第9章 結(jié)構(gòu)體和類
9.1 對象的內(nèi)存布局
9.2 this指針
9.3 靜態(tài)數(shù)據(jù)成員
9.4 對象作為函數(shù)參數(shù)
9.5 對象作為返回值
9.6 本章小結(jié)
第10章 關(guān)于構(gòu)造函數(shù)和析構(gòu)函數(shù)
10.1 構(gòu)造函數(shù)的出現(xiàn)時機(jī)
10.2 每個對象都有默認(rèn)的構(gòu)造函數(shù)嗎
10.3 析構(gòu)函數(shù)的出現(xiàn)時機(jī)
10.4 本章小結(jié)
第11章 關(guān)于虛函數(shù)
11.1 虛函數(shù)的機(jī)制
11.2 虛函數(shù)的識別
11.3 本章小結(jié)
第12章 從內(nèi)存角度看繼承和多重繼承
12.1 識別類和類之間的關(guān)系
12.2 多重繼承
12.3 虛基類
12.4 菱形繼承
12.5 本章小結(jié)
第13章 異常處理
13.1 異常處理的相關(guān)知識
13.2 異常類型為基本數(shù)據(jù)類型的處理流程
13.3 異常類型為對象的處理流程
13.4 識別異常處理
13.5 本章小結(jié)
第三部分 逆向分析技術(shù)應(yīng)用
第14章 PEiD的工作原理分析
14.1 開發(fā)環(huán)境的識別
14.2 開發(fā)環(huán)境的偽造
14.3 本章小結(jié)
第15章 “熊貓燒香”病毒逆向分析
15.1 調(diào)試環(huán)境配置
15.2 病毒程序初步分析
15.3 “熊貓燒香”的啟動過程分析
15.4 “熊貓燒香”的自我保護(hù)分析
15.5 “熊貓燒香”的感染過程分析
15.6 本章小結(jié)
第16章 調(diào)試器OllyDBG的工作原理分析
16.1 INT3斷點(diǎn)
16.2 內(nèi)存斷點(diǎn)
16.3 硬件斷點(diǎn)
16.4 異常處理機(jī)制
16.5 加載調(diào)試程序
16.6 本章小結(jié)
第17章 反匯編代碼的重建與編譯
17.1 重建反匯編代碼
17.2 編譯重建后的反匯編代碼
17.3 本章小結(jié)
參考文獻(xiàn)
章節(jié)摘錄
版權(quán)頁:插圖:下標(biāo)尋址方式也可以被指針尋址方式所代替,但指針尋址方式需要兩次間接訪問才能訪問到數(shù)組內(nèi)的元素,第一次是訪問指針變量,第二次才能訪問到數(shù)組元素,故指針尋址的執(zhí)行效率不會高于下標(biāo)尋址,但是在使用的過程中更加方便。數(shù)組下標(biāo)和指針的尋址如此相似,如何在反匯編代碼中區(qū)分它們呢?只要抓住一點(diǎn)即可,那就是指針尋址需要兩次以上間接訪問才可以得到數(shù)據(jù)。因此,在出現(xiàn)了兩次間接訪問的反匯編代碼中,如果第一次間接訪問得到的值作為地址,則必然存在指針。圖8.6就使用寄存器作為指針變量,保存全局?jǐn)?shù)組的地址,從而利用保存了全局?jǐn)?shù)組首地址的寄存器對該數(shù)組進(jìn)行間接訪問操作。數(shù)組下標(biāo)尋址的識別相對復(fù)雜,下標(biāo)為常量時,由于數(shù)組的元素長度固定,siZeof(type)*n也為常量,產(chǎn)生了常量折疊,編譯前可直接算出偏移量,因此只需使用數(shù)組首地址作為基址加偏移即可尋址相關(guān)數(shù)據(jù),不會出現(xiàn)二次尋址現(xiàn)象。當(dāng)下標(biāo)為變量或者變量表達(dá)式時,會明顯體現(xiàn)出數(shù)組的尋址公式,且發(fā)生兩次內(nèi)存訪問,但是和指針尋址明顯不同,第一次訪問的是下標(biāo),這個值一般不會作為地址使用,且代入公式計算后才得到地址。值得注意的是,在打開優(yōu)化選項02后,需留心各種優(yōu)化方式。
媒體關(guān)注與評論
“工欲善其事,必先利其器”。我經(jīng)常對課題組的研究生說:“學(xué)習(xí)知識要把握事物本質(zhì)(即夯實(shí)基礎(chǔ)),基礎(chǔ)牢固了,學(xué)習(xí)任何技術(shù)都能事半功倍,反之亦然?!边@是一本能為程序員(尤其是C++程序員)打牢基礎(chǔ)的專業(yè)書籍,它將引導(dǎo)你一步一步去深入探究和分析程序的本質(zhì),從而逐漸讓你在專業(yè)上感到踏實(shí)和自信,并在這個領(lǐng)域有豁然開朗的感覺。本書非常適合那些想通過反匯編與逆向分析等技術(shù)手段探究C++應(yīng)用底層奧秘的人,當(dāng)然,你還要能耐得住寂寞! ——彭國軍 武漢大學(xué)計算機(jī)學(xué)院副教授我與老錢相識已經(jīng)相當(dāng)長時間了,他給我的印象是為人簡單、厚道、仗義。他的書一如他的為人,用簡單、精煉、易懂的語言詮釋了程序世界里晦澀難懂的反匯編與逆向分析技術(shù),是一本不可多得的好書?! 鼋ㄔ?中南民族大學(xué)計算機(jī)科學(xué)學(xué)院副院長隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,以及互聯(lián)網(wǎng)應(yīng)用的不斷暴增和普及,計算機(jī)系統(tǒng)的安全保護(hù)在今天已經(jīng)成為一個重要的課題。有一群默默無聞的工作者,他們的職業(yè)是“病毒分析”,一個合格的病毒分析人員必須具備過硬的軟件逆向技術(shù)。本書是一本可以給病毒分析人員系統(tǒng)而全面的指導(dǎo)的專業(yè)書籍,對反匯編與逆向分析技術(shù)進(jìn)行了深入且全面的講解,對有志于從事軟件安全相關(guān)工作的人來說,本書將對他們大有裨益,值得推薦。 ——蠕輝 金山網(wǎng)絡(luò)安全副總監(jiān)一口氣讀完本書的初稿,細(xì)細(xì)回味,有幾點(diǎn)突出的感受:第一,視角獨(dú)特、內(nèi)容豐富,是作者多年實(shí)踐和教學(xué)經(jīng)驗的結(jié)晶;第二,深入淺出、重視基礎(chǔ),不適合走馬觀花式地閱讀,而是要慢慢研讀;第三,內(nèi)容嚴(yán)謹(jǐn)、語言精煉,從中可以看出作者對逆向分析技術(shù)之精通和寫作本書的良苦用心。如果你想系統(tǒng)且深入地學(xué)習(xí)反匯編與逆向分析技術(shù),本書是非常不錯的選擇,強(qiáng)烈推薦! ——單海波 安全技術(shù)專家/《微軟,NET程序的加密與解密》一書的合著者軟件逆向工程主要是通過研究和分析現(xiàn)有的軟件產(chǎn)品來發(fā)現(xiàn)其規(guī)律,從而改進(jìn)并超越現(xiàn)有產(chǎn)品的過程。通過逆向工程技術(shù),研究人員可以學(xué)習(xí)他人的編程技術(shù)和技巧,窺探商業(yè)軟件的秘密,或開發(fā)與其兼容的軟件。同時,利用逆向工程技術(shù)可以對現(xiàn)有軟件進(jìn)行改造,可以在沒有源代碼的情況下修改目標(biāo)程序的二進(jìn)制代碼,擴(kuò)展程序的功能。掌握一定的逆向技術(shù),對程序員和安全工作者十分有好處。但由于技術(shù)比較復(fù)雜,初學(xué)者往往不知從何入手,既不知道學(xué)習(xí)的方向,又缺少經(jīng)驗和有效的分析工具,大都事倍功半。本書是學(xué)習(xí)逆向工程技術(shù)的一個很好的選擇,它從軟件逆向技術(shù)的基礎(chǔ)開始講解,逐步深入,在注重闡述逆向技術(shù)理論的同時,又結(jié)合生動的案例分析,深入淺出地向讀者展示了軟件逆向技術(shù)的精髓和實(shí)用技巧,能夠幫助讀者快速深入逆向工程技術(shù)的核心領(lǐng)域,獲得寶貴的知識和經(jīng)驗。誠然,要深入理解并熟練應(yīng)用逆向工程技術(shù),需要大家的勤奮與毅力,這個過程可能有時是枯燥的,但是當(dāng)你的功力達(dá)到一定水平的時候,你會在軟件分析的過程中產(chǎn)生一種直覺,看到目標(biāo)的匯編代碼,就能知道它們的作用和隱藏在其中的奧秘。這時,你會發(fā)現(xiàn)逆向工程是一門優(yōu)雅的數(shù)碼藝術(shù)展現(xiàn)形式,它的精神是“自由”?! 武摽囱┸浖踩W(wǎng)站創(chuàng)始人
編輯推薦
《C++反匯編與逆向分析技術(shù)揭秘》:深度揭秘軟件逆向分析技術(shù)的流程與方法,理論與實(shí)踐完美結(jié)合,由安全領(lǐng)域資深專家親自執(zhí)筆,看雪軟件安全網(wǎng)站創(chuàng)始人段鋼等多位安全領(lǐng)域?qū)<衣?lián)袂推薦。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載