首 頁(yè)
手機(jī)版

windows內(nèi)核安全與驅(qū)動(dòng)開(kāi)發(fā) 譚文 陳銘霖pdf掃描版

  • 軟件大?。?03.53M
  • 軟件語(yǔ)言:簡(jiǎn)體中文
  • 軟件類型:國(guó)產(chǎn)軟件
  • 軟件授權(quán):免費(fèi)軟件
  • 更新時(shí)間:2023/08/30
  • 軟件類別:電子閱讀
  • 應(yīng)用平臺(tái):Windows10,Windows8,Windows7,WinVista,Win2003,WinXP,Win2000
網(wǎng)友評(píng)分:7.0分
網(wǎng)友評(píng)論 下載地址 收藏該頁(yè)
本地下載
windows內(nèi)核安全與驅(qū)動(dòng)開(kāi)發(fā)是一本W(wǎng)indows客戶端安全軟件開(kāi)發(fā)指導(dǎo)書籍,由譚文,陳銘霖編著,全書主要講解的是Windows客戶端安全軟件開(kāi)發(fā)相關(guān)的驅(qū)動(dòng)程序開(kāi)發(fā),書中的程序使用環(huán)境從32位到64位,從Windows XP到Windows 8都有涉及,大部分程序不經(jīng)過(guò)修改即可在Windows 10上運(yùn)行。同時(shí)本書也深入淺出地介紹了進(jìn)行內(nèi)核安全編程所需要的操作系統(tǒng)、匯編等基礎(chǔ)知識(shí),適用于計(jì)算機(jī)安全軟件從業(yè)人員、計(jì)算機(jī)相關(guān)專業(yè)院校學(xué)生以及有一定C語(yǔ)言和操作系統(tǒng)基礎(chǔ)知識(shí)的編程愛(ài)好者閱讀。

內(nèi)容簡(jiǎn)介

windows內(nèi)核安全與驅(qū)動(dòng)開(kāi)發(fā)共分三篇,基礎(chǔ)篇囊括了驅(qū)動(dòng)開(kāi)發(fā)的基礎(chǔ)知識(shí),降低了入門的難度;開(kāi)發(fā)篇介紹了在實(shí)際工作中可能遇到的各種開(kāi)發(fā)需求的技術(shù)實(shí)現(xiàn),包括:串口的過(guò)濾、鍵盤的過(guò)濾、磁盤的虛擬、磁盤的過(guò)濾、文件系統(tǒng)的過(guò)濾與監(jiān)控、文件系統(tǒng)透明加密、文件系統(tǒng)微過(guò)濾驅(qū)動(dòng)、網(wǎng)絡(luò)傳輸層過(guò)濾、Windows過(guò)濾平臺(tái)、NDIS協(xié)議驅(qū)動(dòng)、NDIS小端口驅(qū)動(dòng)、NDIS中間層驅(qū)動(dòng)、IA-32匯編基礎(chǔ)、IA-32體系中的內(nèi)存地址、處理器權(quán)限級(jí)別切換、IA-32體系結(jié)構(gòu)中的中斷和Windows內(nèi)核掛鉤;高級(jí)篇包含了匯編語(yǔ)言、操作系統(tǒng)原理、處理器體系架構(gòu)相關(guān)的內(nèi)容。

作者簡(jiǎn)介

譚文,畢業(yè)于西安交通大學(xué)。2002-2005:杭州核新軟件技術(shù)有限公司,虛擬磁盤與防火墻項(xiàng)目組。2005-2008:日電卓越軟件(北京)有限公司上海分公司,信息安全課。2008-今:英特爾亞太研發(fā)有限公司,動(dòng)態(tài)指令轉(zhuǎn)換(BTPI)項(xiàng)目組。

Windows內(nèi)核安全與驅(qū)動(dòng)開(kāi)發(fā)章節(jié)目錄

