絕對硬派:Windows核心首度公開C++解析

絕對硬派:Windows核心首度公開C++解析 pdf epub mobi txt 电子书 下载 2025

譚文
圖書標籤:
  • Windows內核
  • C++
  • 操作係統
  • 底層原理
  • 係統編程
  • 驅動開發
  • 內核調試
  • Windows
  • 源碼分析
  • 技術深度
想要找书就要到 灣灣書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

圖書描述

  本書作者使用瞭WDK作為驅動程式的開發,在重要部分,更使用瞭神級的組閤語言進行修改編輯,久違的Windows核心剖析好書
 
  ◎ 用最強大的C++、組閤語言,充分解析32位元及64位元
  ◎ 從Windows XP、Windows Vista、Windows 7到最新的Windows 10,處理程序大公開
  ◎ 徹底解決對Windows一知半解的尷尬局麵,一探封閉係統Windows核心的究竟
 
  適閤讀者群
  電腦軟體安全從業者,有C 語言基礎且有興趣瞭解 Windows 核心、希望從事 Windows 核心開發、或對電腦安全感興趣的讀者。
 
專傢推薦
 
  本書是作者多年實作經驗的精華之作,深入淺齣的揭開現代OS核心的神秘麵紗,是每一位安全技術實作者的良器。~~ 數篷科技CTO 楊一飛
 
  本書係統地介紹Windows係統程式設計機製,內容豐富、簡單易懂,想學習Windows核心程式設計,有這一本足矣。~~十五派信息安全教育創始人 任曉琿
 
  本書作者以雄厚的技術實力和多年程式設計經驗,係統地介紹Windows核心程式設計的方方麵麵。本書適閤入門與進階Windows和新開發的讀者閱讀。~~騰訊安全部總監、安全應急響應中心(TSRC)負責人 鬍珀 (lake2) 
 
  這是一本有關Windows驅動開發的寶典,內容全麵、詳實。書中介紹的方法和技巧實用性強,有很高的參考和學習價值。~~騰訊防毒實驗室負責人 馬勁鬆
 
  Windows平颱的核心安全在未來很長一段時間仍會是軟體安全界重要的技術領域之一,本書全新的技術內容會讓你受益匪淺。~~《Android 軟體安全權威指南》作者 豐生強
 
  本書內容豐富、主題清晰,作者有著豐富的驅動開發經驗,會助您快速進階Windows核心程式設計開發。~~GeekPwn評委、滴滴美國研究院資深專傢工程師 王宇
 
  本書不僅可以學習Windows核心開發的理論知識,還有很多實際案例,可以很好地提高閱讀者的動手能力,並纍積程式設計經驗。~~永安在線 CTO 鄧欣
 
  作者分享瞭Windows主機安全麵嚮的開發技巧,讀者隻要認真閱讀並動手實作,一定會收穫滿滿。~~PC Hunter作者 linxer
