深入解析 Windows 操作系統, 7/e (捲1) Windows Internals, Part 1: System architecture, processes, threads, memory management, and more, 7/e

Pavel Yosifovich, Mark E. Russinovich, David A. Solomon, Alex Ionescu

  • 深入解析 Windows 操作系統, 7/e (捲1)-preview-1
  • 深入解析 Windows 操作系統, 7/e (捲1)-preview-2
深入解析 Windows 操作系統, 7/e (捲1)-preview-1

買這商品的人也買了...

商品描述

本書基於Windows 10和Windows Server 2016編寫,深入解析Windows操作系統的系統架構、進程、線程、內存管理等知識,旨在幫助讀者瞭解Windows 10和Windows Server 2016操作系統內部工作原理,使之在針對Windows平臺開發應用程序時,可以更好地理解不同設計機制間的關系。

本書先介紹Windows的基本概念和工具以及Windows的架構和主要組件,然後詳細介紹進程和作業、內存管理、I/O系統等內容,最後介紹Windows內置的安全機制以及用於阻止濫用的各種緩解措施。

本書輔以大量實驗,並給出了具體步驟,可供讀者自行嘗試,讓他們通過內核調試器、Sysinternals工具和專為本書內容開發的其他工具一窺Windows的工作原理,進而能夠將這些知識應用於改進應用程序設計、調試以及系統性能和支持。

本書適合希望瞭解Windows 10和Windows Server 2016操作系統內部工作原理的開發者、系統管理員及安全研究人員閱讀。

作者簡介

帕維爾·約西沃維奇(Pavel Yosifovich)是一位精通微軟技術和工具的*發者、講師,還是微軟MVP 以及在線教育網站Pluralsight 的簽約作者。


亞歷克斯·伊奧尼斯庫(Alex Ionescu) 是CrowdStrike 的EDR 戰略副總裁,也是底層軟件、操作研究與內核開發、 安全培訓和逆向工程領域的專家。
他曾在世界各地講授有關Windows 內部機理的課程,並活躍於安全研究社區,多次參加會議講座和bug 賞金計劃。


馬克· E.魯辛諾維奇( Mark E.Russinovich)是Microsoft Azure( 微軟的化、企業級雲平台)的&席技術官。
他是分佈式和操作領域的專家,曾是Winternals Software 公司的聯合創始人,並在該公司被微軟收購後加入了微軟。
他還是Sysinternals 工具的*明者和Sysinternals 網站的創立者。


大衛· A . 所羅門(David A. Solomon)在其退休前的20 餘年裡,不遺餘力地為眾多*發者和IT人士講授有關Windows 內核接口的課程。
在出版了自己的*一本書Windows NT for OpenVMS Professionals 後,他撰寫了Inside Windows NT 的第2 版,並與馬克·E.魯辛諾維奇合著了第3 ~ 6 版。
他曾多次在微軟的大會上發言,並於1993 年和2005 年榮獲微軟*有價值專家(MVP)獎項。

目錄大綱

第1章概念和工具1
1.1 Windows操作的版本1
1.1.1 Windows 10和未來的Windows版本3
1.1.2 Windows 10和OneCore 3
1.2基本概念和術語3
1.2.1 Windows API 3
1.2.2服務、函數和例程6
1.2.3進程7
1.2.4線程15
1.2.5作業17
1.2.6虛擬內存18
1.2.7內核模式和用戶模式20
1.2.8虛擬機監控程序23
1.2.9固件25
1.2.10終端服務和多會話25
1.2.11對象和句柄26
1.2.12安全性26
1.2.13註冊表28
1.2.14 Unicode 28
1.3深入了解Windows內部原理30
1.3.1性能監視器和資源監視器30
1.3. 2內核調試32
1.3.3 Windows軟件開發包36
1.3.4 Sysinternals工具37
1.4小結37

第2章架構38
2.1需求和設計目標38
2.2操作模型39
2.3架構概述39
2.3.1可移植性41
2.3.2對稱多處理器42
2.3.3可伸縮性45
2.3.4客戶端和服務器版本之間的差異45
2.3 .5已檢驗版本48
2.4基於虛擬化的安全架構概述49
2.5重要的組件51
2.5.1環境子和子DLL 52
2.5.2其他子57
2.5.3執行體61
2.5.4內核63
2.5.5硬件抽象層66
2.5.6設備驅動程序69
2.5.7進程74
2.6小結84

