注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計其他編程語言/工具Windows內(nèi)核調(diào)試技術(shù)

Windows內(nèi)核調(diào)試技術(shù)

Windows內(nèi)核調(diào)試技術(shù)

定 價:¥79.00

作 者: 譚文
出版社: 電子工業(yè)出版社
叢編項:
標 簽: 暫缺

購買這本書可以去


ISBN: 9787121500237 出版時間: 2025-04-01 包裝: 平裝-膠訂
開本: 128開 頁數(shù): 字數(shù):  

內(nèi)容簡介

  本書以為安全系統(tǒng)所開發(fā)的Windows驅(qū)動程序為例,由淺入深地介紹了Windows內(nèi)核調(diào)試所需要的環(huán)境、工具、相關(guān)知識及技巧。書中列舉了Windows內(nèi)核編程開發(fā)者容易犯的各類錯誤,以及由此導致的不同缺陷的調(diào)試和解決方法。對遠程調(diào)試、面向海量用戶的內(nèi)核驅(qū)動程序的質(zhì)量控制、程序沖突、無文檔編程等內(nèi)核開發(fā)中常遇到的問題,也提供了對應(yīng)的解決方案。本書適合具有C語言基礎(chǔ)的計算機相關(guān)專業(yè)大中專院校學生、軟件行業(yè)Windows相關(guān)的底層開發(fā)者、計算機安全行業(yè)的開發(fā)和研究人員閱讀。

作者簡介

  譚文,某著名互聯(lián)網(wǎng)企業(yè)專家工程師,從事底層及安全相關(guān)開發(fā)工作二十余年。參與開發(fā)過DLP、防火墻、模擬器、反病毒軟件、業(yè)務(wù)安全等多種著名產(chǎn)品。其編寫的代碼在日活上億的用戶機器上穩(wěn)定運行,守護著用戶與系統(tǒng)的安全。著有《天書夜讀:從匯編語言到Windows內(nèi)核編程》《寒江獨釣:Windows內(nèi)核安全編程》《Windows內(nèi)核編程》多部相關(guān)技術(shù)專著。業(yè)余愛好劍道,為上海華劍館弟子。

圖書目錄