深度探索:現代操作係統底層架構與高效能C++編程實戰 本書聚焦於操作係統核心原理的深度剖析,結閤前沿的C++語言特性,旨在為係統級軟件開發者、操作係統研究人員以及對底層技術有濃厚興趣的讀者提供一份詳盡且實用的技術指南。我們不局限於錶麵的應用編程接口(API),而是深入到內存管理、進程/綫程調度、I/O子係統以及虛擬化技術的核心機製中,同時探討如何運用現代C++的強大功能來構建健壯、高效的係統軟件。 --- 第一部分:操作係統核心概念重構與抽象 本部分將係統地梳理和重構讀者對操作係統基本概念的理解,重點在於從硬件抽象層嚮上構建軟件模型的思維框架。 第一章:從裸機到抽象——啓動過程與硬件交互 引導序列的奧秘: 詳細解析從固件(UEFI/BIOS)到內核加載的整個啓動流程。我們將深入研究引導加載程序(Bootloader)的工作原理,包括如何初始化關鍵的硬件資源,如中斷描述符錶(IDT)的設置,以及如何切換到受保護模式或長模式。 匯編與C的橋梁: 探討匯編語言在操作係統初始化階段不可或缺的作用,特彆是上下文保存與恢復、棧的建立,以及如何安全地過渡到高層次的C語言環境。 中斷與異常處理機製: 深入分析中斷嚮量錶、中斷描述符錶的工作方式。我們將詳細解析各種類型的異常(如缺頁異常、通用保護錯誤)在內核中的捕獲、診斷和恢復機製,這是構建穩定係統的基石。 第二章:內存管理的藝術——虛擬化與物理層麵的交織 分頁機製的精髓: 詳盡闡述基於頁錶的內存管理單元(MMU)如何實現虛擬地址到物理地址的轉換。我們將研究多級頁錶的結構,以及TLB(Translation Lookaside Buffer)的緩存效應如何影響性能。 內核內存分配器設計: 摒棄對標準庫分配器的依賴,我們著手設計和實現高效的內核級內存分配器。內容包括夥伴係統(Buddy System)的實現細節,slab/slub分配策略在緩存對象方麵的優勢,以及如何處理內存碎片化問題。 虛擬內存與文件係統映射: 探討`mmap()`等係統調用背後的機製,理解如何將文件內容直接映射到進程的虛擬地址空間中,以及這種機製如何優化文件I/O性能。 --- 第二部分:並發、調度與進程模型 本部分是理解現代多核係統性能瓶頸和優化策略的關鍵。 第三章:進程與綫程的生命周期管理 上下文切換的開銷分析: 深入剖析CPU寄存器集、程序計數器、棧指針等關鍵狀態在進程或綫程切換過程中保存和恢復的細節。我們將量化上下文切換對係統性能的實際影響,並探討如何通過優化調度器來最小化這種開銷。 內核數據結構的同步挑戰: 係統級編程中,如何保證內核數據結構在並發訪問下的一緻性是重中之重。本章將詳述自鏇鎖(Spinlocks)、互斥量(Mutexes)以及讀寫鎖在內核環境下的特定實現和適用場景。 細粒度同步的未來: 介紹無鎖(Lock-free)和等待無關(Wait-free)數據結構的構建方法,重點講解基於原子操作(Atomic Operations)的並發原語(如CAS循環)在實現高性能同步機製中的應用。 第四章:調度策略的演進與實踐 時間片與優先級繼承: 全麵解析經典的調度算法(如FCFS、RR、多級反饋隊列),並聚焦於現代搶占式內核中復雜的優先級繼承和提升機製,以應對實時性要求高的任務。 多核環境下的負載均衡: 探討如何設計調度器來優化CPU親和性(CPU Affinity),以及如何實現跨核的負載均衡策略,避免熱點核(Hot Cores)的齣現,確保係統資源的均勻利用。 實時調度與軟/硬實時性: 區分硬實時和軟實時係統的調度要求,介紹針對特定延遲敏感型應用的調度擴展和技術(如Preemption Threshold)。 --- 第三部分:I/O子係統、驅動模型與高性能C++應用 本部分將視野轉嚮用戶空間與內核空間的交互,並結閤現代C++的工程實踐。 第五章:I/O子係統與設備驅動交互 係統調用接口(Syscall): 詳細解析係統調用機製的實現,包括用戶態如何觸發陷阱(Trap),內核態如何驗證參數,以及陷阱返迴後的用戶態恢復過程。 塊設備與緩衝管理: 深入理解塊設備的尋址機製、隊列管理(如I/O調度器如CFQ/Deadline/BFQ的演變)以及內核緩衝區緩存(Buffer Cache)在減少物理磁盤訪問中的作用。 異步I/O的革命: 重點介紹現代I/O模型,如`epoll`(Linux)或`IOCP`(Windows)的底層工作原理。我們將分析如何利用這些機製構建高性能的網絡服務器,實現數萬並發連接的處理。 第六章:麵嚮係統編程的現代C++工程實踐 資源管理與RAII在內核/驅動中的適配: 雖然標準C++庫的某些特性在內核中受限,但RAII(Resource Acquisition Is Initialization)思想的精髓是係統編程的關鍵。我們將探討如何在受限環境下實現類C++風格的資源安全封裝(如使用定製的智能指針或包裝器)。 模闆元編程與編譯期優化: 展示如何利用C++的模闆元編程能力,在編譯期進行類型檢查、接口斷言和常量計算,從而在不犧牲運行時性能的前提下,提升係統代碼的健壯性和可維護性。 並發編程的高級特性: 結閤C++11/17/20引入的`std::thread`、`std::future`、協程(Coroutines)等特性,對比它們與底層操作係統綫程/調度機製的映射關係。重點討論如何安全地將現代C++的並發模型移植到係統級框架中,以簡化復雜的多綫程邏輯。 --- 結語:構建下一代係統的藍圖 本書的最終目標是賦予讀者一種從底層硬件視角審視和設計復雜軟件係統的能力。通過對操作係統核心機製的徹底理解,並輔以現代C++語言的強大錶達力,讀者將能夠設計齣更穩定、更高效、更易於維護的係統級軟件。我們相信,對“為什麼”的深入探究,遠比僅僅知道“如何做”更為重要。

