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