第3章進程和作業85
3.1創建進程85
3.1.1 CreateProcess*函數的參數86
3.1.2創建Windows“現代化”進程87
3.1.3創建其他類型的進程87
3.2進程的內部構造88
3.3受保護進程95
3.3.1受保護進程輕型(PPL) 96
3.3.2對第三方PPL的支持99
3.4 *小進程和Pico進程100
3.4.1 *小進程100
3.4.2 Pico進程101
3.5 Trustlet(安全進程) 102
3.5.1 Trustlet的構造103
3.5.2 Trustlet策略元數據103
3.5.3 Trustlet的屬性104
3.5.4內置的Trustlet 104
3.5.5 Trustlet的標識105
3.5.6隔離用戶模式服務105
3.5.7 Trustlet可訪問的調用106
3.6 CreateProcess的流程107
3.6.1第1階段:轉換並驗證參數和標誌108
3.6.2第2階段:打開要執行的映像112
3.6.3第3階段:創建Windows執行體進程對象114
3.6.4第4階段:創建初始線程及其棧和上下文118
3.6.5第5階段:執行與Windows子有關的初始化工作120
3.6.6第6階段:初始線程的啟動執行121
3.6.7第7階段:在新進程的上下文中執行進程初始化工作122
3.7進程的終止126
3.8映像加載程序127
3.8.1進程初始化的早期工作129
3.8.2 DLL名稱解析和重定向131
3.8.3已加載模塊數據庫135
3.8.4導入解析138
3.8.5導入過程初始化的後處理139
3.8. 6 SwitchBack 140
3.8.7 API集142
3.9作業144
3.9.1作業的限制145
3.9.2使用作業146
3.9.3嵌套的作業146
3.9.4 Windows容器(Server Silo) 150
3.10小結157

第4章線程158
4.1創建線程158
4.2線程的內部機理159
4.2.1數據結構159
4.2.2線程的誕生169
4.3查看線程的活動170
4.4線程的調度175
4.4.1 Windows調度概述175
4.4.2優先級級別176
4.4 .3線程的狀態181
4.4.4調度程序數據庫186
4.4.5量程188
4.4.6優先級提升193
4.4.7上下文切換207
4.4.8調度場景208
4.4.9空閒線程211
4.4.10線程的掛起214
4.4.11 (深度)凍結214
4.4.12線程的選擇216
4.4. 13多處理器217
4.4.14多處理器中線程的選擇230
4.4.15處理器的選擇231
4.4.16異質調度(big.LITTLE) 233
4.5基於組的調度234
4.5.1動態公平共享調度235
4.5.2 CPU速率限制238
4.5.3處理器的動態添加和替換241
4.6工作者工廠(線程池) 242
4.7小結245

第5章內存管理246
5.1內存管理器簡介246
5.1.1內存管理器組件247
5.1.2大頁面和小頁面247
5.1.3查看內存使用情況249
5.1.4內部同步252
5.2內存管理器提供的服務252
5.2.1頁面狀態和內存的分配253
5.2.2提交用量和提交限制256
5.2.3鎖定到內存256
5.2.4分配的粒度257
5.2.5共享內存和映射文件257
5.2.6保護內存259
5.2.7數據執行保護260
5.2.8寫入時復制263
5.2.9地址窗口擴展264
5.3內核模式堆(內存池) 265
5.3.1池的大小266
5.3.2監視內存池的使用267
5.3.3旁視列表270
5.4堆管理器271
5.4.1進程堆272
5.4.2堆的類型273
5.4.3 NT堆273
5.4.4堆同步273
5.4.5段堆275
5.4.6堆的安全特性279
5.4.7堆的調試特性280
5.4.8頁堆280
5.4.9容錯堆283
5.5虛擬地址空間佈局284
5.5.1 x86地址空間佈局285
5.5.2 x86地址空間佈局288
5.5.3 x86會話空間288
5.5.4頁表項290
5.5.5 ARM地址空間佈局291
5.5.6 64位地址空間佈局291
5.5.7 x64虛擬尋址的局限293
5.5.8動態虛擬地址空間管理293
5.5.9虛擬地址空間配額298
5.5.10用戶地址空間佈局298
5.6地址轉換303
5.6.1 x86虛擬地址轉換303
5.6.2地址轉換旁視緩衝區308
5.6.3 x64虛擬地址轉換311
5.6.4 ARM虛擬地址轉換311
5.7頁面的處理312
5.7.1無效PTE 313
5.7.2原型PTE 314
5.7.3頁面換入I/O 316
5.7.4衝突的頁面316
5.7.5聚簇的頁面317
5.7.6頁面文件317
5.7.7提交用量和提交限制322
5.7.8提交用量和頁面文件大小325
5.8棧326
5.8.1用戶棧326
5.8.2內核棧327
5.8.3 DPC棧328
5.9虛擬地址描述符328
5.9.1進程的VAD 329
5.9.2旋轉VAD 330
5.10 NUMA 331
5.11節對象331
5.12工作集338
5.12.1按需換頁338
5.12.2邏輯預取器和ReadyBoot 339
5.12. 3放置策略341
5.12.4工作集管理342
5.12.5平衡集管理器和交換器346
5.12.6工作集346
5.12.7內存通知事件347
5.13頁幀編號數據庫349
5.13.1頁面列表的轉換351
5.13 .2頁面優先級357
5.13.3已修改頁面寫出器和映射頁面寫出器359
5.13.4 PFN的數據結構361
5.13.5頁面文件的保留364
5.14物理內存的限制366
5.15內存壓縮369
5.15. 1壓縮過程圖解370
5.15.2壓縮架構372
5.16內存分區374
5.17內存聯合376
5.17.1搜索階段378
5.17.2分類階段378
5.17.3頁面聯合階段379
5.17.4從私有到共享PTE 380
5.17.5聯合頁面的釋放381
5.18內存飛地384
5.18.1編程接口385
5.18.2內存飛地的初始化385
5.18.3飛地的構造386
5.18.4將數據載入飛地387
5.18.5飛地的初始化388
5.19前瞻性內存管理(SuperFetch) 388
5.19.1組件388
5.19.2跟踪和日誌記錄390
5.19.3場景390
5.19.4頁面優先級和重均衡391
5.19.5健壯性能393
5.19.6 ReadyBoost 394
5.19.7 ReadyDrive 395
5.19.8進程反射395
5.20小結397

