TOP
0
0
結帳前領券,購書好優惠
Windows內核編程(簡體書)
滿額折

Windows內核編程(簡體書)

商品資訊

人民幣定價:198 元
定價
:NT$ 1188 元
優惠價
871034
缺貨無法訂購
商品簡介
名人/編輯推薦
目次

商品簡介

本書前身是《Windows內核安全與驅動開發》,重點圍繞Windows操作系統的機制介紹內核安全編程技術,除了少數特殊章節,大部分內容均適用於Windows 2000至Windows 10操作系統,體系結構覆蓋32位以及64位。同時本書也深入淺出地介紹了彙編基礎和系統內核機制。本書共分為三篇,分別從不同的角度介紹內核編程技術。第1篇面向零基礎的讀者,其中“內核編程環境”“內核驅動運行與調試”“內核編程基礎”重點介紹與內核編程相關的基本知識、開發環境搭建,以及基本的編程機制。“應用與內核通信”和“64位和32位內核開發差異”主要介紹應用層編程與內核編程的數據交互。最後,介紹了編程過程所需注意的事項,以及設計技巧。第2篇結合操作系統的機制,從最簡單的“串口的過濾”開始,介紹了“鍵盤的過濾”‘“磁盤的過濾”“文件系統的過濾”“Windows過濾平臺”“NDIS協議驅動”“NDIS小端口驅動”,以及“NDIS中間層驅動”。覆蓋了整個Windows系統的主流過濾框架,並且深入剖析了文件透明加密解密的原理。第3篇側重安全技術,重點介紹了安全編程所需要使用的知識,如“IA-32彙編基礎”“Windows內核掛鉤”“Windows通知與回調”“保護進程”,以及“代碼注入與防注入”。本書由具有十多年終端安全開發經驗的從業人員編寫,以簡潔實用為準則,理論與實際案例相結合。適用于計算機軟件安全從業人員、有一定C語言基礎且對計算機安全感興趣的愛好者。

名人/編輯推薦

本書前身是《Windows內核安全與驅動開發》,重點圍繞Windows操作系統的機制介紹內核安全編程技術,除少數特殊章節外,大部分內容均適用於Windows 2000至Windows 10操作系統,體系結構覆蓋32位以及64位。同時本書也深入淺出地介紹了彙編基礎和系統內核機制。


本書是作者多年實踐的精華之作,深入淺出地揭開現代OS內核的神秘面紗,是每一位安全技術踐行者的良器。
――數篷科技CTO 楊一飛本書系統地介紹了Windows系統編程機制,內容豐富,簡單易懂,想學習Windows內核編程,有這一本足矣。
――十五派信息安全教育創始人 任曉琿
本書作者以雄厚的技術實力和多年的編程經驗,系統地介紹了Windows內核編程的方方面面。本書適合入門與進階Windows內核開發的讀者閱讀。
――騰訊安全平臺部總監、安全應急響應中心(TSRC)負責人 胡珀(lake2)
這是一本有關Windows驅動開發的寶典,內容全面、詳實,書中介紹的方法和技巧實用性強,並有很高的參考和學習價值。
――騰訊反病毒實驗室負責人 馬勁松
Windows平臺的內核安全在未來很長一段時間仍會是軟件安全界重要的技術領域之一,本書全新的技術內容定會讓你受益匪淺。
――《Android軟件安全權威指南》作者 豐生強
本書內容豐富、主題清晰,作者有著豐富的驅動開發經驗,會助您快速進階 Windows 內核程序開發。
――GeekPwn評委、滴滴美國研究院資深專家工程師 王宇
本書不僅可以學習Windows內核開發的理論知識,還有很多實際案例,可以很好地提高閱讀者的動手能力,並積累編程經驗。
――永安在線CTO 鄧欣
作者分享了Windows主機安全方向的開發技巧,讀者只要認真閱讀並動手實踐,一定會收穫滿滿。
――PC Hunter作者 linxer

目次

目 錄