著者信息

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

圖書目錄

前言

第一篇 基礎篇
01 核心程式設計環境

1.1 下載開發編譯環境
1.2 撰寫第一個C 檔案
1.3 編譯第一個驅動 

02 核心驅動執行與偵錯
2.1 驅動的執行 
2.2 服務的基本操作
2.3 驅動的偵錯 

03 核心程式設計基礎
3.1 上下文環境 
3.2 插斷要求等級
3.3 驅動例外
3.4 字串操作 
3.5 鏈結串列 
3.6 迴鏇栓鎖
3.7 記憶體分配 
3.8 物件與控製碼
3.9 登錄檔 
3.10 檔案操作 
3.11 執行緒與事件

04 應用與核心通訊
4.1 核心方麵的程式設計
4.2 應用方麵的程式設計

05  64 位元和32 位元核心開發差異
5.1 64 位元係統新增機製
5.2 程式設計差異

06 核心程式設計技巧
6.1 初始化設定值問題
6.2 有效性判斷
6.3 即時申請 
6.4 獨立性與最小化原則 
6.5 巢狀結構陷阱
6.6 穩定性處理

第二篇 過濾篇
07 序列埠的過濾

7.1 過濾的概念
7.2 獲得實際資料 
7.3 完整的程式

08 鍵盤的過濾
8.1 技術原理 
8.2 鍵盤過濾的架構
8.3 鍵盤過濾的請求處理
8.4 從請求中列印齣按鍵資訊 
8.5 Hook 分發函數
8.6 Hook 鍵盤中斷反過濾
8.7 直接用通訊埠操作鍵盤 

09 磁碟的虛擬
9.1 虛擬的磁碟
9.2 一個實際的實例 
9.3 入口函數
9.4 EvtDriverDeviceAdd 函數
9.5 FAT12/16 磁碟捲冊初始化
9.6 驅動中的請求處理 
9.7 Ramdisk 的編譯和安裝

10 磁碟的過濾
10.1 磁碟過濾驅動的概念
10.2 具有還原功能的磁碟捲冊過濾驅動
10.3 驅動分析

11 檔案係統的過濾與監控
11.1 檔案係統的裝置物件
11.2 檔案係統的分發函數
11.3 裝置的綁定前期工作
11.4 檔案係統控製裝置的綁定
11.5 檔案係統捲冊裝置的綁定
11.6 讀/寫操作的過濾
11.7 其他操作的過濾
11.8 路徑過濾的實現
11.9 把sfilter 編譯成靜態程式庫

12 檔案係統透明加密
12.1 檔案透明加密的應用
12.2 區分處理程序
12.3 記憶體對映與檔案緩衝
12.4 加密標識
12.5 檔案加密錶
12.6 檔案開啟處理 
12.7 讀/寫加密和解密
12.8 crypt_file 的組裝

13 檔案係統微過濾驅動
13.1 檔案係統微過濾驅動簡介
13.2 Minifilter 的程式設計架構
13.3 Minifilter 如何與應用程式通訊
13.4 Minifilter 的安裝與載入

14 網路傳輸層過濾
14.1 TDI 概要 
14.2 TDI 的過濾架構
14.3 產生請求:取得位址
14.4 控製請求
14.5 本書實例tdifw.lib 的應用

15 Windows 過濾平颱
15.1 WFP 簡介
15.2 WFP 架構
15.3 基本物件模型
15.4 WFP 操作
15.5 WFP 過濾實例

16 NDIS 協定驅動
16.1 乙太網路封包和網路驅動架構 
16.2 協定驅動的DriverEntry
16.3 協定與網路卡的綁定
16.4 綁定的解除
16.5 在使用者態操作協定驅動 
16.6 在核心態完成功能的實現 
16.7 協定驅動的接收迴呼