第6章I/O 398
6.1 I/O組件398
6.1.1 I/O管理器400
6.1.2典型的I/O處理400
6.2中斷請求級別和過程調用402
6.2.1中斷請求級別402
6.2.2過程調用404
6.3設備驅動程序405
6.3.1設備驅動程序的類型406
6.3.2驅動程序的結構410
6.3.3驅動程序對象和設備對象412
6.3.4打開設備417
6.4 I/O的處理421
6.4.1 I/O的類型421
6.4.2 I/O請求包423
6.4.3針對單層硬件驅動程序的I/O請求433
6.4 .4針對分層驅動程序的I/O請求440
6.4.5線程無關I/O 443
6.4.6 I/O的取消443
6.4.7 I/O完成端口447
6.4.8 I/O優先級處理451
6.4.9容器通知455
6.5驅動程序驗證程序456
6.5.1與I/O有關的驗證選項458
6.5.2與內存有關的驗證選項458
6.6即插即用管理器462
6.6.1即插即用的支持級別462
6.6.2設備的枚舉463
6.6.3設備棧465
6.6.4驅動程序對即插即用的支持470
6.6.5即插即用驅動程序的安裝472
6.7常規驅動程序的加載和安裝475
6.7.1驅動程序的加載475
6.7.2驅動程序的安裝477
6.8 Windows驅動程序基礎477
6.8.1內核模式驅動程序框架478
6.8.2用戶模式驅動程序框架485
6.9電源管理器488
6.9.1連接待機和新型待機491
6.9.2電源管理器操作491
6.9.3驅動程序的電源操作492
6.9.4驅動程序和應用程序對設備電源的控制495
6.9.5電源管理框架495
6.9.6電源可用性請求497
6.10小結498

第7章安全性500
7.1安全評級500
7.1.1可信計算機評估標準500
7.1.2通用標準501
7.2安全組件502
7.3基於虛擬化的安全性504
7.3.1 Credential Guard 505
7.3.2 Device Guard 510
7.4保護對象512
7.4.1訪問檢查513
7.4.2安全標識符516
7.4.3虛擬服務賬戶533
7.4.4安全描述符和訪問控制537
7.4.5動態訪問控制550
7.5 AuthZ API 551
7.6賬戶權限和特權552
7.6.1賬戶權限553
7.6.2特權554
7.6.3特權558
7.7進程和線程的訪問令牌559
7.8安全審核559
7.8.1審核對象訪問560
7.8.2全局審核策略563
7.8.3 *級審核策略設置564
7.9 AppContainer 565
7.9.1 UWP應用概述566
7.9.2 AppContainer 567
7.10登錄587
7.10.1 Winlogon的初始化588
7.10.2用戶登錄的步驟590
7.10.3可保證的身份驗證594
7.10.4 Windows Biometric Framework 595
7.10.5 Windows Hello 597
7.11用戶賬戶控制和虛擬化598
7.11.1文件和註冊表虛擬化598
7.11.2權限提升603
7.12攻擊緩解608
7.12.1進程緩解策略608
7.12.2控制流完整性612
7.12.3安全聲明622
7.13應用程序標識626
7.14 AppLocker 626
7.15軟件限制策略630
7.16內核補丁保護632
7.17 PatchGuard 633
7.18 HyperGuard 635
7.19小結636