幫助中心 | 我的帳號 | 關於我們

Windows內核調試技術

  • 作者:譚文|責編:李冰
  • 出版社:電子工業
  • ISBN:9787121500237
  • 出版日期:2025/04/01
  • 裝幀:平裝
  • 頁數:279
人民幣:RMB 79 元      售價:
放入購物車
加入收藏夾

內容大鋼
    本書以為安全系統所開發的Windows驅動程序為例,由淺入深地介紹了Windows內核調試所需要的環境、工具、相關知識及技巧。書中列舉了Windows內核編程開發者容易犯的各類錯誤,以及由此導致的不同缺陷的調試和解決方法。對遠程調試、面向海量用戶的內核驅動程序的質量控制、程序衝突、無文檔編程等內核開發中常遇到的問題,也提供了對應的解決方案。本書適合具有C語言基礎的電腦相關專業大中專院校學生、軟體行業Windows相關的底層開發者、電腦安全行業的開發和研究人員閱讀。

作者介紹
譚文|責編:李冰
    譚文,網名楚狂人,已有十七年客戶端安全軟體開發經驗。先後在NEC、英特爾亞太研發有限公司、騰訊科技任職。曾經從事過企業安全軟體、×86版Android的houdini項目、騰訊電腦管家、騰訊遊戲安全等開發工作。對Windows內核有深入研究,現任騰訊科技遊戲安全團隊驅動程序開發負責人,專家工程師。

目錄
第1章  內核開發與調試的準備
  1.1  環境部署和工具安裝
    1.1.1  選擇調試工具
    1.1.2  安裝Visual Studio和WDK
    1.1.3  安裝被調試的虛擬機
  1.2  WinDbg的用法和存在的各種問題
    1.2.1  做好快照並快速連接WinDbg
    1.2.2  符號表和卡頓
    1.2.3  源代碼問題
  1.3  內核調試的實際操作示例
    1.3.1  WinDbg中有用的主要窗口
    1.3.2  常用的調試命令
    1.3.3  調用棧與當前進程
  1.4  編寫第一個例子
    1.4.1  無法載入問題
    1.4.2  不起作用的代碼
    1.4.3  正確的代碼結構與異常處理
    1.4.4  以覆蓋為目的的調試
第2章  常見錯誤和非法地址訪問藍屏
  2.1  非法指針導致的藍屏
    2.1.1  空指針訪問導致的藍屏
    2.1.2  空指針寫入導致的藍屏
    2.1.3  簡單亂指針導致的藍屏
    2.1.4  亂指針遍歷鏈表導致的藍屏
    2.1.5  出現亂指針的原因
  2.2  越界導致的藍屏
    2.2.1  分配邊界頁面的函數
    2.2.2  字元串越界導致的藍屏
    2.2.3  內存掃描越界導致的藍屏
    2.2.4  棧越界導致的藍屏
  2.3  非法地址執行導致的藍屏
    2.3.1  執行空函數指針導致的藍屏
    2.3.2  執行棧地址函數指針導致的藍屏
    2.3.3  執行已卸載驅動函數導致的藍屏
  2.4  各類非法訪問錯誤總結
第3章  內核開發中的泄漏、卡死與重入
  3.1  內存泄漏
    3.1.1  通過任務管理器觀察內存泄漏
    3.1.2  通過PoolTag來排查泄漏
    3.1.3  分三級管理的內存分配
    3.1.4  快速定位內存泄漏
  3.2  卡死
    3.2.1  死循環導致的進程強卡死
    3.2.2  死循環導致的系統卡死
    3.2.3  自旋鎖未釋放導致的系統卡死和藍屏
  3.3  重入
    3.3.1  遞歸導致的雙重失敗崩潰
    3.3.2  回調重入導致的崩潰
    3.3.3  文件系統設備棧引起的重入
