作 者:(美)帕維爾·約西福維奇 著 李亮 譯
定 價:119
出 版 社:機械工業出版社
出版日期:2021年06月01日
頁 數:320
裝 幀:平裝
ISBN:9787111684756
1.本書內容詳實、深入淺出、案例豐富,是 Windows內核開發工程師推薦的參考資料,也可供相關專業的在校學生和入門者學習參考。2.本書是近年來少見的關於 Windows 內核開發的參考書籍。3.讀者可以從https://github.com/zodiacon/windowskernelprogrammingbook 下載本書配套代碼及後續例程的更新,還可以通過 zodiacon@live.com 聯繫作者,也可以通過 holly.lee@gmail.com 與譯者聯繫。
●譯者序
第1章 Windows內部概覽
1.1 進程
1.2 虛擬內存
1.2.1 頁狀態
1.2.2 繫統內存
1.3 線程
1.4 繫統服務
1.5 繫統總體架構
1.6 句柄和對像
1.6.1 對像名稱
1.6.2 訪問已經存在的對像
第2章 開始內核開發
2.1 安裝工具
2.2 創建一個驅動程序項目
2.3 DriverEntry和Unload例程
2.4 部署驅動程序
2.5 簡單的跟蹤
2.6 練習
2.7 總結
第3章 內核編程基礎
3.1 內核編程的一般準則
3.1.1 未處理的異常
3.1.2 終止
3.1.3 函數返回值
3.1.4 IRQL
3.1.5 C++用法
3.1.6 測試和調試
3.2 調試構建與發布構建
3.3 內核API
3.4 函數和錯誤代碼
3.5 字符串
3.6 動態內存分配
3.7 鏈表
3.8 驅動程序對像
3.9 設備對像
3.10 總結
第4章 驅動程序:從頭到尾
4.1 簡介
4.2 驅動程序初始化
4.2.1 將信息傳遞給驅動程序
4.2.2 客戶程序/驅動程序之間的通信協議
4.2.3 創建設備對像
4.3 客戶程序代碼
4.4 Create和Close分發例程
4.5 DeviceIoControl分發例程
4.6 安裝與測試
4.7 總結
第5章 調試
5.1 Debugging Tools for Windows
5.2 WinDbg簡介
5.3 內核調試
5.3.1 本地內核調試
5.3.2 本地內核調試教程
5.4 完整內核調試
5.4.1 配置目標機
5.4.2 配置宿主機
5.5 內核驅動程序調試教程
5.6 總結
第6章 內核機制
6.1 中斷請求級別
6.1.1 提升和降低IRQL
6.1.2 線程優先級與IRQL
6.2 延遲過程調用
6.3 異步過程調用
6.4 結構化異常處理
6.4.1 使用__try/__except
6.4.2 使用__try/__finally
6.4.3 使用C++ RAII代替__try/__finally
6.5 繫統崩潰
6.5.1 崩潰轉儲信息
6.5.2 分析轉儲文件
6.5.3 繫統掛起
6.6 線程同步
6.6.1 互鎖操作
6.6.2 分發器對像
6.6.3 互斥量
6.6.4 快速互斥量
6.6.5 信號量
6.6.6 事件
6.6.7 執行體資源
6.7 高IRQL同步
6.8 工作項目
6.9 總結
第7章 I/O請求包
7.1 IRP簡介
7.2 設備節點
7.3 IRP和I/O棧位置
7.4 分發例程
7.5 訪問用戶緩衝區
7.5.1 緩衝I/O
7.5.2 直接I/O
7.5.3 IRP_MJ_DEVICE_CONTROL的用戶緩衝區
7.6 彙總:Zero驅動程序
7.6.1 使用預編譯頭
7.6.2 DriverEntry例程
7.6.3 讀分發例程
7.6.4 寫分發例程
7.6.5 測試應用
7.7 總結
第8章 進程和線程通知
8.1 進程通知
8.2 實現進程通知
8.2.1 DriverEntry例程
8.2.2 處理進程退出通知
8.2.3 處理進程創建通知
8.3 將數據提供給用戶模式
8.4 線程通知
8.5 映像載入通知
8.6 練習
8.7 總結
第9章 對像和注冊表通知
9.1 對像通知
9.1.1 操作前回調
9.1.2 操作後回調
9.2 進程保護者驅動程序
9.2.1 對像通知注冊
9.2.2 管理受保護的進程
9.2.3 操作前回調
9.2.4 客戶應用
9.3 注冊表通知
9.3.1 處理操作前通知
9.3.2 處理操作後回調
9.3.3 性能考慮
9.4 實現注冊表通知
9.4.1 處理注冊表回調
9.4.2 修改後的客戶程序代碼
9.5 練習
9.6 總結
第10章 文件繫統小過濾驅動
10.1 簡介
10.2 裝入與卸載
10.3 初始化
10.3.1 操作回調注冊
10.3.2 高度
10.4 安裝
10.4.1 INF文件
10.4.2 安裝驅動程序
10.5 處理I/O操作
10.5.1 操作前回調
10.5.2 操作後回調
10.6 刪除保護驅動程序
10.6.1 處理創建前回調
10.6.2 處理設置信息前回調
10.6.3 重構
10.6.4 將驅動程序通用化
10.6.5 測試修改後的驅動程序
10.7 文件名
10.7.1 文件名的各個部分
10.7.2 RAII FLT_FILE_NAME_INFORMATION包裝器
10.8 另一個刪除保護驅動程序
10.8.1 處理創建前回調和設置信息前回調
10.8.2 測試驅動程序
10.9 上下文
10.10 初始化I/O請求
10.11 文件備份驅動程序
10.11.1 創建後回調
10.11.2 寫前回調
10.11.3 清理後回調
10.11.4 測試驅動程序
10.11.5 恢復備份
10.12 用戶模式通信
10.12.1 創建通信端口
10.12.2 用戶模式連接
10.12.3 發送和接收消息
10.12.4 增強文件備份驅動程序
10.12.5 用戶模式客戶程序
10.13 調試
10.14 練習
10.15 總結
第11章 其他主題
11.1 驅動程序簽名
11.2 驅動程序驗證器
11.3 使用原生API
11.4 過濾驅動程序
11.4.1 過濾驅動程序的實現
11.4.2 附加過濾器
11.4.3 在任意時刻附加過濾器
11.4.4 過濾器的清理
11.4.5 基於硬件的過濾驅動程序的更多內容
11.5 設備監視器
11.5.1 增加過濾設備
11.5.2 移除過濾設備
11.5.3 初始化和卸載
11.5.4 處理請求
11.5.5 測試驅動程序
11.5.6 請求的結果
11.6 驅動程序掛鉤
11.7 內核庫
11.8 總結
在Windows繫統中沒有什麼比內核更強大了,但是如何編寫內核驅動程序來利用這種強大能力呢?本書描述了如何編寫Windows繫統的軟件內核驅動程序,這類驅動程序不涉及硬件,隻依賴於繫統本身:進程、線程、模塊、注冊表等。內核代碼可用於監視重要事件,在需要時阻止某些事件的發生,讀者可以通過編寫各種過濾器來攔截驅動程序中的調用。本書的內容從基本概念到實際應用,較為深入地解析了Windows內核技術,適合具有一定Windows應用開發經驗的中高級讀者閱讀。