17 NDIS 迷你通訊埠驅動
17.1 迷你通訊埠驅動的應用與概述
17.2 迷你通訊埠驅動的初始化
17.3 開啟ndisprot 裝置
17.4 使用ndisprot 發送封包
17.5 使用ndisprot 接收封包
17.6 其他的特徵迴呼函數的實現

18 NDIS 中間層驅動
18.1 NDIS 中間層驅動概述
18.2 中間層驅動的入口與綁定
18.3 中間層驅動發送資料封包
18.4 中間層驅動接收資料封包
18.5 中間層驅動程式查詢和設定
18.6 NDIS 控製碼
18.7 產生普通控製裝置

第三篇 應用篇
19 IA-32 組閤語言基礎

19.1 x86 記憶體、暫存器與堆疊
19.2 x86 中函數的實現
19.3 x86 中函數的呼叫與傳迴
19.4 從32 位元組閤語言到64 位元組閤語言
19.5 64 位元下的函數實現

20 Windows 核心掛鉤
20.1 係統服務描述符號錶掛鉤
20.2 函數匯齣錶掛鉤
20.3 Windows 7 係統下IofCallDriver的追蹤 
20.4 Windows 7 係統下內聯掛鉤 
20.5 中斷與中斷掛鉤 

21 Windows 通知與迴呼
21.1 Windows 的事件通知與迴呼
21.2 常用的事件通知 
21.3 Windows 迴呼機製
21.4 安全的死角,迴呼的應用

22 保護處理程序
22.1 核心物件簡介
22.2 核心物件的結構
22.3 保護核心物件
22.4 處理程序的保護

23 程式植入與防植入
23.1 植入與防植入簡介
23.2 常用的植入方式
23.3 主動植入
23.4 被動植入
23.5 防植入
23.6 歸納 

A 如何使用本書的原始程式
B 練習題

圖書序言

  • ISBN:9789865501570
  • 規格:平裝 / 880頁 / 17 x 23 x 4 cm / 普通級 / 單色印刷 / 初版
  • 齣版地:颱灣

圖書試讀

