出版時(shí)間:2012-4 出版社:電子工業(yè)出版社 作者:《黑客防線(xiàn)》編輯部 組編 頁(yè)數(shù):424
Tag標(biāo)簽:無(wú)
前言
前言 記得第一次在內(nèi)核中簡(jiǎn)單調(diào)用DbgPrint函數(shù)輸出“helloworld”時(shí)興奮得手舞足蹈,也記得之后開(kāi)發(fā)ARP防火墻時(shí)遭遇無(wú)數(shù)次藍(lán)屏而無(wú)限接近崩潰的狀態(tài)。時(shí)至今日,接觸Windows內(nèi)核安全編程已有三年時(shí)間了,期間斷斷續(xù)續(xù)地寫(xiě)了一些小程序,直到偶然一天收到《黑客防線(xiàn)》雜志的邀請(qǐng)而萌生了寫(xiě)一本書(shū)記錄自己一路走來(lái)經(jīng)歷的想法,對(duì)于和我一樣正走在學(xué)習(xí)Windows內(nèi)核安全編程之路上的菜鳥(niǎo)們來(lái)說(shuō),有很大的閱讀價(jià)值,尤其對(duì)于那些正準(zhǔn)備上路或者剛剛上路的新晉菜鳥(niǎo)而言,通過(guò)閱讀本書(shū),可以少走很多無(wú)謂的彎路。 本書(shū)的結(jié)構(gòu) 本書(shū)共包括10章,其中: 第1~3章為基礎(chǔ)篇,介紹基于Windows編程的基礎(chǔ)知識(shí); 第4~8章為提升篇,通過(guò)具體示例介紹各Windows組件相關(guān)的編程方法; 第9~10章為輔助篇,簡(jiǎn)單介紹安全編碼及逆向與調(diào)試程序的方法?! ”緯?shū)的理論部分主要以WDK文檔作為支撐,全書(shū)關(guān)于理論介紹的知識(shí)絕大部分來(lái)源于WDK,另外一小部分知識(shí)直接或間接來(lái)源于其他文檔(如Windbg文檔等)、書(shū)籍(如WindowsInternal4等)、網(wǎng)絡(luò)及個(gè)人經(jīng)驗(yàn)等?! ”緯?shū)的實(shí)踐部分來(lái)源于WDK提供的例子及個(gè)人項(xiàng)目,建議讀者在虛擬機(jī)中運(yùn)行示例?! ”緯?shū)的閱讀說(shuō)明 讀者可以根據(jù)需要選擇閱讀感興趣的章節(jié),也可以從頭至尾完整地閱讀全書(shū)?! 〕颂貏e說(shuō)明適用于Windows7或其他系統(tǒng)的內(nèi)容除外,本書(shū)所有的內(nèi)容默認(rèn)適用于WindowsXP系統(tǒng)。 每章提供的示例建議在虛擬機(jī)環(huán)境下運(yùn)行。由于本人能力和時(shí)間有限,并沒(méi)有在真機(jī)環(huán)境中測(cè)試過(guò),不能保證所提供的示例程序穩(wěn)定運(yùn)行在各種環(huán)境下,若直接運(yùn)行于真機(jī)環(huán)境中,可能會(huì)對(duì)您的計(jì)算機(jī)財(cái)產(chǎn)造成不必要的損害。 致謝 感謝趙躍華教授對(duì)我的悉心培養(yǎng);感謝張翼(xyzreg)學(xué)長(zhǎng)對(duì)我多年的指導(dǎo)和照顧;感謝全體535實(shí)驗(yàn)室的師弟師妹們對(duì)本書(shū)的文字修正;感謝黑客防線(xiàn)在合作過(guò)程中的細(xì)致幫助;最后,感謝我的父母對(duì)我無(wú)盡的給予?! ∪绻陂喿x過(guò)程中發(fā)現(xiàn)本書(shū)的技術(shù)性錯(cuò)誤,或者有好的建議,歡迎致信ifsecurity588@gmail.com。 作者 2011/12/28ax
內(nèi)容概要
本書(shū)詳細(xì)介紹了Windows平臺(tái)下的內(nèi)核安全編程知識(shí)。首先簡(jiǎn)單介紹了驅(qū)動(dòng)編程的基本方法;然后詳細(xì)介紹了Windows各個(gè)系統(tǒng)組件的工作原理,如文件系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)自上而下的執(zhí)行流程。同時(shí)還介紹了各個(gè)組件涉及的安全問(wèn)題,如文件隱藏、鍵盤(pán)記錄等,并通過(guò)工程項(xiàng)目讓讀者從代碼層級(jí)了解這些信息安全問(wèn)題及解決方法;最后介紹了驅(qū)動(dòng)編程本身的安全問(wèn)題,如安全編碼的注意事項(xiàng)和脆弱代碼的檢測(cè)手段。另外本書(shū)還介紹了簡(jiǎn)單的調(diào)試和逆向技術(shù),幫助解決開(kāi)發(fā)過(guò)程中遇到的技術(shù)難題。通過(guò)閱讀本書(shū),可以幫助讀者更深層次的了解內(nèi)核態(tài)下的信息安全知識(shí)。
本書(shū)適合大專(zhuān)院校計(jì)算機(jī)系的學(xué)生、windows程序員、從事信息安全行業(yè)的工程師以及所有對(duì)windows內(nèi)核安全編程感興趣的愛(ài)好者使用。
書(shū)籍目錄
第一部分 基礎(chǔ)篇
第1章 前置要求與環(huán)境搭建
1.1 驅(qū)動(dòng)編程的語(yǔ)言
1.2 開(kāi)發(fā)環(huán)境搭建
1.2.1 Visual Studio 2005/2008的安裝與配置
1.2.2 WDK的安裝與配置
1.2.3 VisualDDK的安裝與配置
1.3 常用工具介紹
第2章 內(nèi)核編程基礎(chǔ)知識(shí)
2.1 Windows主要系統(tǒng)組件
2.1.1 對(duì)象管理器
2.1.2 內(nèi)存管理器
2.1.3 進(jìn)程和線(xiàn)程管理器
2.1.4 I/O管理器
2.1.5 PnP管理器
2.1.6 電源管理器
2.1.7 配置管理器
2.1.8 安全引用監(jiān)視器
2.2 常見(jiàn)名詞解釋
2.2.1 內(nèi)核名詞
2.2.2 文件名詞
2.2.3 網(wǎng)絡(luò)名詞
2.3 常見(jiàn)內(nèi)核數(shù)據(jù)結(jié)構(gòu)
2.3.1 驅(qū)動(dòng)框架常見(jiàn)數(shù)據(jù)結(jié)構(gòu)
2.3.2 進(jìn)程與線(xiàn)程數(shù)據(jù)結(jié)構(gòu)
2.3.3 存儲(chǔ)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)
2.3.4 網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)
2.3.5 其他一些常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)
第3章 基本編程方法
3.1 簡(jiǎn)單的NT式驅(qū)動(dòng)模型
3.1.1 驅(qū)動(dòng)模型的選擇
3.1.2 NT式驅(qū)動(dòng)程序基本結(jié)構(gòu)
3.1.3 編譯驅(qū)動(dòng)程序
3.1.4 加載驅(qū)動(dòng)及查看輸出信息
3.2 應(yīng)用層與內(nèi)核的通信方法
3.2.1 訪(fǎng)問(wèn)數(shù)據(jù)的I/O方式
3.2.2 讀寫(xiě)驅(qū)動(dòng)程序
3.2.3 發(fā)送I/O控制碼
3.2.4 內(nèi)存共享
3.3 同步技術(shù)
3.3.1 事件對(duì)象
3.3.2 信號(hào)燈對(duì)象
3.3.3 互斥體對(duì)象
3.3.4 定時(shí)器對(duì)象
3.3.5 自旋鎖
3.3.6 回調(diào)對(duì)象
3.3.7 原子操作
3.4 IRP處理
3.4.1 簡(jiǎn)單的IRP流動(dòng)圖
3.4.2 IRP的創(chuàng)建
3.4.3 IRP的發(fā)送
3.4.4 為IRP設(shè)置完成函數(shù)
3.4.5 IRP的完成
3.4.6 多種典型的 IRP處理示例
3.5 字符串操作
3.5.1 STRING、ANSI_STRING和UNICODE_STRING
3.5.2 初始化和銷(xiāo)毀
3.5.3 復(fù)制和添加
3.5.4 比較
3.5.5 轉(zhuǎn)換
3.6 內(nèi)存管理
3.6.1 分配系統(tǒng)空間內(nèi)存
3.6.2 運(yùn)行時(shí)庫(kù)管理函數(shù)
3.6.3 使用內(nèi)核棧
3.6.4 使用Lookaside快速鏈表
3.6.5 訪(fǎng)問(wèn)用戶(hù)空間內(nèi)存
3.6.6 內(nèi)存區(qū)對(duì)象和視圖
3.6.7 MDL的使用
3.7 注冊(cè)表編程
3.7.1 注冊(cè)表對(duì)象管理函數(shù)
3.7.2 注冊(cè)表運(yùn)行時(shí)庫(kù)函數(shù)
3.7.3 注冊(cè)表調(diào)用過(guò)濾
3.8 文件編程
3.8.1 打開(kāi)文件句柄
3.8.2 執(zhí)行相關(guān)文件操作
3.9 其他
3.9.1 本地系統(tǒng)服務(wù)函數(shù)的Nt和Zw版本
3.9.2 NTSTATUS返回值
3.9.3 雙向鏈表的使用
3.9.4 異常處理
第二部分 提升篇
第4章 進(jìn)程
4.1 進(jìn)程監(jiān)控實(shí)現(xiàn)原理
4.2 Windows 7系統(tǒng)下的進(jìn)程
監(jiān)控軟件實(shí)例
4.2.1 內(nèi)核模塊程序?qū)崿F(xiàn)
4.2.2 用戶(hù)模式程序?qū)崿F(xiàn)
4.3 安裝與使用
第5章 磁盤(pán)
5.1 存儲(chǔ)驅(qū)動(dòng)體系結(jié)構(gòu)
5.2 設(shè)備樹(shù)示例
5.3 diskperf磁盤(pán)過(guò)濾驅(qū)動(dòng)
5.3.1 diskperf介紹
5.3.2 diskperf的過(guò)濾框架
5.3.3 diskperf的PnP支持
5.3.4 diskperf的硬盤(pán)訪(fǎng)問(wèn)監(jiān)控和性能數(shù)據(jù)捕獲
5.3.5 diskperf的電源支持
5.3.6 diskperf的安裝與測(cè)試
第6章 鍵盤(pán)
6.1 原理跟蹤
6.1.1 自下而上的過(guò)程
6.1.2 自上而下的過(guò)程
6.2 幾種常見(jiàn)的鍵盤(pán)記錄行為
6.2.1 應(yīng)用層的消息鉤子
6.2.2 鍵盤(pán)過(guò)濾驅(qū)動(dòng)
6.2.3 鍵盤(pán)類(lèi)驅(qū)動(dòng)的分發(fā)函數(shù)Hook
6.2.4 DKOM技術(shù)
6.2.5 其他方法
6.3 反鍵盤(pán)記錄
6.3.1 實(shí)現(xiàn)原理
6.3.2 反鍵盤(pán)記錄示例
第7章 文件
7.1 原理跟蹤
7.1.1 Windows存儲(chǔ)棧
7.1.2 不涉及緩存的數(shù)據(jù)存儲(chǔ)
7.1.3 涉及緩存的數(shù)據(jù)存儲(chǔ)
7.2 簡(jiǎn)單的文件隱藏
7.2.1 文件隱藏的原理
7.2.2 文件隱藏的實(shí)現(xiàn)
7.3 scanner掃描程序
7.3.1 過(guò)濾管理器與微過(guò)濾驅(qū)動(dòng)概念
7.3.2 使用過(guò)濾管理模型的優(yōu)勢(shì)
7.3.3 微過(guò)濾驅(qū)動(dòng)的加載和卸載
7.3.4 用戶(hù)模式和內(nèi)核模式的交互
7.3.5 scanner介紹
7.3.6 scanner驅(qū)動(dòng)程序
7.3.7 scanner應(yīng)用層程序
7.3.8 scanner的安裝與使用
第8章 網(wǎng)絡(luò)
8.1 原理跟蹤
8.2 NDIS協(xié)議驅(qū)動(dòng)
8.2.1 DriverEntry
8.2.2 綁定
8.2.3 數(shù)據(jù)發(fā)送
8.2.4 數(shù)據(jù)接收
8.2.5 數(shù)據(jù)流動(dòng)總結(jié)
8.3 OPEN_BLOCK的展示
8.3.1 原理知識(shí)
8.3.2 相關(guān)代碼
第三部分 輔助篇
第9章 安全編碼
9.1 藍(lán)屏的概念
9.2 創(chuàng)建可靠的驅(qū)動(dòng)程序
9.2.1 驗(yàn)證設(shè)備對(duì)象
9.2.2 使用安全字符串
9.2.3 驗(yàn)證對(duì)象句柄
9.2.4 支持多CPU
9.2.5 確認(rèn)驅(qū)動(dòng)狀態(tài)
9.2.6 IRP安全檢查
9.3 使用驅(qū)動(dòng)驗(yàn)證程序
9.3.1 驅(qū)動(dòng)驗(yàn)證程序的測(cè)試選項(xiàng)
9.3.2 使用驅(qū)動(dòng)驗(yàn)證程序
第10章 調(diào)試與逆向
10.1 靜態(tài)調(diào)試
10.1.1 靜態(tài)調(diào)試驅(qū)動(dòng)程序
10.1.2 靜態(tài)調(diào)試應(yīng)用程序
10.2 動(dòng)態(tài)調(diào)試
10.2.1 雙機(jī)調(diào)試的基本方法
10.2.2 WinDbg的常用命令
10.2.3 WinDbg的使用技巧
10.3 逆向與調(diào)試相結(jié)合
10.3.1 示例
章節(jié)摘錄
版權(quán)頁(yè): 插圖: 第2章 內(nèi)核編程基礎(chǔ)知識(shí) 2.1 Windows主要系統(tǒng)組件 2.1.1 對(duì)象管理器 Windows對(duì)象管理器用來(lái)管理對(duì)象。文件、設(shè)備、同步機(jī)制、注冊(cè)表鍵值等在內(nèi)核中都使用對(duì)象來(lái)表示。每個(gè)對(duì)象都有一個(gè)對(duì)象頭(包含對(duì)象的一些信息,如名詞、類(lèi)型和位置等)和一個(gè)對(duì)象體(包含與各種對(duì)象類(lèi)型相關(guān)的數(shù)據(jù))。 Windows包含超過(guò)25種類(lèi)型的對(duì)象,如文件、設(shè)備、線(xiàn)程、進(jìn)程、事件、互斥體、信號(hào)量、注冊(cè)表鍵、作業(yè)、內(nèi)存區(qū)、符號(hào)鏈接等。 對(duì)象管理器執(zhí)行如下的操作來(lái)管理對(duì)象: ?負(fù)責(zé)對(duì)象的創(chuàng)建和銷(xiāo)毀; ?維護(hù)一個(gè)對(duì)象名字空間以跟蹤對(duì)象信息; ?跟蹤分配給每一個(gè)進(jìn)程的資源; ?跟蹤具體對(duì)象的訪(fǎng)問(wèn)權(quán)限; ?在對(duì)象的生命期內(nèi)管理對(duì)象,判斷對(duì)象何時(shí)可以被銷(xiāo)毀。 對(duì)象管理器導(dǎo)出的接口函數(shù)通常包括一個(gè)“Ob”前綴,如ObGetObjectSecurity函數(shù)。 2.1.2內(nèi)存管理器 Windows內(nèi)存管理器用來(lái)管理物理內(nèi)存,主要執(zhí)行如下的操作: ?管理內(nèi)存的分配和銷(xiāo)毀: ?支持內(nèi)存映射文件、共享內(nèi)存及寫(xiě)時(shí)復(fù)制的實(shí)現(xiàn)。 內(nèi)存管理器導(dǎo)出的接口函數(shù)通常包括一個(gè)“Mm”前綴,如MmGetPhysicalAddress函數(shù)。 2.1.3進(jìn)程和線(xiàn)程管理器 進(jìn)程即當(dāng)前系統(tǒng)中正在運(yùn)行的軟件程序,每個(gè)進(jìn)程都有一個(gè)ID;線(xiàn)程則代表了程序的哪部分正在運(yùn)行,每個(gè)線(xiàn)程也有一個(gè)ID。 一個(gè)進(jìn)程可能包括多個(gè)線(xiàn)程,每個(gè)線(xiàn)程通過(guò)占用CPU時(shí)間獲得執(zhí)行。在單核處理器的機(jī)器上,雖然一個(gè)進(jìn)程可能擁有多個(gè)線(xiàn)程,但在某一時(shí)刻只有一個(gè)線(xiàn)程正在運(yùn)行,且每個(gè)線(xiàn)程只運(yùn)行很短的時(shí)間便切換到另一個(gè)線(xiàn)程繼續(xù)執(zhí)行,從而讓用戶(hù)產(chǎn)生錯(cuò)覺(jué),似乎同一時(shí)間有多個(gè)程序在執(zhí)行;在多核處理器機(jī)器上,在某一時(shí)刻可以有多個(gè)線(xiàn)程同時(shí)運(yùn)行。如果一個(gè)程序包含有多個(gè)線(xiàn)程,那么多個(gè)線(xiàn)程可以在不同的處理器上同時(shí)運(yùn)行。 Windows的進(jìn)程和線(xiàn)程管理器負(fù)責(zé)處理進(jìn)程中所有線(xiàn)程的執(zhí)行問(wèn)題。無(wú)論機(jī)器是單核或是多核,在驅(qū)動(dòng)編程中都必須仔細(xì)地處理所有的線(xiàn)程,無(wú)論這些線(xiàn)程按照什么順序獲得執(zhí)行,驅(qū)動(dòng)程序都會(huì)穩(wěn)定地運(yùn)行。 進(jìn)程和線(xiàn)程管理器導(dǎo)出的接口函數(shù)通常包括一個(gè)“Ps”前綴,如PsCreateSystemThread函數(shù)。
編輯推薦
《網(wǎng)絡(luò)安全入門(mén)與提高:Windows內(nèi)核安全編程從入門(mén)到實(shí)踐》適合大專(zhuān)院校計(jì)算機(jī)系的學(xué)生、Windows程序員、從事信息安全行業(yè)的工程師以及所有對(duì)Windows內(nèi)核安全編程感興趣的愛(ài)好者使用。
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
Windows內(nèi)核安全編程從入門(mén)到實(shí)踐 PDF格式下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版