第1章 內(nèi)核開發(fā)與調(diào)試的準備 001
1.1 環(huán)境部署和工具安裝 001
1.1.1 選擇調(diào)試工具 001
1.1.2 安裝Visual Studio和WDK 003
1.1.3 安裝被調(diào)試的虛擬機 004
1.2 WinDbg的用法和存在的各種問題 007
1.2.1 做好快照并快速連接WinDbg 007
1.2.2 符號表和卡頓 008
1.2.3 源代碼問題 010
1.3 內(nèi)核調(diào)試的實際操作示例 011
1.3.1 WinDbg中有用的主要窗口 011
1.3.2 常用的調(diào)試命令 013
1.3.3 調(diào)用棧與當前進程 014
1.4 編寫第一個例子 017
1.4.1 無法加載問題 017
1.4.2 不起作用的代碼 020
1.4.3 正確的代碼結(jié)構(gòu)與異常處理 023
1.4.4 以覆蓋為目的的調(diào)試 025
第2章 常見錯誤和非法地址訪問藍屏 028
2.1 非法指針導致的藍屏 028
2.1.1 空指針訪問導致的藍屏 028
2.1.2 空指針寫入導致的藍屏 030
2.1.3 簡單亂指針導致的藍屏 032
2.1.4 亂指針遍歷鏈表導致的藍屏 033
2.1.5 出現(xiàn)亂指針的原因 035
2.2 越界導致的藍屏 037
2.2.1 分配邊界頁面的函數(shù) 037
2.2.2 字符串越界導致的藍屏 038
2.2.3 內(nèi)存掃描越界導致的藍屏 041
2.2.4 棧越界導致的藍屏 043
2.3 非法地址執(zhí)行導致的藍屏 045
2.3.1 執(zhí)行空函數(shù)指針導致的藍屏 045
2.3.2 執(zhí)行棧地址函數(shù)指針導致的藍屏 046
2.3.3 執(zhí)行已卸載驅(qū)動函數(shù)導致的藍屏 047
2.4 各類非法訪問錯誤總結(jié) 050
第3章 內(nèi)核開發(fā)中的泄漏、卡死與重入 052
3.1 內(nèi)存泄漏 052
3.1.1 通過任務(wù)管理器觀察內(nèi)存泄漏 052
3.1.2 通過PoolTag來排查泄漏 056
3.1.3 分三級管理的內(nèi)存分配 058
3.1.4 快速定位內(nèi)存泄漏 064
3.2 卡死 067
3.2.1 死循環(huán)導致的進程強卡死 068
3.2.2 死循環(huán)導致的系統(tǒng)卡死 071
3.2.3 自旋鎖未釋放導致的系統(tǒng)卡死和藍屏 075
3.3 重入 080
3.3.1 遞歸導致的雙重失敗崩潰 081
3.3.2 回調(diào)重入導致的崩潰 083
3.3.3 文件系統(tǒng)設(shè)備棧引起的重入 087
第4章 用戶環(huán)境缺陷的調(diào)試 093
4.1 與用戶保持聯(lián)系 093
4.1.1 無法及時聯(lián)系用戶的原因 093
4.1.2 簡單快速獲取反饋 094
4.1.3 用正確的方式和用戶接觸 095
4.2 建議用戶使用轉(zhuǎn)儲文件協(xié)助調(diào)試 095
4.2.1 手動開啟崩潰轉(zhuǎn)儲的設(shè)置 096
4.2.2 默認開啟崩潰轉(zhuǎn)儲并上傳轉(zhuǎn)儲文件 097
4.2.3 強制生成轉(zhuǎn)儲文件 099
4.3 編寫一個強制藍屏工具 100
4.3.1 使用代碼安裝一個驅(qū)動程序 100
4.3.2 以管理員模式運行及提權(quán) 103
4.3.3 加載驅(qū)動程序 106
4.3.4 完成并加載藍屏驅(qū)動程序 108
4.4 轉(zhuǎn)儲文件分析示例 111
4.4.1 非法內(nèi)存訪問的轉(zhuǎn)儲文件 111
4.4.2 進程強卡死的轉(zhuǎn)儲文件 115
4.4.3 內(nèi)存泄漏的轉(zhuǎn)儲文件 119
第5章 海量用戶項目開發(fā)與調(diào)試 122
5.1 “無法調(diào)試”的缺陷 123
5.1.1 缺陷到底能否被解決 123
5.1.2 解決缺陷的通用手段和模式 125
5.1.3 用分段排除法調(diào)整定位缺陷 126
5.2 模塊劃分為基礎(chǔ)的調(diào)整 128
5.2.1 通用的模塊劃分方法 128
5.2.2 內(nèi)核程序功能劃分與開關(guān) 131
5.2.3 利用配置進行動態(tài)開關(guān) 135
5.3 建立自監(jiān)控機制 138
5.3.1 初始化過程的監(jiān)控 139
5.3.2 功能有效性的自我監(jiān)控 144
5.3.3 持續(xù)執(zhí)行的心跳監(jiān)控 148
5.4 利用海量用戶定位未知缺陷 151
5.4.1 用隨機對照試驗來確認未知缺陷 151
5.4.2 確定外網(wǎng)內(nèi)核驅(qū)動程序“健康度” 154
5.4.3 繼續(xù)分組對比以確認未知缺陷 155
5.4.4 在發(fā)布和更新中持續(xù)監(jiān)控健康度 157
第6章 內(nèi)核掛鉤與沖突問題調(diào)試 158
6.1 解決沖突的正確方式 158
6.1.1 積極但低調(diào)地解決問題 158
6.1.2 用戶價值才是唯一取向 159
6.2 掛鉤的開發(fā) 161
6.2.1 被掛鉤的程序 162
6.2.2 枚舉和注冊回調(diào)的時序 164
6.2.3 導入地址表的檢索 170
6.2.4 掛鉤的實現(xiàn) 175
6.3 沖突的發(fā)現(xiàn)、分析與解決 183
6.3.1 沖突的現(xiàn)象 183
6.3.2 用dps命令手工解析調(diào)用棧 185
6.3.3 逆向分析第三方程序并解決問題 189
6.3.4 肇事方視角定位解決問題 192
第7章 文件系統(tǒng)過濾與逆向調(diào)試 195
7.1 微過濾驅(qū)動 195
7.1.1 補齊微過濾驅(qū)動所需要的注冊表項 196
7.1.2 啟動微過濾驅(qū)動程序 202
7.1.3 對文件打開進行過濾 205
7.2 微過濾驅(qū)動的動態(tài)卸載問題 210
7.2.1 重現(xiàn)缺陷并進行初步定位 211
7.2.2 尋找案發(fā)第一現(xiàn)場 213
7.3 利用IDA Pro進行靜態(tài)分析 216
7.3.1 IDA Pro操作入門 216
7.3.2 利用IDA Pro F5逆向FltUnregisterFilter 219
7.3.3 逆向nt模塊中的ExWaitForRundownProtectionRelease 223
7.4 IDA Pro分析和WinDbg調(diào)試的協(xié)同 225
7.4.1 通過符號表查找線索 225
7.4.2 IDA Pro靜態(tài)分析尋找調(diào)用者 226
7.4.3 WinDbg動態(tài)調(diào)試尋找調(diào)用者 229
第8章 非文檔開發(fā)與調(diào)試 233
8.1 使用非文檔方式定位函數(shù) 233
8.1.1 內(nèi)核函數(shù)的公開、導出和未導出 234
8.1.2 繞過導入表來定位函數(shù) 236
8.1.3 間接定位函數(shù)的代碼實現(xiàn) 239
8.2 使用非文檔方式探索內(nèi)核功能 243
8.2.1 嘗試監(jiān)控MmMaploSpace的調(diào)用 243
8.2.2 研究PTE Tracker如何開啟 246
8.2.3 解決PTE Tracker開啟后的藍屏問題 249
8.3 逆向Windows內(nèi)核數(shù)據(jù)結(jié)構(gòu) 251
8.3.1 從公開參數(shù)到未公開參數(shù) 251
8.3.2 從參數(shù)到內(nèi)部變量和結(jié)構(gòu) 254
8.3.3 通過各種參考資料逆向內(nèi)核 260
8.4 實現(xiàn)非文檔操作的編碼實現(xiàn) 264
8.4.1 從確認操作系統(tǒng)的版本開始 264
8.4.2 確定需要的全局變量和數(shù)據(jù)結(jié)構(gòu) 265
8.4.3 定位全局變量的位置 268
8.4.4 讀取PTE Tracker記錄并進行驗證 275

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號