第1章 內(nèi)核上機(jī)指導(dǎo)	2
1.1 下載和使用WDK	2
1.1.1 下載并安裝WDK	2
1.1.2 編寫第一個(gè)C文件	4
1.1.3 編譯一個(gè)工程	5
1.2 安裝與運(yùn)行	6
1.2.1 下載一個(gè)安裝工具	6
1.2.2 運(yùn)行與查看輸出信息	7
1.2.3 在虛擬機(jī)中運(yùn)行	8
1.3 調(diào)試內(nèi)核模塊	9
1.3.1 下載和安裝WinDbg	9
1.3.2 設(shè)置Windows XP調(diào)試執(zhí)行	9
1.3.3 設(shè)置Vista調(diào)試執(zhí)行	10
1.3.4 設(shè)置VMware的管道虛擬串口	11
1.3.5 設(shè)置Windows內(nèi)核符號(hào)表	12
1.3.6 實(shí)戰(zhàn)調(diào)試first	13
第2章 內(nèi)核編程環(huán)境及其特殊性	16
2.1 內(nèi)核編程的環(huán)境	16
2.1.1 隔離的應(yīng)用程序	16
2.1.2 共享的內(nèi)核空間	17
2.1.3 處不在的內(nèi)核模塊	18
2.2 數(shù)據(jù)類型	19
2.2.1 基本數(shù)據(jù)類型	19
2.2.2 返回狀態(tài)	19
2.2.3 字符串	20
2.3 重要的數(shù)據(jù)結(jié)構(gòu)	21
2.3.1 驅(qū)動(dòng)對(duì)象	21
2.3.2 設(shè)備對(duì)象	22
2.3.3 請(qǐng)求	24
2.4 函數(shù)調(diào)用	25
2.4.1 查閱幫助	25
2.4.2 幫助中有的幾類函數(shù)	26
2.4.3 幫助中沒(méi)有的函數(shù)	28
2.5 Windows的驅(qū)動(dòng)開(kāi)發(fā)模型	29
2.6 WDK編程中的特殊點(diǎn)	30
2.6.1 內(nèi)核編程的主要調(diào)用源	30
2.6.2 函數(shù)的多線程安全性	30
2.6.3 代碼的中斷級(jí)	32
2.6.4 WDK中出現(xiàn)的特殊代碼	32
第3章 字符串與鏈表	35
3.1 字符串操作	35
3.1.1 使用字符串結(jié)構(gòu)	35
3.1.2 字符串的初始化	36
3.1.3 字符串的拷貝	37
3.1.4 字符串的連接	38
3.1.5 字符串的打印	38
3.2 內(nèi)存與鏈表	40
3.2.1 內(nèi)存的分配與釋放	40
3.2.2 使用LIST_ENTRY	41
3.2.3 使用長(zhǎng)長(zhǎng)整型數(shù)據(jù)	43
3.3 自旋鎖	44
3.3.1 使用自旋鎖	44
3.3.2 在雙向鏈表中使用自旋鎖	45
3.3.3 使用隊(duì)列自旋鎖提高性能	46
第4章 文件、注冊(cè)表、線程	47
4.1 文件操作	47
4.1.1 使用OBJECT_ATTRIBUTES	47
4.1.2 打開(kāi)和關(guān)閉文件	48
4.1.3 文件讀/寫操作	51
4.2 注冊(cè)表操作	53
4.2.1 注冊(cè)表鍵的打開(kāi)	53
4.2.2 注冊(cè)表鍵值的讀	55
4.2.3 注冊(cè)表鍵值的寫	57
4.3 時(shí)間與定時(shí)器	58
4.3.1 獲得當(dāng)前“滴答”數(shù)	58
4.3.2 獲得當(dāng)前系統(tǒng)時(shí)間	58
4.3.3 使用定時(shí)器	59
4.4 線程與事件	62
4.4.1 使用系統(tǒng)線程	62
4.4.2 在線程中睡眠	63
4.4.3 使用同步事件	64
第5章 應(yīng)用與內(nèi)核通信	67
5.1 內(nèi)核方面的編程	68
5.1.1 生成控制設(shè)備	68
5.1.2 控制設(shè)備的名字和符號(hào)鏈接	70
5.1.3 控制設(shè)備的刪除	71
5.1.4 分發(fā)函數(shù)	72
5.1.5 請(qǐng)求的處理	73
5.2 應(yīng)用方面的編程	74
5.2.1 基本的功能需求	74
5.2.2 在應(yīng)用程序中打開(kāi)與關(guān)閉設(shè)備	75
5.2.3 設(shè)備控制請(qǐng)求	75
5.2.4 內(nèi)核中的對(duì)應(yīng)處理	77
5.2.5 結(jié)合測(cè)試的效果	79
5.3 阻塞、等待與安全設(shè)計(jì)	80
5.3.1 驅(qū)動(dòng)主動(dòng)通知應(yīng)用	80
5.3.2 通信接口的測(cè)試	81
5.3.3 內(nèi)核中的緩沖區(qū)鏈表結(jié)構(gòu)	83
5.3.4 輸入:內(nèi)核中的請(qǐng)求處理中的安全檢查	84
5.3.5 輸出處理與卸載清理	85
第6章 64位和32位內(nèi)核開(kāi)發(fā)差異	88
6.1 64位系統(tǒng)新增機(jī)制	88
6.1.1 WOW64子系統(tǒng)	88
6.1.2 PatchGuard技術(shù)	91
6.1.3 64位驅(qū)動(dòng)的編譯、安裝與運(yùn)行	91
6.2 編程差異	92
6.2.1 匯編嵌入變化	92
6.2.2 預(yù)處理與條件編譯	93
6.2.3 數(shù)據(jù)結(jié)構(gòu)調(diào)整	93 
開(kāi) 發(fā) 篇
第7章 串口的過(guò)濾	96
7.1 過(guò)濾的概念	96
7.1.1 設(shè)備綁定的內(nèi)核API之一	97
7.1.2 設(shè)備綁定的內(nèi)核API之二	98
7.1.3 生成過(guò)濾設(shè)備并綁定	98
7.1.4 從名字獲得設(shè)備對(duì)象	100
7.1.5 綁定所有串口	101
7.2 獲得實(shí)際數(shù)據(jù)	102
7.2.1 請(qǐng)求的區(qū)分	102
7.2.2 請(qǐng)求的結(jié)局	103
7.2.3 寫請(qǐng)求的數(shù)據(jù)	104
7.3 完整的代碼	105
7.3.1 完整的分發(fā)函數(shù)	105
7.3.2 如何動(dòng)態(tài)卸載	106
7.3.3 代碼的編譯與運(yùn)行	107
第8章 鍵盤的過(guò)濾	109
8.1 技術(shù)原理	110
8.1.1 預(yù)備知識(shí)	110
8.1.2 Windows中從擊鍵到內(nèi)核	110
8.1.3 鍵盤硬件原理	112
8.2 鍵盤過(guò)濾的框架	112
8.2.1 找到所有的鍵盤設(shè)備	112
8.2.2 應(yīng)用設(shè)備擴(kuò)展	115
8.2.3 鍵盤過(guò)濾模塊的DriverEntry	117
8.2.4 鍵盤過(guò)濾模塊的動(dòng)態(tài)卸載	117
8.3 鍵盤過(guò)濾的請(qǐng)求處理	119
8.3.1 通常的處理	119
8.3.2 PNP的處理	120
8.3.3 讀的處理	121
8.3.4 讀完成的處理	122
8.4 從請(qǐng)求中打印出按鍵信息	123
8.4.1 從緩沖區(qū)中獲得KEYBOARD_INPUT_DATA	123
8.4.2 從KEYBOARD_INPUT_DATA中得到鍵	124
8.4.3 從MakeCode到實(shí)際字符	124
8.5 Hook分發(fā)函數(shù)	126
8.5.1 獲得類驅(qū)動(dòng)對(duì)象	126
8.5.2 修改類驅(qū)動(dòng)的分發(fā)函數(shù)指針	127
8.5.3 類驅(qū)動(dòng)之下的端口驅(qū)動(dòng)	128
8.5.4 端口驅(qū)動(dòng)和類驅(qū)動(dòng)之間的協(xié)作機(jī)制	129
8.5.5 找到關(guān)鍵的回調(diào)函數(shù)的條件	129
8.5.6 定義常數(shù)和數(shù)據(jù)結(jié)構(gòu)	130
8.5.7 打開(kāi)兩種鍵盤端口驅(qū)動(dòng)尋找設(shè)備	131
8.5.8 搜索在KbdClass類驅(qū)動(dòng)中的地址	133
8.6 Hook鍵盤中斷反過(guò)濾	135
8.6.1 中斷:IRQ和INT	136
8.6.2 如何修改IDT	136
8.6.3 替換IDT中的跳轉(zhuǎn)地址	137
8.6.4 QQ的PS/2反過(guò)濾措施	139
8.7 直接用端口操作鍵盤	139
8.7.1 讀取鍵盤數(shù)據(jù)和命令端口	139
8.7.2 p2cUserFilter的最終實(shí)現(xiàn)	140
第9章 磁盤的虛擬	143
9.1 虛擬的磁盤	143
9.2 一個(gè)具體的例子	143
9.3 入口函數(shù)	144
9.3.1 入口函數(shù)的定義	144
9.3.2 Ramdisk驅(qū)動(dòng)的入口函數(shù)	145
9.4 EvtDriverDeviceAdd函數(shù)	146
9.4.1 EvtDriverDeviceAdd的定義	146
9.4.2 局部變量的聲明	146
9.4.3 磁盤設(shè)備的創(chuàng)建	147
9.4.4 如何處理發(fā)往設(shè)備的請(qǐng)求	148
9.4.5 用戶配置的初始化	149
9.4.6 鏈接給應(yīng)用程序	151
9.4.7 小結(jié)	152
9.5 FAT12/16磁盤卷初始化	152
9.5.1 磁盤卷結(jié)構(gòu)簡(jiǎn)介	152
9.5.2 Ramdisk對(duì)磁盤的初始化	154
9.6 驅(qū)動(dòng)中的請(qǐng)求處理	160
9.6.1 請(qǐng)求的處理	160
9.6.2 讀/寫請(qǐng)求	160
9.6.3 DeviceIoControl請(qǐng)求	162
9.7 Ramdisk的編譯和安裝	164
9.7.1 編譯	164
9.7.2 安裝	164
9.7.3 對(duì)安裝的深入探究	165
第10章 磁盤的過(guò)濾	167
10.1 磁盤過(guò)濾驅(qū)動(dòng)的概念	167
10.1.1 設(shè)備過(guò)濾和類過(guò)濾	167
10.1.2 磁盤設(shè)備和磁盤卷設(shè)備過(guò)濾驅(qū)動(dòng)	167
10.1.3 注冊(cè)表和磁盤卷設(shè)備過(guò)濾驅(qū)動(dòng)	168
10.2 具有還原功能的磁盤卷過(guò)濾驅(qū)動(dòng)	168
10.2.1 簡(jiǎn)介	168
10.2.2 基本思想	169
10.3 驅(qū)動(dòng)分析	169
10.3.1 DriverEntry函數(shù)	169
10.3.2 AddDevice函數(shù)	170
10.3.3 PnP請(qǐng)求的處理	174
10.3.4 Power請(qǐng)求的處理	178
10.3.5 DeviceIoControl請(qǐng)求的處理	178
10.3.6 bitmap的作用和分析	182
10.3.7 boot驅(qū)動(dòng)完成回調(diào)函數(shù)和稀疏文件	187
10.3.8 讀/寫請(qǐng)求的處理	190
第11章 文件系統(tǒng)的過(guò)濾與監(jiān)控	199
11.1 文件系統(tǒng)的設(shè)備對(duì)象	200
11.1.1 控制設(shè)備與卷設(shè)備	200
11.1.2 生成自己的一個(gè)控制設(shè)備	201
11.2 文件系統(tǒng)的分發(fā)函數(shù)	202
11.2.1 普通的分發(fā)函數(shù)	202
11.2.2 文件過(guò)濾的快速IO分發(fā)函數(shù)	203
11.2.3 快速IO分發(fā)函數(shù)的一個(gè)實(shí)現(xiàn)	205
11.2.4 快速IO分發(fā)函數(shù)逐個(gè)簡(jiǎn)介	206
11.3 設(shè)備的綁定前期工作	207
11.3.1 動(dòng)態(tài)地選擇綁定函數(shù)	207
11.3.2 注冊(cè)文件系統(tǒng)變動(dòng)回調(diào)	208
11.3.3 文件系統(tǒng)變動(dòng)回調(diào)的一個(gè)實(shí)現(xiàn)	209
11.3.4 文件系統(tǒng)識(shí)別器	211
11.4 文件系統(tǒng)控制設(shè)備的綁定	212
11.4.1 生成文件系統(tǒng)控制設(shè)備的過(guò)濾設(shè)備	212
11.4.2 綁定文件系統(tǒng)控制設(shè)備	213
11.4.3 利用文件系統(tǒng)控制請(qǐng)求	215
11.5 文件系統(tǒng)卷設(shè)備的綁定	217
11.5.1 從IRP中獲得VPB指針	217
11.5.2 設(shè)置完成函數(shù)并等待IRP完成	218
11.5.3 卷掛載IRP完成后的工作	221
11.5.4 完成函數(shù)的相應(yīng)實(shí)現(xiàn)	223
11.5.5 綁定卷的實(shí)現(xiàn)	224
11.6 讀/寫操作的過(guò)濾	226
11.6.1 設(shè)置一個(gè)讀處理函數(shù)	226
11.6.2 設(shè)備對(duì)象的區(qū)分處理	227
11.6.3 解析讀請(qǐng)求中的文件信息	228
11.6.4 讀請(qǐng)求的完成	230
11.7 其他操作的過(guò)濾	234
11.7.1 文件對(duì)象的生存周期	234
11.7.2 文件的打開(kāi)與關(guān)閉	235
11.7.3 文件的刪除	237
11.8 路徑過(guò)濾的實(shí)現(xiàn)	238
11.8.1 取得文件路徑的三種情況	238
11.8.2 打開(kāi)成功后獲取路徑	238
11.8.3 在其他時(shí)刻獲得文件路徑	240
11.8.4 在打開(kāi)請(qǐng)求完成之前獲得路徑名	240
11.8.5 把短名轉(zhuǎn)換為長(zhǎng)名	242
11.9 把sfilter編譯成靜態(tài)庫(kù)	243
11.9.1 如何方便地使用sfilter	243
11.9.2 初始化回調(diào)、卸載回調(diào)和綁定回調(diào)	244
11.9.3 綁定與回調(diào)	245
11.9.4 插入請(qǐng)求回調(diào)	246
11.9.5 如何利用sfilter.lib	249
第12章 文件系統(tǒng)透明加密	252
12.1 文件透明加密的應(yīng)用	252
12.1.1 防止企業(yè)信息泄密	252
12.1.2 文件透明加密防止企業(yè)信息泄密	253
12.1.3 文件透明加密軟件的例子	253
12.2 區(qū)分進(jìn)程	254
12.2.1 機(jī)密進(jìn)程與普通進(jìn)程	254
12.2.2 找到進(jìn)程名字的位置	255
12.2.3 得到當(dāng)前進(jìn)程的名字	256
12.3 內(nèi)存映射與文件緩沖	257
12.3.1 記事本的內(nèi)存映射文件	257
12.3.2 Windows的文件緩沖	258
12.3.3 文件緩沖:明文還是密文的選擇	259
12.3.4 清除文件緩沖	260
12.4 加密標(biāo)識(shí)	263
12.4.1 保存在文件外、文件頭還是文件尾	263
12.4.2 隱藏文件頭的大小	264
12.4.3 隱藏文件頭的設(shè)置偏移	266
12.4.4 隱藏文件頭的讀/寫偏移	267
12.5 文件加密表	267
12.5.1 何時(shí)進(jìn)行加密操作	267
12.5.2 文件控制塊與文件對(duì)象	268
12.5.3 文件加密表的數(shù)據(jù)結(jié)構(gòu)與初始化	269
12.5.4 文件加密表的操作:查詢	270
12.5.5 文件加密表的操作:添加	271
12.5.6 文件加密表的操作:刪除	272
12.6 文件打開(kāi)處理	273
12.6.1 直接發(fā)送IRP進(jìn)行查詢與設(shè)置操作	274
12.6.2 直接發(fā)送IRP進(jìn)行讀/寫操作	276
12.6.3 文件的非重入打開(kāi)	277
12.6.4 文件的打開(kāi)預(yù)處理	280
12.7 讀/寫加密和解密	285
12.7.1 在讀取時(shí)進(jìn)行解密	285
12.7.2 分配與釋放MDL	286
12.7.3 寫請(qǐng)求加密	287
12.8 crypt_file的組裝	289
12.8.1 crypt_file的初始化	289
12.8.2 crypt_file的IRP預(yù)處理	290
12.8.3 crypt_file的IRP后處理	293
第13章 文件系統(tǒng)微過(guò)濾驅(qū)動(dòng)	297
13.1 文件系統(tǒng)微過(guò)濾驅(qū)動(dòng)簡(jiǎn)介	297
13.1.1 文件系統(tǒng)微過(guò)濾驅(qū)動(dòng)的由來(lái)	297
13.1.2 Minifilter的優(yōu)點(diǎn)與不足	298
13.2 Minifilter的編程框架	298
13.2.1 微文件系統(tǒng)過(guò)濾的注冊(cè)	299
13.2.2 微過(guò)濾器的數(shù)據(jù)結(jié)構(gòu)	300
13.2.3 卸載回調(diào)函數(shù)	303
13.2.4 預(yù)操作回調(diào)函數(shù)	303
13.2.5 后操作回調(diào)函數(shù)	306
13.2.6 其他回調(diào)函數(shù)	307
13.3 Minifilter如何與應(yīng)用程序通信	309
13.3.1 建立通信端口的方法	310
13.3.2 在用戶態(tài)通過(guò)DLL使用通信端口的范例	311
13.4 Minifilter的安裝與加載	314
13.4.1 安裝Minifilter的INF文件	314
13.4.2 啟動(dòng)安裝完成的Minifilter	316
第14章 網(wǎng)絡(luò)傳輸層過(guò)濾	317
14.1 TDI概要	317
14.1.1 為何選擇TDI	317
14.1.2 從socket到Windows內(nèi)核	318
14.1.3 TDI過(guò)濾的代碼例子	319
14.2 TDI的過(guò)濾框架	319
14.2.1 綁定TDI的設(shè)備	319
14.2.2 唯一的分發(fā)函數(shù)	320
14.2.3 過(guò)濾框架的實(shí)現(xiàn)	322
14.2.4 主要過(guò)濾的請(qǐng)求類型	323
14.3 生成請(qǐng)求:獲取地址	324
14.3.1 過(guò)濾生成請(qǐng)求	324
14.3.2 準(zhǔn)備解析IP地址與端口	326
14.3.3 獲取生成的IP地址和端口	327
14.3.4 連接終端的生成與相關(guān)信息的保存	329
14.4 控制請(qǐng)求	330
14.4.1 TDI_ASSOCIATE_ADDRESS的過(guò)濾	330
14.4.2 TDI_CONNECT的過(guò)濾	332
14.4.3 其他的次功能號(hào)	333
14.4.4 設(shè)置事件的過(guò)濾	334
14.4.5 TDI_EVENT_CONNECT類型的設(shè)置事件的過(guò)濾	336
14.4.6 直接獲取發(fā)送函數(shù)的過(guò)濾	337
14.4.7 清理請(qǐng)求的過(guò)濾	339
14.5 本書例子tdifw.lib的應(yīng)用	341
14.5.1 tdifw庫(kù)的回調(diào)接口	341
14.5.2 tdifw庫(kù)的使用例子	342
第15章 Windows過(guò)濾平臺(tái)	345
15.1 WFP簡(jiǎn)介	345
15.2 WFP框架	345
15.3 基本對(duì)象模型	347
15.3.1 過(guò)濾引擎	347
15.3.2 墊片	347
15.3.3 呼出接口	347
15.3.4 分層	348
15.3.5 子層	349
15.3.6 過(guò)濾器	350
15.3.7 呼出接口回調(diào)函數(shù)	354
15.4 WFP操作	359
15.4.1 呼出接口的注冊(cè)與卸載	360
15.4.2 呼出接口的添加與移除	360
15.4.3 子層的添加與移除	361
15.4.4 過(guò)濾器的添加	362
15.5 WFP過(guò)濾例子	362
第16章 NDIS協(xié)議驅(qū)動(dòng)	370
16.1 以太網(wǎng)包和網(wǎng)絡(luò)驅(qū)動(dòng)架構(gòu)	370
16.1.1 以太網(wǎng)包和協(xié)議驅(qū)動(dòng)	370
16.1.2 NDIS網(wǎng)絡(luò)驅(qū)動(dòng)	371
16.2 協(xié)議驅(qū)動(dòng)的DriverEntry	372
16.2.1 生成控制設(shè)備	372
16.2.2 注冊(cè)協(xié)議	374
16.3 協(xié)議與網(wǎng)卡的綁定	375
16.3.1 協(xié)議與網(wǎng)卡的綁定概念	375
16.3.2 綁定回調(diào)處理的實(shí)現(xiàn)	376
16.3.3 協(xié)議綁定網(wǎng)卡的API	378
16.3.4 解決綁定競(jìng)爭(zhēng)問(wèn)題	379
16.3.5 分配接收和發(fā)送的包池與緩沖池	380
16.3.6 OID請(qǐng)求的發(fā)送和請(qǐng)求完成回調(diào)	381
16.3.7 ndisprotCreateBinding的最終實(shí)現(xiàn)	385
16.4 綁定的解除	390
16.4.1 解除綁定使用的API	390
16.4.2 ndisprotShutdownBinding的實(shí)現(xiàn)	392
16.5 在用戶態(tài)操作協(xié)議驅(qū)動(dòng)	395
16.5.1 協(xié)議的收包與發(fā)包	395
16.5.2 在用戶態(tài)編程打開(kāi)設(shè)備	396
16.5.3 用DeviceIoControl發(fā)送控制請(qǐng)求	397
16.5.4 用WriteFile發(fā)送數(shù)據(jù)包	399
16.5.5 用ReadFile發(fā)送數(shù)據(jù)包	400
16.6 在內(nèi)核態(tài)完成功能的實(shí)現(xiàn)	402
16.6.1 請(qǐng)求的分發(fā)與實(shí)現(xiàn)	402
16.6.2 等待設(shè)備綁定完成與指定設(shè)備名	402
16.6.3 指派設(shè)備的完成	403
16.6.4 處理讀請(qǐng)求	406
16.6.5 處理寫請(qǐng)求	408
16.7 協(xié)議驅(qū)動(dòng)的接收回調(diào)	412
16.7.1 和接收包有關(guān)的回調(diào)函數(shù)	412
16.7.2 ReceiveHandler的實(shí)現(xiàn)	413
16.7.3 TransferDataCompleteHandler的實(shí)現(xiàn)	417
16.7.4 ReceivePacketHandler的實(shí)現(xiàn)	418
16.7.5 接收數(shù)據(jù)包的入隊(duì)	420
16.7.6 接收數(shù)據(jù)包的出隊(duì)和讀請(qǐng)求的完成	422
第17章 NDIS小端口驅(qū)動(dòng)	427
17.1 小端口驅(qū)動(dòng)的應(yīng)用與概述	427
17.1.1 小端口驅(qū)動(dòng)的應(yīng)用	427
17.1.2 小端口驅(qū)動(dòng)示例	428
17.1.3 小端口驅(qū)動(dòng)的運(yùn)作與編程概述	429
17.2 小端口驅(qū)動(dòng)的初始化	429
17.2.1 小端口驅(qū)動(dòng)的DriverEntry	429
17.2.2 小端口驅(qū)動(dòng)的適配器結(jié)構(gòu)	431
17.2.3 配置信息的讀取	433
17.2.4 設(shè)置小端口適配器上下文	433
17.2.5 MPInitialize的實(shí)現(xiàn)	434
17.2.6 MPHalt的實(shí)現(xiàn)	437
17.3 打開(kāi)ndisprot設(shè)備	438
17.3.1 IO目標(biāo)	438
17.3.2 給IO目標(biāo)發(fā)送DeviceIoControl請(qǐng)求	439
17.3.3 打開(kāi)ndisprot接口并完成配置設(shè)備	441
17.4 使用ndisprot發(fā)送包	443
17.4.1 小端口驅(qū)動(dòng)的發(fā)包接口	443
17.4.2 發(fā)送控制塊(TCB)	444
17.4.3 遍歷包組并填寫TCB	446
17.4.4 寫請(qǐng)求的構(gòu)建與發(fā)送	449
17.5 使用ndisprot接收包	451
17.5.1 提交數(shù)據(jù)包的內(nèi)核API	451
17.5.2 從接收控制塊(RCB)提交包	452
17.5.3 對(duì)ndisprot讀請(qǐng)求的完成函數(shù)	454
17.5.4 讀請(qǐng)求的發(fā)送	456
17.5.5 用于讀包的WDF工作任務(wù)	457
17.5.6 ndisedge讀工作任務(wù)的生成與入列	459
17.6 其他的特征回調(diào)函數(shù)的實(shí)現(xiàn)	461
17.6.1 包的歸還	461
17.6.2 OID查詢處理的直接完成	462
17.6.3 OID設(shè)置處理	465
第18章 NDIS中間層驅(qū)動(dòng)	467
18.1 NDIS中間層驅(qū)動(dòng)概述	467
18.1.1 Windows網(wǎng)絡(luò)架構(gòu)總結(jié)	467
18.1.2 NDIS中間層驅(qū)動(dòng)簡(jiǎn)介	468
18.1.3 NDIS中間層驅(qū)動(dòng)的應(yīng)用	469
18.1.4 NDIS包描述符結(jié)構(gòu)深究	470
18.2 中間層驅(qū)動(dòng)的入口與綁定	473
18.2.1 中間層驅(qū)動(dòng)的入口函數(shù)	473
18.2.2 動(dòng)態(tài)綁定NIC設(shè)備	474
18.2.3 小端口初始化(MpInitialize)	475
18.3 中間層驅(qū)動(dòng)發(fā)送數(shù)據(jù)包	477
18.3.1 發(fā)送數(shù)據(jù)包原理	477
18.3.2 包描述符“重利用”	478
18.3.3 包描述符“重申請(qǐng)”	481
18.3.4 發(fā)送數(shù)據(jù)包的異步完成	482
18.4 中間層驅(qū)動(dòng)接收數(shù)據(jù)包	484
18.4.1 接收數(shù)據(jù)包概述	484
18.4.2 用PtReceive接收數(shù)據(jù)包	485
18.4.3 用PtReceivePacket接收	490
18.4.4 對(duì)包進(jìn)行過(guò)濾	491
18.5 中間層驅(qū)動(dòng)程序查詢和設(shè)置	494
18.5.1 查詢請(qǐng)求的處理	494
18.5.2 設(shè)置請(qǐng)求的處理	496
18.6 NDIS句柄	498
18.6.1 不可見(jiàn)的結(jié)構(gòu)指針	498
18.6.2 常見(jiàn)的NDIS句柄	499
18.6.3 NDIS句柄誤用問(wèn)題	500
18.6.4 一種解決方案	502
18.7 生成普通控制設(shè)備	503
18.7.1 在中間層驅(qū)動(dòng)中添加普通設(shè)備	503
18.7.2 使用傳統(tǒng)方法來(lái)生成控制設(shè)備	505
第19章 IA-32匯編基礎(chǔ)	511
19.1 x86內(nèi)存、寄存器與堆棧	511
19.1.1 _asm關(guān)鍵字	511
19.1.2 x86中的mov指令	512
19.1.3 x86中的寄存器與內(nèi)存	512
19.1.4 賦值語(yǔ)句的實(shí)現(xiàn)	513
19.2 x86中函數(shù)的實(shí)現(xiàn)	514
19.2.1 一個(gè)函數(shù)的例子	514
19.2.2 堆棧的介紹	515
19.2.3 寄存器的備份和恢復(fù)	516
19.2.4 內(nèi)部變量與返回值	518
19.3 x86中函數(shù)的調(diào)用與返回	521
19.3.1 函數(shù)的調(diào)用指令call	521
19.3.2 通過(guò)堆棧傳遞參數(shù)	521
19.3.3 從函數(shù)返回	523
19.3.4 三種常見(jiàn)的調(diào)用協(xié)議	524
19.4 從32位匯編到64位匯編	526
19.4.1 Intel 64與IA-32體系架構(gòu)簡(jiǎn)介	526
19.4.2 64位指令與32位指令	526
19.4.3 通用寄存器	527
19.5 64位下的函數(shù)實(shí)現(xiàn)	528
19.5.1 函數(shù)概覽	528
19.5.2 32位參數(shù)的傳遞	529
19.5.3 64位參數(shù)與返回值	530
19.5.4 棧空間的開(kāi)辟與恢復(fù)	531
第20章 IA-32體系中的內(nèi)存地址	534
20.1 內(nèi)存的虛擬地址	534
20.1.1 C語(yǔ)言中的內(nèi)存地址	534
20.1.2 虛擬地址的構(gòu)成	535
20.1.3 段的選擇	536
20.2 全局描述符表和段描述符	538
20.2.1 全局描述符表	538
20.2.2 段類型	539
20.2.3 段寄存器與段選擇子	540
20.2.4 64位模式下的段	541
20.3 分段編程實(shí)踐	542
20.3.1 系統(tǒng)表寄存器的結(jié)構(gòu)	542
20.3.2 在匯編語(yǔ)言中獲取全局描述表的位置	543
20.3.3 調(diào)試范例:sgdt指令的錯(cuò)誤使用	545
20.3.4 在64位下獲得全局描述符表	547
20.4 線性地址基礎(chǔ)	549
20.4.1 分頁(yè)控制機(jī)制	550
20.4.2 線性地址的轉(zhuǎn)換	551
20.4.3 混合頁(yè)面大小	552
20.4.4 32位物理地址的頁(yè)目錄和頁(yè)表項(xiàng)	552
20.5 各種特殊分頁(yè)方式	555
20.5.1 PAE分頁(yè)方式	555
20.5.2 PSE-36分頁(yè)機(jī)制	558
20.5.3 IA-32e模式下的線性地址	559
20.6 分頁(yè)編程實(shí)踐	562
20.6.1 頁(yè)目錄和頁(yè)目錄指針表的獲取	562
20.6.2 頁(yè)表的獲取	564
20.6.3 線性地址的結(jié)構(gòu)	567
第21章 處理器權(quán)限級(jí)別切換	571
21.1 Ring0和Ring3權(quán)限級(jí)別	571
21.2 保護(hù)模式下的分頁(yè)內(nèi)存保護(hù)	572
21.3 分頁(yè)內(nèi)存不可執(zhí)行保護(hù)	574
21.3.1 不可執(zhí)行保護(hù)原理	574
21.3.2 不可執(zhí)行保護(hù)的漏洞	575
21.3.3 上機(jī)實(shí)踐	577
21.4 權(quán)限級(jí)別的切換	579
21.4.1 調(diào)用門及其漏洞	579
21.4.2 sysenter和sysexit指令	581
21.4.3 上機(jī)實(shí)踐	583
第22章 IA-32體系結(jié)構(gòu)中的中斷	585
22.1 中斷基礎(chǔ)知識(shí)	585
22.1.1 中斷描述符表	585
22.1.2 中斷處理過(guò)程	587
22.1.3 64位模式下的中斷處理機(jī)制	589
22.1.4 多核下的中斷	589
22.2 Windows中斷機(jī)制	593
22.3 中斷編程實(shí)踐	596
22.3.1 IDT Hook	596
22.3.2 巧用IDT Hook實(shí)現(xiàn)安全防護(hù)	598
第23章 Windows內(nèi)核掛鉤	601
23.1 系統(tǒng)服務(wù)描述符表掛鉤	602
23.1.1 系統(tǒng)服務(wù)描述符表(SSDT)	602
23.1.2 系統(tǒng)服務(wù)描述符表掛鉤的意圖	603
23.1.3 尋找要掛鉤的函數(shù)的地址	604
23.1.4 函數(shù)被掛鉤的過(guò)程	605
23.1.5 具體實(shí)現(xiàn)的代碼	606
23.2 函數(shù)導(dǎo)出表掛鉤	608
23.2.1 內(nèi)核函數(shù)的種類	608
23.2.2 掛鉤IoCallDriver	610
23.2.3 對(duì)跳轉(zhuǎn)地址進(jìn)行修改	611
23.3 Windows 7系統(tǒng)下IofCallDriver的跟蹤	612
23.4 Windows 7系統(tǒng)下內(nèi)聯(lián)掛鉤	615
23.4.1 寫入跳轉(zhuǎn)指令并拷貝代碼	615
23.4.2 實(shí)現(xiàn)中繼函數(shù)	617 
高 級(jí) 篇
第24章 Windows通知與回調(diào)	620
24.1 Windows的事件通知與回調(diào)	620
24.2 常用的事件通知	620
24.2.1 創(chuàng)建進(jìn)程通知	621
24.2.2 創(chuàng)建線程通知	625
24.2.3 加載模塊通知	626
24.2.4 注冊(cè)表操作通知	629
24.3 Windows回調(diào)機(jī)制	636
24.3.1 回調(diào)對(duì)象	636
24.3.2 回調(diào)對(duì)象的創(chuàng)建	637
24.3.3 回調(diào)對(duì)象的注冊(cè)	637
24.3.4 回調(diào)的通告	638
24.4 安全的死角,回調(diào)的應(yīng)用	639
第25章 保護(hù)進(jìn)程	640
25.1 內(nèi)核對(duì)象簡(jiǎn)介	640
25.2 內(nèi)核對(duì)象的結(jié)構(gòu)	641
25.3 保護(hù)內(nèi)核對(duì)象	642
25.3.1 處理對(duì)象的打開(kāi)	643
25.3.2 處理句柄的復(fù)制	644
25.3.3 處理句柄的繼承	646
25.4 進(jìn)程的保護(hù)	652
25.4.1 保護(hù)原理	652
25.4.2 Vista以后的進(jìn)程對(duì)象保護(hù)	654
25.4.3 進(jìn)程的其他保護(hù)	655 
附錄A 如何使用本書的源碼光盤	656
附錄B 練習(xí)題	659

使用說(shuō)明

1、下載并解壓,得出pdf文件

2、如果打不開(kāi)本文件,請(qǐng)務(wù)必下載pdf閱讀器
3、安裝后,在打開(kāi)解壓得出的pdf文件
4、雙擊進(jìn)行閱讀

收起介紹展開(kāi)介紹
  • 下載地址
windows內(nèi)核安全與驅(qū)動(dòng)開(kāi)發(fā) 譚文 陳銘霖pdf掃描版

有問(wèn)題? 點(diǎn)此報(bào)錯(cuò)

發(fā)表評(píng)論

0條評(píng)論

熱門推薦