出版時(shí)間:2012-6 出版社:人民郵電出版社 作者:冀云 頁(yè)數(shù):265 字?jǐn)?shù):406000
Tag標(biāo)簽:無(wú)
內(nèi)容概要
《C++黑客編程揭秘與防范》旨在通過(guò)簡(jiǎn)單的語(yǔ)法知識(shí)及常用的系統(tǒng)函數(shù)編程,完成一些有特定功能的安全工具,讓讀者對(duì)系統(tǒng)知識(shí)等各方面有一個(gè)全面的了解,并且在筆者的帶領(lǐng)下一步步完成書(shū)中的實(shí)例。本書(shū)主要內(nèi)容為:第1章了解黑客編程,主要講解了VC(Visual
C++的縮寫(xiě))和Windwos下安全編程方面的基礎(chǔ)知識(shí)。第2章 從剖析簡(jiǎn)單的木馬說(shuō)起,講解有關(guān)的網(wǎng)絡(luò)編程和協(xié)議知識(shí)。第3章
Windows應(yīng)用編程基礎(chǔ),講解API編程的技術(shù)。第4章 加密與解密,講解PE等加密有關(guān)的知識(shí)。第5章
HOOK編程,講解了與鉤子有關(guān)的知識(shí)。第6章
黑客編程剖析,剖析了病毒的原理和攻防技術(shù),以及安全工具的開(kāi)發(fā)。第7章最后的旅程——簡(jiǎn)單驅(qū)動(dòng)開(kāi)發(fā)及逆向。
《C++黑客編程揭秘與防范》適合網(wǎng)絡(luò)安全人員、黑客愛(ài)好者,以及相關(guān)的程序員閱讀。
書(shū)籍目錄
第1章 黑客編程入門(mén)
1.1 編程語(yǔ)言和開(kāi)發(fā)環(huán)境的選擇
1.1.1 何為SDK、API和MFC
1.1.2 VC6和SDK的配置
1.2 應(yīng)用程序的調(diào)試
1.2.1 編寫(xiě)我們的第一個(gè)程序
1.2.2 用VC6調(diào)試第一個(gè)程序
1.2.3 專(zhuān)業(yè)的應(yīng)用程序調(diào)試工具——OllyDbg
1.3 簡(jiǎn)單API的介紹
1.3.1 復(fù)制自身程序到Windows目錄和系統(tǒng)目錄下
1.3.2 獲得系統(tǒng)的相關(guān)信息
1.3.3 Debug和Release的編譯方式
1.3.4 查看函數(shù)定義
1.4 總結(jié)
第2章 木馬開(kāi)發(fā)剖析
2.1 網(wǎng)絡(luò)通信基礎(chǔ)
2.1.1 IP地址的作用與分類(lèi)
2.1.2 端口的作用與分類(lèi)
2.2 網(wǎng)絡(luò)編程基礎(chǔ)知識(shí)
2.2.1 通信模型
2.2.2 Winsock
2.2.3 Winsock的相關(guān)函數(shù)
2.2.4 字節(jié)順序
2.3 簡(jiǎn)單的通信程序
2.3.1 基于TCP協(xié)議的“Hello World!”
2.3.2 基于UDP協(xié)議的“Hello World!”
2.4 實(shí)現(xiàn)一個(gè)C/S模式的簡(jiǎn)單木馬
2.4.1 木馬服務(wù)器端的實(shí)現(xiàn)
2.4.2 木馬客戶(hù)端的實(shí)現(xiàn)
2.5 總結(jié)
第3章 Windows應(yīng)用編程基礎(chǔ)
3.1 文件
3.1.1 打開(kāi)文件
3.1.2 文件操作
3.2 AutoRun免疫程序的編寫(xiě)
3.2.1 AutoRun免疫原理
3.2.2 AutoRun免疫程序的代碼實(shí)現(xiàn)
3.2.3 界面設(shè)置
3.2.4 代碼相關(guān)部分
3.3 注冊(cè)表操作
3.3.1 注冊(cè)表
3.3.2 與注冊(cè)表操作相關(guān)的常用API函數(shù)
3.3.3 注冊(cè)表啟動(dòng)項(xiàng)的管理
3.3.4 程序的界面設(shè)置及相關(guān)代碼
3.3.5 啟動(dòng)項(xiàng)的枚舉
3.3.6 添加啟動(dòng)項(xiàng)的代碼
3.3.7 刪除啟動(dòng)項(xiàng)的代碼
3.4 服務(wù)相關(guān)的編程
3.4.1 如何查看系統(tǒng)服務(wù)
3.4.2 服務(wù)控制管理器的開(kāi)發(fā)
3.4.3 枚舉服務(wù)的相關(guān)API函數(shù)
3.4.4 服務(wù)的停止
3.4.5 停止服務(wù)的相關(guān)API函數(shù)
3.4.6 服務(wù)的啟動(dòng)
3.5 進(jìn)程與線程
3.5.1 進(jìn)程
3.5.2 進(jìn)程的創(chuàng)建
3.5.3 “下載者”的簡(jiǎn)單演示
3.5.4 CreateProcess()函數(shù)介紹與程序創(chuàng)建
3.5.5 進(jìn)程的結(jié)束
3.5.6 進(jìn)程的枚舉
3.5.7 調(diào)整當(dāng)前進(jìn)程的權(quán)限
3.5.8 進(jìn)程的暫停與恢復(fù)
3.5.9 多線程
3.6 DLL編程
3.6.1 什么是DLL
3.6.2 編寫(xiě)一個(gè)簡(jiǎn)單的DLL程序
3.6.3 對(duì)DLL程序的調(diào)用方法一
3.6.4 對(duì)DLL程序的調(diào)用方法二
3.7 遠(yuǎn)程線程
3.7.1 DLL注入
3.7.2 DLL卸載
3.7.3 無(wú)DLL的代碼注入
3.8 總結(jié)
第4章 加密與解密
4.1 PE文件結(jié)構(gòu)
4.1.1 PE文件結(jié)構(gòu)全貌
4.1.2 MZ頭部
4.1.3 PE頭部
4.1.4 節(jié)表
4.1.5 節(jié)表數(shù)據(jù)
4.2 詳解PE文件結(jié)構(gòu)
4.2.1 DOS頭部詳解IMAGE_DOS_HEADER
4.2.2 PE頭部詳解IMAGE_NT_HEADERS
4.2.3 IAMGE_FILE_HEADER
4.2.4 IMAGE_OPTIONAL_HEADER
4.2.5 節(jié)區(qū)詳解IMAGE_SECTION_HEADER
4.2.6 與PE結(jié)構(gòu)相關(guān)的3種地址
4.2.7 3種地址的轉(zhuǎn)換
4.3 PE查看器
4.4 簡(jiǎn)單的查殼工具
4.5 地址轉(zhuǎn)換器
4.6 添加節(jié)區(qū)
4.6.1 手動(dòng)添加一個(gè)節(jié)區(qū)
4.6.2 通過(guò)編程添加節(jié)區(qū)
4.7 破解基礎(chǔ)知識(shí)及調(diào)試API函數(shù)的應(yīng)用
4.7.1 CrackMe程序
4.7.2 用OD破解CrackMe
4.8 文件補(bǔ)丁及內(nèi)存補(bǔ)丁
4.8.1 文件補(bǔ)丁
4.8.2 內(nèi)存補(bǔ)丁
4.9 調(diào)試API函數(shù)的使用
4.9.1 常見(jiàn)的3種斷點(diǎn)方法
4.9.2 調(diào)試API函數(shù)及相關(guān)結(jié)構(gòu)體介紹
4.9.3 判斷是否處于被調(diào)試狀態(tài)
4.9.4 斷點(diǎn)異常函數(shù)
4.9.5 調(diào)試事件
4.9.6 調(diào)試循環(huán)
4.9.7 內(nèi)存的操作
4.9.8 線程環(huán)境相關(guān)API及結(jié)構(gòu)體
4.10 打造一個(gè)密碼顯示器
4.11 總結(jié)
第5章 HOOK編程
5.1 HOOK知識(shí)前奏
5.2 內(nèi)聯(lián)鉤子——Inline Hook
5.2.1 Inline Hook的原理
5.2.2 Inline Hook的實(shí)現(xiàn)
5.2.3 HOOK MessageBoxA
5.2.4 HOOK CreateProcessW
5.2.5 7字節(jié)Inline Hook
5.2.6 Inline Hook的注意事項(xiàng)
5.3 導(dǎo)入地址表鉤子——IAT HOOK
5.3.1 導(dǎo)入表簡(jiǎn)介
5.3.2 導(dǎo)入表的數(shù)據(jù)結(jié)構(gòu)定義
5.3.3 手動(dòng)分析導(dǎo)入表
5.3.4 枚舉導(dǎo)入地址表
5.3.5 IAT HOOK介紹
5.3.6 IAT HOOK之CreateFileW()
5.4 Windows鉤子函數(shù)
5.4.1 鉤子原理
5.4.2 鉤子函數(shù)
5.4.3 鍵盤(pán)鉤子實(shí)例
5.4.4 使用鉤子進(jìn)行DLL注入
5.5 總結(jié)
第6章 黑客編程剖析
6.1 惡意程序剖析
6.1.1 惡意程序的自啟動(dòng)
6.1.2 木馬的配置生成與反彈端口
6.1.3 代碼實(shí)現(xiàn)剖析
6.2 簡(jiǎn)單病毒剖析
6.2.1 病毒的感染剖析
6.2.2 縫隙搜索的實(shí)現(xiàn)
6.2.3 感染目標(biāo)程序文件剖析
6.2.4 添加感染標(biāo)志
6.2.5 自刪除功能的實(shí)現(xiàn)
6.3 隱藏DLL文件
6.3.1 啟動(dòng)WinDBG
6.3.2 調(diào)試步驟
6.3.3 編寫(xiě)枚舉進(jìn)程中模塊的函數(shù)
6.3.4 指定模塊的隱藏
6.4 安全工具開(kāi)發(fā)基礎(chǔ)
6.4.1 行為監(jiān)控工具開(kāi)發(fā)基礎(chǔ)
6.4.2 專(zhuān)殺工具
6.4.3 U盤(pán)防御軟件
6.4.4 目錄監(jiān)控工具
6.5 引導(dǎo)區(qū)解析
6.5.1 通過(guò)WinHex來(lái)手動(dòng)解析引導(dǎo)區(qū)
6.5.2 通過(guò)程序解析MBR
6.5.3 自定義MBR的各種結(jié)構(gòu)體
6.5.4 解析MBR的程序?qū)崿F(xiàn)
6.6 加殼與脫殼
6.6.1 手動(dòng)加殼
6.6.2 編寫(xiě)簡(jiǎn)單的加殼工具
第7章 最后的旅程——簡(jiǎn)單驅(qū)動(dòng)開(kāi)發(fā)及逆向
7.1 驅(qū)動(dòng)版的“Hello World”
7.2 驅(qū)動(dòng)下的進(jìn)程遍歷
7.2.1 配置VMware和WinDbg進(jìn)行驅(qū)動(dòng)調(diào)試
7.2.2 EPROCESS和手動(dòng)遍歷進(jìn)程
7.2.3 編程實(shí)現(xiàn)進(jìn)程遍歷
7.3 HOOK SSDT(系統(tǒng)服務(wù)描述表)
7.3.1 SSDT簡(jiǎn)介
7.3.2 HOOK SSDT
7.3.3 Inline HOOK SSDT
7.4 應(yīng)用程序與驅(qū)動(dòng)程序的通信
7.4.1 創(chuàng)建設(shè)備
7.4.2 應(yīng)用程序與驅(qū)動(dòng)程序的通信方式
7.4.3 應(yīng)用程序與驅(qū)動(dòng)程序的通信實(shí)例
7.5 C語(yǔ)言代碼逆向基礎(chǔ)
7.5.1 函數(shù)的識(shí)別
7.5.2 if…else…分支結(jié)構(gòu)
7.5.3 switch分支結(jié)構(gòu)
7.5.4 for循環(huán)結(jié)構(gòu)
7.5.5 do…while與while…循環(huán)結(jié)構(gòu)
參考文獻(xiàn)
章節(jié)摘錄
版權(quán)頁(yè): 插圖: 從圖6—6中看到了反彈木馬的工作原理。通常情況下攻擊者的IP地址是變動(dòng)的,那么“小白”是如何連接到“黑客”的主機(jī)的呢?一般情況下黑客要把自己的IP地址動(dòng)態(tài)地保存到某個(gè)固定的IP地址下(比如保存到網(wǎng)上FTP空間中),然后木馬通過(guò)讀取該IP地址下保存的黑客的IP地址進(jìn)行連接,同樣用圖來(lái)說(shuō)明,如圖6—7所示。 從圖6—7中可以看出,黑客開(kāi)啟木馬客戶(hù)端后,首先會(huì)更新服務(wù)器上保存著的自己的IP地址。“小白”會(huì)去讀取服務(wù)器中保存著的黑客的IP地址,然后“小白”去連接“黑客”的主機(jī),主動(dòng)地讓黑客去控制它,這就是木馬中的“自動(dòng)上線”。關(guān)于反彈端口的介紹就到這里。有了思路,通過(guò)前面學(xué)習(xí)的Wmsock的知識(shí)自己可以試著實(shí)現(xiàn)一下,這里就不做更多的介紹了。 二、木馬的配置生成與配置信息的保護(hù) 木馬寫(xiě)好以后,通常會(huì)發(fā)布一個(gè)程序,在木馬程序中通過(guò)配置一些相關(guān)的內(nèi)容和參數(shù)后,會(huì)生成一個(gè)木馬的服務(wù)器端程序。為什么木馬的客戶(hù)端會(huì)生成木馬的服務(wù)端程序呢?其實(shí)木馬的客戶(hù)端和服務(wù)端本來(lái)就是兩個(gè)程序,只是通過(guò)某種方式使其成為了一個(gè)文件而已。讓木馬的服務(wù)端和客戶(hù)端成為一個(gè)文件可以有多種方法,常見(jiàn)的有資源法和文件附加數(shù)據(jù)法兩種。 在PE文件結(jié)構(gòu)中有一個(gè)數(shù)據(jù)目錄稱(chēng)作資源,資源可以是圖片、圖標(biāo)、音頻、視頻等內(nèi)容。資源法也就是把服務(wù)端以資源的形式連接到客戶(hù)端的程序中,然后客戶(hù)端通過(guò)一些操作資源的函數(shù)將資源讀取出來(lái)并生成文件。文件附加數(shù)據(jù)法是將服務(wù)端保存到客戶(hù)端的末尾,然后通過(guò)文件操作函數(shù),直接將服務(wù)端讀取出來(lái)并生成新的文件。 反彈端口連接是要訪問(wèn)某個(gè)固定的IP地址去讀取保存著黑客的動(dòng)態(tài)IP地址的信息,而這個(gè)固定的IP地址是保存在木馬程序中的。也就是說(shuō),我們的客戶(hù)端在把服務(wù)端生成以后,會(huì)把一些配置信息寫(xiě)入服務(wù)端程序的指定位置中,服務(wù)端程序會(huì)讀取指定位置的信息來(lái)進(jìn)行使用。配置信息的寫(xiě)入與讀出必須要一致,否則就沒(méi)有意義了。 對(duì)于配置信息中往往會(huì)存在一些比較敏感的信息,比如郵箱賬號(hào)、密碼等內(nèi)容。比如,我們?cè)诜治霰IQQ的木馬時(shí)會(huì)發(fā)現(xiàn)接收QQ密碼的郵箱,由于現(xiàn)在很多郵箱都需要SMTP的驗(yàn)證,因此在配置信息中也會(huì)看到郵箱的賬號(hào)及密碼信息。這樣配置信息中的這些敏感信息很容易被人獲取到,甚至接收QQ密碼郵箱的賬號(hào)和密碼也會(huì)被別人獲取到,真是“偷雞不成蝕把米”。對(duì)于此類(lèi)情況,正確的做法是對(duì)配置信息進(jìn)行加密。也就是說(shuō)客戶(hù)端往服務(wù)端中寫(xiě)配置信息前需要加密后再寫(xiě)入,而服務(wù)端在使用這些信息前需要先解密再使用。 關(guān)于配置生成客戶(hù)端與配置信息的保護(hù)上面已經(jīng)介紹得差不多了,接下來(lái)應(yīng)該把重點(diǎn)放在代碼的實(shí)現(xiàn)上了。我們的代碼是模擬實(shí)現(xiàn)上面的內(nèi)容,而不是真的去生成木馬。
編輯推薦
1、講解windows安全和網(wǎng)絡(luò)編程知識(shí);2、講解內(nèi)核編程以及軟件逆向知識(shí);
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版