前言
 
  Windows 是目前主流的封閉原始碼作業係統,從第一個NT 核心的Windows2000 至今,已經有20 年左右的歷史。在這漫長的20 年內,為瞭滿足日益變化的業務需求,以及應對不斷升級的安全挑戰,Windows 作業係統核心一直不斷升級與增強,其主要錶現是核心中增加瞭新的邏輯模組與安全機製,其中最為典型的是64 位元的Windows 作業係統核心比較32 位元核心增加瞭Patch Guard" 模組,這個模組的主要作用是檢查核心是否被協力廠商核心模組「汙染」,目的是防止病毒木馬使用核心掛鉤或綁架的技術篡改核心。新的安全機製常常會對安全開發者帶來一定的影響,其原因是一些軟體過度依賴係統未公開的底層技術,而正確的做法是開發者需緊密依賴係統提供的公開機製,利用可利用的機製完成相同的功能,這要求開發者對整個Windows 核心機製有深入的瞭解。作者撰寫本書的目的之一,正是希望讀者能對Windows 核心有更全麵、更深入的認識。
 
  本書的前身是《Windows 核心程式設計與驅動開發》,本書在前者的基礎上,刪除瞭部分過時的章節,重新定義瞭大部分基礎章節並新增瞭部分目前較為熱門的技術,同時為瞭使本書內容更為聚焦,刪除瞭與Windows 核心連結性不強的內容。
 
  本書針對的讀者群主要有以下幾種。
  ■ 有一定 C 語言基礎,有興趣瞭解 Windows 核心的讀者。
  ■ 有一定 C 語言基礎,並且希望從事 Windows 核心開發的讀者。
  ■ 有一定基礎的 Windows 核心開發者,有意願進一步加強的讀者。
 
  本書共分為三篇。第一篇為基礎篇(第1 章∼第6 章),從初學者的角度齣發,介紹Windows 核心的基本概念、開發環境的架設、係統機製以及核心程式設計的技巧。第1 章與第2 章是本書最為基礎的部分,介紹瞭核心程式設計的基本概念與開發環境架設,初學者應該首先學習這部分內容。第3 ∼第5 章重點介紹瞭係統的常用機製,這些機製的使用會貫穿本書所有章節,掌握這些常用機製是核心開發者最基本的要求。第6 章介紹瞭核心程式設計的注意事項與技巧,這些注意事項與技巧可以幫助初學者少走冤枉路,快速入門。
 
  第二篇為過濾篇(第7 章∼第18 章),是本書的核心內容,由易到難詳細介紹瞭Windows 係統的過濾機製。首先以最簡單的序列埠過濾驅動開始,剖析瞭一個過濾驅動的最基本要素,然後分別介紹瞭鍵盤過濾、磁碟過濾、檔案過濾以及網路過濾。對於網路過濾,本篇從不同的網路層次與角度介紹瞭TDI、WFP 以及NDIS 等機製。本篇內容涵蓋瞭目前Windows 係統絕大部分主流的過濾技術。
 
  第三篇為應用篇(第19 章∼第23 章),結閤前兩篇的基礎知識,本篇綜閤介紹瞭Windows 安全領域所需的其他技術,透過對本篇的學習,讀者將發現安全技術並不侷限於係統提供的現成機製。本篇選取瞭目前主流安全軟體所使用到的典型技術,深入淺齣,首先介紹瞭CPU 的基本基礎知識,然後基於上述基礎知識,第20 章重點介紹瞭Windows 下的掛鉤技術,掛鉤技術常被用於安全軟體的檢測、稽核、攔截等技術;第22 章和第23 章從守護的角度,介紹瞭自我保護技術。
 
  筆者擁有十餘年的Windows 開發經驗,主導過資料安全、主機安全、伺服器安全等專案,有關To C(針對消費者群眾)和To B(針對企業使用者群眾)企業,深知Windows 核心的複雜性,由於企業的特殊環境,To C 和To B 的核心技術方案選型不盡相同,因為不同的使用者群眾,其主機上軟體存在參差不齊的同類安全軟體,安全軟體之間也存在大量的相容性問題,這些問題的引用使得原本並不簡單的核心程式設計更為複雜化。記得有很多讀者問過我一個相同的問題:如何撰寫一個穩定的核心模組。這個問題其實沒有標準答案,以筆者的經驗來看,讀者首先應該養成良好的程式設計習慣,然後深入瞭解係統的各種安全機製以及攔截方法,在撰寫程式時,請思考以下幾個問題:①這行程式碼是否會被其他軟體攔截導緻失敗;②這行程式碼是否會觸發一些協力廠商的迴呼函數;③這行程式碼失敗後應該怎麼處理。本書在介紹技術的同時,也介紹瞭筆者的核心開發心得體會與技巧,希望這些體會與技巧可以為讀者帶來更多的思考。核心程式設計類似於武林秘笈的內功修煉,需要時間沉澱,並非一蹴而就,請讀者要有更多的耐心,「成功之道,貴在堅持」。
 
  本書原始程式碼請至本公司官網deepmind.com.tw 搜尋本書後下載。作者亦有針對本書程式碼,維護一個github 的專案,網址為github.com/minglinchen/WinKernelDev。讀者可以隨時造訪這個網址下載最新的程式碼。
 
  寫作是一項工作量極大而繁雜的工作,而對技術書籍來說更是如此。由於我個人工作的緣故,寫作隻能在晚上或週末進行,有時為瞭整章內容的想法連貫而需要挑燈夜戰,通宵達旦。一路走來,感謝我的父母、妻子和女兒,在每天有限的時間裡,我需要投入更多的時間精力專注在寫作上而缺少對他們的陪伴,尤其是我的女兒淇淇,在深感愧疚的同時,也感謝他們的瞭解與支援。
 
  感謝我的摯友黃瀚,在本書寫作過程中一直支援我,並為我提供瞭大量的技術性資源。感謝李冰和馮琦二位編輯,她們確保瞭本書所有文字內容嚴謹與通暢。
 
  感謝「安全圈」內朋友們的支援,尤其感謝數篷科技的科學傢吳燁、CTO 楊一飛以及架構師王柏達,他們在工作中為我提供大量的幫助。感謝上一本書籍熱心的讀者,他們迴饋的問題更進一步地加強本書的內容。
 
  最後,希望本書能為「安全圈」內的讀者或即將進入「安全圈」的讀者帶來更大的收穫。
 
陳銘霖

用户评价

相关图书

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 twbook.tinynews.org All Rights Reserved. 灣灣書站 版權所有