Windows核心編程Windows核心編程

Windows核心編程Windows核心編程

《Windows核心編程Windows核心編程》是2020年電子工業出版社出版的圖書,作者是譚文。本書由具有十多年終端安全開發經驗的從業人員編寫,以簡潔實用為準則,理論與實際案例相結合。適用於計算機軟體安全從業人員、有一定C語言基礎且對計算機安全感興趣的愛好者。

基本介紹

  • 中文名:Windows核心編程Windows核心編程
  • 作者:譚文
  • 出版社:電子工業出版社 
  • ISBN:9787121384882
內容簡介,圖書目錄,作者簡介,

內容簡介

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

圖書目錄

第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
11.6.2 設備對象的區分處理 237
11.6.3 解析讀請求中的檔案信息 238
11.6.4 讀請求的完成 241
11.7 其他操作的過濾 244
11.7.1 檔案對象的生存周期 244
11.7.2 檔案的打開與關閉 245
11.7.3 檔案的刪除 247
11.8 路徑過濾的實現 248
11.8.1 取得檔案路徑的三種情況 248
11.8.2 打開成功後獲取路徑 249
11.8.3 在其他時刻獲得檔案路徑 250
11.8.4 在打開請求完成之前獲得
路徑名 251
11.8.5 把短名轉換為長名 253
11.9 把sfilter編譯成靜態庫 254
11.9.1 如何方便地使用sfilter 254
11.9.2 初始化回調、卸載回調和
綁定回調 254
11.9.3 綁定與回調 256
11.9.4 插入請求回調 257
11.9.5 如何利用sfilter.lib 259
第12章 檔案系統透明加密 263
12.1 檔案透明加密的套用 263
12.1.1 防止企業信息泄密 263
12.1.2 檔案透明加密防止企業信息
泄密 263
12.1.3 檔案透明加密軟體的例子 264
12.2 區分進程 265
12.2.1 機密進程與普通進程 265
12.2.2 找到進程名字的位置 266
12.2.3 得到當前進程的名字 267
12.3 記憶體映射與檔案緩衝 268
12.3.1 記事本的記憶體映射檔案 268
12.3.2 Windows的檔案緩衝 269
12.3.3 檔案緩衝:明文還是密文的
選擇 270
12.3.4 清除檔案緩衝 271
12.4 加密標識 274
12.4.1 保存在檔案外、檔案頭還是
檔案尾 274
12.4.2 隱藏檔案頭的大小 275
12.4.3 隱藏檔案頭的設定偏移 277
12.4.4 隱藏檔案頭的讀/寫偏移 277
12.5 檔案加密表 278
12.5.1 何時進行加密操作 278
12.5.2 檔案控制塊與檔案對象 279
12.5.3 檔案加密表的數據結構與
初始化 280
12.5.4 檔案加密表的操作:查詢 281
12.5.5 檔案加密表的操作:添加 282
12.5.6 檔案加密表的操作:刪除 283
12.6 檔案打開處理 284
12.6.1 直接傳送IRP進行查詢與
設定操作 285
12.6.2 直接傳送IRP進行讀/寫操作 287
12.6.3 檔案的非重入打開 288
12.6.4 檔案的打開預處理 291
12.7 讀/寫加密和解密 296
12.7.1 在讀取時進行解密 296
12.7.2 分配與釋放MDL 297
12.7.3 寫請求加密 298
12.8 crypt_file的組裝 300
12.8.1 crypt_file的初始化 300
12.8.2 crypt_file的IRP預處理 301
12.8.3 crypt_file的IRP後處理 304
第13章 檔案系統微過濾驅動 308
13.1 檔案系統微過濾驅動簡介 308
13.1.1 檔案系統微過濾驅動的由來 308
13.1.2 Minifilter的優點與不足 309
13.2 Minifilter的編程框架 309
13.2.1 微檔案系統過濾的註冊 310
13.2.2 微過濾器的數據結構 311
13.2.3 卸載回調函式 314
13.2.4 預操作回調函式 314
13.2.5 後操作回調函式 317
13.2.6 其他回調函式 318
13.3 Minifilter如何與應用程式通信 320
13.3.1 建立通信連線埠的方法 320
13.3.2 在用戶態通過DLL使用通信
連線埠的範例 322
13.4 Minifilter的安裝與載入 325
13.4.1 安裝Minifilter的INF檔案 325
13.4.2 啟動安裝完成的Minifilter 326
第14章 網路傳輸層過濾 328
14.1 TDI概要 328
14.1.1 為何選擇TDI 328
14.1.2 從socket到Windows核心 329
14.1.3 TDI過濾的代碼例子 330
14.2 TDI的過濾框架 330
14.2.1 綁定TDI的設備 330
14.2.2 唯一的分發函式 331
14.2.3 過濾框架的實現 333
14.2.4 主要過濾的請求類型 335
14.3 生成請求:獲取地址 336
14.3.1 過濾生成請求 336
14.3.2 準備解析IP位址與連線埠 337
14.3.3 獲取生成的IP位址和連線埠 338
14.3.4 連線終端的生成與相關信息
的保存 340
14.4 控制請求 341
14.4.1 TDI_ASSOCIATE_ADDRESS
的過濾 341
14.4.2 TDI_CONNECT的過濾 343
14.4.3 其他的次功能號 344
14.4.4 設定事件的過濾 345
14.4.5 TDI_EVENT_CONNECT類型
的設定事件的過濾 346
14.4.6 直接獲取傳送函式的過濾 348
14.4.7 清理請求的過濾 350
14.5 本書例子tdifw.lib的套用 351
14.5.1 tdifw庫的回調接口 351
14.5.2 tdifw庫的使用例子 353
第15章 Windows過濾平台 355
15.1 WFP簡介 355
15.2 WFP框架 355
15.3 基本對象模型 357
15.3.1 過濾引擎 357
15.3.2 墊片 357
15.3.3 呼出接口 357
15.3.4 分層 358
15.3.5 子層 359
15.3.6 過濾器 360
15.3.7 呼出接口回調函式 364
15.4 WFP操作 369
15.4.1 呼出接口的註冊與卸載 369
15.4.2 呼出接口的添加與移除 370
15.4.3 子層的添加與移除 371
15.4.4 過濾器的添加 372
15.5 WFP過濾例子 372
第16章 NDIS協定驅動 380
16.1 乙太網包和網路驅動架構 380
16.1.1 乙太網包和協定驅動 380
16.1.2 NDIS網路驅動 381
16.2 協定驅動的DriverEntry 382
16.2.1 生成控制設備 382
16.2.2 註冊協定 383
16.3 協定與網卡的綁定 385
16.3.1 協定與網卡的綁定概念 385
16.3.2 綁定回調處理的實現 386
16.3.3 協定綁定網卡的API 388
16.3.4 解決綁定競爭問題 389
16.3.5 分配接收和傳送的包池與
緩衝池 390
16.3.6 OID請求的傳送和請求
完成回調 391
16.3.7 ndisprotCreateBinding的
最終實現 395
16.4 綁定的解除 400
16.4.1 解除綁定使用的API 400
16.4.2 ndisprotShutdownBinding的
實現 402
16.5 在用戶態操作協定驅動 405
16.5.1 協定的收包與發包 405
16.5.2 在用戶態編程打開設備 405
16.5.3 用DeviceIoControl傳送
控制請求 407
16.5.4 用WriteFile傳送數據包 409
16.5.5 用ReadFile傳送數據包 410
16.6 在核心態完成功能的實現 412
16.6.1 請求的分發與實現 412
16.6.2 等待設備綁定完成與指定
設備名 412
16.6.3 指派設備的完成 413
16.6.4 處理讀請求 416
16.6.5 處理寫請求 418
16.7 協定驅動的接收回調 422
16.7.1 和接收包有關的回調函式 422
16.7.2 ReceiveHandler的實現 423
16.7.3 TransferDataCompleteHandler
的實現 427
16.7.4 ReceivePacketHandler的實現 428
16.7.5 接收數據包的入隊 430
16.7.6 接收數據包的出隊和讀請求
的完成 432
第17章 NDIS小連線埠驅動 437
17.1 小連線埠驅動的套用與概述 437
17.1.1 小連線埠驅動的套用 437
17.1.2 小連線埠驅動示例 438
17.1.3 小連線埠驅動的運作與編程
概述 438
17.2 小連線埠驅動的初始化 439
17.2.1 小連線埠驅動的DriverEntry 439
17.2.2 小連線埠驅動的適配器結構 441
17.2.3 配置信息的讀取 442
17.2.4 設定小連線埠適配器上下文 443
17.2.5 MPInitialize的實現 444
17.2.6 MPHalt的實現 447
17.3 打開ndisprot設備 447
17.3.1 IO目標 447
17.3.2 給IO目標傳送DeviceIoControl
請求 449
17.3.3 打開ndisprot接口並完成
配置設備 451
17.4 使用ndisprot傳送包 453
17.4.1 小連線埠驅動的發包接口 453
17.4.2 傳送控制塊(TCB) 454
17.4.3 遍歷包組並填寫TCB 456
17.4.4 寫請求的構建與傳送 458
17.5 使用ndisprot接收包 461
17.5.1 提交數據包的核心API 461
17.5.2 從接收控制塊(RCB)
提交包 462
17.5.3 對ndisprot讀請求的完成
函式 463
17.5.4 讀請求的傳送 466
17.5.5 用於讀包的WDF工作任務 467
17.5.6 ndisedge讀工作任務的生成
與入列 469
17.6 其他的特徵回調函式的實現 471
17.6.1 包的歸還 471
17.6.2 OID查詢處理的直接完成 472
17.6.3 OID設定處理 475
第18章 NDIS中間層驅動 477
18.1 NDIS中間層驅動概述 477
18.1.1 Windows網路架構總結 477
18.1.2 NDIS中間層驅動簡介 478
18.1.3 NDIS中間層驅動的套用 479
18.1.4 NDIS包描述符結構深究 480
18.2 中間層驅動的入口與綁定 483
18.2.1 中間層驅動的入口函式 483
18.2.2 動態綁定NIC設備 483
18.2.3 小連線埠初始化(MpInitialize) 485
18.3 中間層驅動傳送數據包 486
18.3.1 傳送數據包原理 486
18.3.2 包描述符“重利用” 488
18.3.3 包描述符“重申請” 490
18.3.4 傳送數據包的異步完成 492
18.4 中間層驅動接收數據包 494
18.4.1 接收數據包概述 494
18.4.2 用PtReceive接收數據包 494
18.4.3 用PtReceivePacket接收 499
18.4.4 對包進行過濾 501
18.5 中間層驅動程式查詢和設定 504
18.5.1 查詢請求的處理 504
18.5.2 設定請求的處理 506
18.6 NDIS句柄 507
18.6.1 不可見的結構指針 507
18.6.2 常見的NDIS句柄 508
18.6.3 NDIS句柄誤用問題 510
18.6.4 一種解決方案 512
18.7 生成普通控制設備 512
18.7.1 在中間層驅動中添加普通設備 512
18.7.2 使用傳統方法來生成控制設備 515
第3篇 套用篇
第19章 IA-32彙編基礎 522
19.1 x86記憶體、暫存器與堆疊 522
19.1.1 _asm關鍵字 522
19.1.2 x86中的mov指令 523
19.1.3 x86中的暫存器與記憶體 523
19.1.4 賦值語句的實現 524
19.2 x86中函式的實現 525
19.2.1 一個函式的例子 525
19.2.2 堆疊的介紹 526
19.2.3 暫存器的備份和恢復 527
19.2.4 內部變數與返回值 529
19.3 x86中函式的調用與返回 531
19.3.1 函式的調用指令call 531
19.3.2 通過堆疊傳遞參數 532
19.3.3 從函式返回 533
19.3.4 三種常見的調用協定 535
19.4 從32位彙編到64位彙編 536
19.4.1 Intel 64與IA-32體系
架構簡介 536
19.4.2 64位指令與32位指令 536
19.4.3 通用暫存器 537
19.5 64位下的函式實現 538
19.5.1 函式概覽 538
19.5.2 32位參數的傳遞 539
19.5.3 64位參數與返回值 540
19.5.4 棧空間的開闢與恢復 541
第20章 Windows核心掛鈎 544
20.1 系統服務描述符表掛鈎 545
20.1.1 系統服務描述符表(SSDT) 545
20.1.2 系統服務描述符表掛鈎的意圖 546
20.1.3 尋找要掛鈎的函式的地址 547
20.1.4 函式被掛鈎的過程 548
20.1.5 具體實現的代碼 549
20.2 函式導出表掛鈎 551
20.2.1 核心函式的種類 551
20.2.2 掛鈎IoCallDriver 553
20.2.3 對跳轉地址進行修改 554
20.3 Windows 7系統下IofCallDriver的
跟蹤 555
20.4 Windows 7系統下內聯掛鈎 558
20.4.1 寫入跳轉指令並拷貝代碼 558
20.4.2 實現中繼函式 560
20.5 中斷與中斷掛鈎 562
20.5.1 IA-32體系結構中的中斷 562
20.5.2 中斷處理過程 563
20.5.3 64位模式下的中斷處理機制 564
20.5.4 多核下的中斷 565
20.5.5 Windows中斷機制 570
20.5.6 IDT Hook 573
20.5.7 IDT Hook實現安全防護 574
第21章 Windows通知與回調 577
21.1 Windows的事件通知與回調 577
21.2 常用的事件通知 577
21.2.1 創建進程通知 578
21.2.2 創建執行緒通知 582
21.2.3 載入模組通知 583
21.2.4 註冊表操作通知 586
21.3 Windows回調機制 592
21.3.1 回調對象 593
21.3.2 回調對象的創建 593
21.3.3 回調對象的註冊 594
21.3.4 回調的通告 595
21.4 安全的死角,回調的套用 595
第22章 保護進程 597
22.1 核心對象簡介 597
22.2 核心對象的結構 598
22.3 保護核心對象 599
22.3.1 處理對象的打開 600
22.3.2 處理句柄的複製 601
22.3.3 處理句柄的繼承 603
22.4 進程的保護 609
22.4.1 保護原理 609
22.4.2 Vista以後的進程對象保護 611
22.4.3 進程的其他保護 612
第23章 代碼注入與防注入 613
23.1 注入與防注入簡介 613
23.2 常用的注入方式 614
23.3 主動注入 614
23.3.1 AppInit注入 615
23.3.2 SPI注入 618
23.3.3 訊息事件注入 620
23.3.4 其他注入 621
23.4 被動注入 621
23.4.1 遠執行緒注入 621
23.4.2 APC注入 622
23.4.3 父子進程注入 623
23.5 防注入 624
23.5.1 防止主動注入 624
23.5.2 防止被動注入 629
23.6 總結 630
附錄A 如何使用本書的源碼 631
附錄B 練習題 634

作者簡介

譚文,網名楚狂人,已有十七年客戶端安全軟體開發經驗。先後在NEC、英特爾亞太研發有限公司、騰訊科技任職。曾經從事過企業安全軟體、x86版Android的houdini項目、騰訊電腦管家、騰訊遊戲安全等開發工作。對Windows核心有深入研究,現任騰訊科技遊戲安全團隊驅動程式開發負責人,專家工程師。陳銘霖,十餘年終端開發經驗,先後任深信服科技架構師、騰訊科技高級工程師;曾主導騰訊電腦管家核心安全驅動開發,以及疑難病毒打擊項目、騰訊Windows伺服器安全開發項目;對Windows及macOS系統有深入研究,在To C以及To B行業有豐富的開發經驗,現任數篷科技高級架構師,終端安全負責人。

相關詞條

熱門詞條

聯絡我們