第1篇 基礎篇
第1章 內核編程環境 002
1.1 下載開發編譯環境 002
1.1.1 編譯環境介紹 002
1.1.2 下載Visual Studio與WDK 004
1.2 編寫第一個C文件 006
1.2.1 通過Visual Studio新建工程 006
1.2.2 內核入口函數 007
1.2.3 編寫入口函數體 008
1.3 編譯第一個驅動 010
1.3.1 通過Visual Studio編譯 010
1.3.2 通過WDK直接編譯 011
第2章 內核驅動運行與調試 013
2.1 驅動的運行 013
2.2 服務的基本操作 015
2.2.1 打開服務管理器 015
2.2.2 服務的註冊 016
2.2.3 服務的啟動與停止 018
2.2.4 服務的刪除 019
2.2.5 服務的例子 020
2.2.6 服務小結 022
2.3 驅動的調試 022
2.3.1 基於VS+WDK環境調試 022
2.3.2 基於Windbg調試 026
第3章 內核編程基礎 029
3.1 上下文環境 029
3.2 中斷請求級別 031
3.3 驅動異常 033
3.4 字符串操作 034
3.5 鏈表 036
3.5.1 頭節點初始化 038
3.5.2 節點插入 038
3.5.3 鏈表遍歷 039
3.5.4 節點移除 040
3.6 自旋鎖 040
3.6.1 使用自旋鎖 040
3.6.2 在雙向鏈表中使用自旋鎖 041
3.6.3 使用隊列自旋鎖提高性能 042
3.7 內存分配 043
3.7.1 常規內存分配 043
3.7.2 旁視列表 045
3.8 對象與句柄 049
3.9 註冊表 054
3.9.1 註冊表的打開與關閉 054
3.9.2 註冊表的修改 056
3.9.3 註冊表的讀取 057
3.10 文件操作 060
3.10.1 文件的打開與關閉 060
3.10.2 文件的讀寫 063
3.11 線程與事件 066
3.11.1 使用系統線程 066
3.11.2 使用同步事件 067
第4章 應用與內核通信 070
4.1 內核方面的編程 071
4.1.1 生成控制設備 071
4.1.2 控制設備的名字和符號鏈接 073
4.1.3 控制設備的刪除 074
4.1.4 分發函數 074
4.1.5 請求的處理 076
4.2 應用方面的編程 077
4.2.1 基本的功能需求 077
4.2.2 在應用程序中打開與關閉設備 077
4.2.3 設備控制請求 078
4.2.4 內核中的對應處理 080
4.2.5 結合測試的效果 082
第5章 64位和32位內核開發差異 083
5.1 64位系統新增機制 083
5.1.1 WOW64子系統 083
5.1.2 PatchGuard技術 086
5.1.3 64位驅動的編譯、安裝與運行 086
5.2 編程差異 087
5.2.1 彙編嵌入變化 087
5.2.2 預處理與條件編譯 088
5.2.3 數據結構調整 088
第6章 內核編程技巧 090
6.1 初始化賦值問題 090
6.2 有效性判斷 091
6.3 一次性申請 092
6.4 獨立性與最小化原則 095
6.5 嵌套陷阱 097
6.6 穩定性處理 098
6.6.1 事前處理 098
6.6.2 事中處理 100
6.6.3 事後處理 104
第2篇 過濾篇
第7章 串口的過濾 106
7.1 過濾的概念 106
7.1.1 設備綁定的內核API之一 106
7.1.2 設備綁定的內核API之二 107
7.1.3 生成過濾設備並綁定 108
7.1.4 從名字獲得設備對象 110
7.1.5 綁定所有串口 111
7.2 獲得實際數據 112
7.2.1 請求的區分 112
7.2.2 請求的結局 113
7.2.3 寫請求的數據 114
7.3 完整的代碼 114
7.3.1 完整的分發函數 114
7.3.2 如何動態卸載 116
7.3.3 代碼的編譯與運行 117
第8章 鍵盤的過濾 119
8.1 技術原理 120
8.1.1 預備知識 120
8.1.2 Windows中從擊鍵到內核 120
8.1.3 鍵盤硬件原理 122
8.2 鍵盤過濾的框架 122
8.2.1 找到所有的鍵盤設備 122
8.2.2 應用設備擴展 125
8.2.3 鍵盤過濾模塊的DriverEntry 127
8.2.4 鍵盤過濾模塊的動態卸載 127
8.3 鍵盤過濾的請求處理 129
8.3.1 通常的處理 129
8.3.2 PNP的處理 130
8.3.3 讀的處理 131
8.3.4 讀完成的處理 132
8.4 從請求中打印出按鍵信息 133
8.4.1 從緩衝區中獲得KEYBOARD_
INPUT_DATA 133
8.4.2 從KEYBOARD_INPUT_DATA
中得到鍵 134
8.4.3 從MakeCode到實際字符 134
8.5 Hook分發函數 136
8.5.1 獲得類驅動對象 136
8.5.2 修改類驅動的分發函數指針 137
8.5.3 類驅動之下的端口驅動 138
8.5.4 端口驅動和類驅動之間的
協作機制 139
8.5.5 找到關鍵的回調函數的條件 140
8.5.6 定義常數和數據結構 140
8.5.7 打開兩種鍵盤端口驅動
尋找設備 141
8.5.8 搜索在KbdClass類驅動中的
地址 143
8.6 Hook鍵盤中斷反過濾 145
8.6.1 中斷:IRQ和INT 146
8.6.2 如何修改IDT 147
8.6.3 替換IDT中的跳轉地址 148
8.6.4 QQ的PS/2反過濾措施 149
8.7 直接用端口操作鍵盤 150
8.7.1 讀取鍵盤數據和命令端口 150
8.7.2 p2cUserFilter的最終實現 151
第9章 磁盤的虛擬 153
9.1 虛擬的磁盤 153
9.2 一個具體的例子 153
9.3 入口函數 154
9.3.1 入口函數的定義 154
9.3.2 Ramdisk驅動的入口函數 155
9.4 EvtDriverDeviceAdd函數 156
9.4.1 EvtDriverDeviceAdd的定義 156
9.4.2 局部變量的聲明 157
9.4.3 磁盤設備的創建 157
9.4.4 如何處理髮往設備的請求 158
9.4.5 用戶配置的初始化 160
9.4.6 鏈接給應用程序 161
9.5 FAT12/16磁盤卷初始化 163
9.5.1 磁盤卷結構簡介 163
9.5.2 Ramdisk對磁盤的初始化 164
9.6 驅動中的請求處理 170
9.6.1 請求的處理 170
9.6.2 讀/寫請求 171
9.6.3 DeviceIoControl請求 172
9.7 Ramdisk的編譯和安裝 175
9.7.1 編譯 175
9.7.2 安裝 175
9.7.3 對安裝的深入探究 175
第10章 磁盤的過濾 177
10.1 磁盤過濾驅動的概念 177
10.1.1 設備過濾和類過濾 177
10.1.2 磁盤設備和磁盤卷設備
過濾驅動 177
10.1.3 註冊表和磁盤卷設備過濾
驅動 178
10.2 具有還原功能的磁盤卷過濾驅動 178
10.2.1 簡介 178
10.2.2 基本思想 179
10.3 驅動分析 179
10.3.1 DriverEntry函數 179
10.3.2 AddDevice函數 180
10.3.3 PnP請求的處理 184
10.3.4 Power請求的處理 188
10.3.5 DeviceIoControl請求的處理 189
10.3.6 bitmap的作用和分析 192
10.3.7 boot驅動完成回調函數和
稀疏文件 198
10.3.8 讀/寫請求的處理 200
第11章 文件系統的過濾與監控 209
11.1 文件系統的設備對象 210
11.1.1 控制設備與卷設備 210
11.1.2 生成自己的一個控制設備 211
11.2 文件系統的分發函數 212
11.2.1 普通的分發函數 212
11.2.2 文件過濾的快速IO分發函數 213
11.2.3 快速IO分發函數的一個實現 215
11.2.4 快速IO分發函數逐個簡介 216
11.3 設備的綁定前期工作 217
11.3.1 動態地選擇綁定函數 217
11.3.2 註冊文件系統變動回調 219
11.3.3 文件系統變動回調的一個
實現 220
11.3.4 文件系統識別器 221
11.4 文件系統控制設備的綁定 222
11.4.1 生成文件系統控制設備的
過濾設備 222
11.4.2 綁定文件系統控制設備 223
11.4.3 利用文件系統控制請求 225
11.5 文件系統卷設備的綁定 227
11.5.1 從IRP中獲得VPB指針 227
11.5.2 設置完成函數並等待IRP
完成 228
11.5.3 卷掛載IRP完成後的工作 231
11.5.4 完成函數的相應實現 233
11.5.5 綁定卷的實現 234
11.6 讀/寫操作的過濾 236
11.6.1 設置一個讀處理函數 236

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 1034
缺貨無法訂購

暢銷榜

客服中心

收藏

會員專區