第4章  用戶環境缺陷的調試

  4.1  與用戶保持聯繫
    4.1.1  無法及時聯繫用戶的原因
    4.1.2  簡單快速獲取反饋
    4.1.3  用正確的方式和用戶接觸
  4.2  建議用戶使用轉儲文件協助調試
    4.2.1  手動開啟崩潰轉儲的設置
    4.2.2  默認開啟崩潰轉儲並上傳轉儲文件
    4.2.3  強制生成轉儲文件
  4.3  編寫一個強制藍屏工具
    4.3.1  使用代碼安裝一個驅動程序
    4.3.2  以管理員模式運行及提權
    4.3.3  載入驅動程序
    4.3.4  完成並載入藍屏驅動程序
  4.4  轉儲文件分析示例
    4.4.1  非法內存訪問的轉儲文件
    4.4.2  進程強卡死的轉儲文件
    4.4.3  內存泄漏的轉儲文件
第5章  海量用戶項目開發與調試
  5.1  「無法調試」的缺陷
    5.1.1  缺陷到底能否被解決
    5.1.2  解決缺陷的通用手段和模式
    5.1.3  用分段排除法調整定位缺陷
  5.2  模塊劃分為基礎的調整
    5.2.1  通用的模塊劃分方法
    5.2.2  內核程序功能劃分與開關
    5.2.3  利用配置進行動態開關
  5.3  建立自監控機制
    5.3.1  初始化過程的監控
    5.3.2  功能有效性的自我監控
    5.3.3  持續執行的心跳監控
  5.4  利用海量用戶定位未知缺陷
    5.4.1  用隨機對照試驗來確認未知缺陷
    5.4.2  確定外網內核驅動程序「健康度」
    5.4.3  繼續分組對比以確認未知缺陷
    5.4.4  在發布和更新中持續監控健康度
第6章  內核掛鉤與衝突問題調試
  6.1  解決衝突的正確方式
    6.1.1  積極但低調地解決問題
    6.1.2  用戶價值才是唯一取向
  6.2  掛鉤的開發
    6.2.1  被掛鉤的程序
    6.2.2  枚舉和註冊回調的時序
    6.2.3  導入地址表的檢索
    6.2.4  掛鉤的實現
  6.3  衝突的發現、分析與解決
    6.3.1  衝突的現象
    6.3.2  用dps命令手工解析調用棧
    6.3.3  逆向分析第三方程序並解決問題
    6.3.4  肇事方視角定位解決問題
第7章  文件系統過濾與逆向調試

  7.1  微過濾驅動
    7.1.1  補齊微過濾驅動所需要的註冊表項
    7.1.2  啟動微過濾驅動程序
    7.1.3  對文件打開進行過濾
  7.2  微過濾驅動的動態卸載問題
    7.2.1  重現缺陷並進行初步定位
    7.2.2  尋找案發第一現場
  7.3  利用IDA Pro進行靜態分析
    7.3.1  IDA Pro操作入門
    7.3.2  利用IDA Pro F5逆向FltUnregisterFilter
    7.3.3  逆向nt模塊中的ExWaitForRundownProtectionRelease
  7.4  IDA Pro分析和WinDbg調試的協同
    7.4.1  通過符號表查找線索
    7.4.2  IDA Pro靜態分析尋找調用者
    7.4.3  WinDbg動態調試尋找調用者
第8章  非文檔開發與調試
  8.1  使用非文檔方式定位函數
    8.1.1  內核函數的公開、導出和未導出
    8.1.2  繞過導入表來定位函數
    8.1.3  間接定位函數的代碼實現
  8.2  使用非文檔方式探索內核功能
    8.2.1  嘗試監控MmMaploSpace的調用
    8.2.2  研究PTE Tracker如何開啟
    8.2.3  解決PTE Tracker開啟后的藍屏問題
  8.3  逆向Windows內核數據結構
    8.3.1  從公開參數到未公開參數
    8.3.2  從參數到內部變數和結構
    8.3.3  通過各種參考資料逆向內核
  8.4  實現非文檔操作的編碼實現
    8.4.1  從確認操作系統的版本開始
    8.4.2  確定需要的全局變數和數據結構
    8.4.3  定位全局變數的位置
    8.4.4  讀取PTE Tracker記錄並進行驗證

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032