Introduction |
|
xi | |
Chapter 1 Concepts and tools |
|
1 | (44) |
|
Windows operating system versions |
|
|
1 | (3) |
|
Windows 10 and future Windows versions |
|
|
3 | (1) |
|
|
3 | (1) |
|
Foundation concepts and terms |
|
|
4 | (31) |
|
|
4 | (3) |
|
Services, functions, and routines |
|
|
7 | (1) |
|
|
8 | (10) |
|
|
18 | (2) |
|
|
20 | (1) |
|
|
21 | (2) |
|
Kernel mode vs. user mode |
|
|
23 | (4) |
|
|
27 | (2) |
|
|
29 | (1) |
|
Terminal Services and multiple sessions |
|
|
29 | (1) |
|
|
30 | (1) |
|
|
31 | (1) |
|
|
32 | (1) |
|
|
33 | (2) |
|
Digging into Windows internals |
|
|
35 | (9) |
|
Performance Monitor and Resource Monitor |
|
|
36 | (2) |
|
|
38 | (5) |
|
Windows Software Development Kit |
|
|
43 | (1) |
|
|
43 | (1) |
|
|
44 | (1) |
|
|
44 | (1) |
Chapter 2 System architecture |
|
45 | (56) |
|
Requirements and design goals |
|
|
45 | (1) |
|
|
46 | (1) |
|
|
47 | (12) |
|
|
50 | (1) |
|
Symmetric multiprocessing |
|
|
51 | (2) |
|
|
53 | (1) |
|
Differences between client and server versions |
|
|
54 | (3) |
|
|
57 | (2) |
|
Virtualization-based security architecture overview |
|
|
59 | (2) |
|
|
61 | (38) |
|
Environment subsystems and subsystem DLLs |
|
|
62 | (6) |
|
|
68 | (4) |
|
|
72 | (3) |
|
|
75 | (4) |
|
Hardware abstraction layer |
|
|
79 | (3) |
|
|
82 | (6) |
|
|
88 | (11) |
|
|
99 | (2) |
Chapter 3 Processes and jobs |
|
101 | (92) |
|
|
101 | (4) |
|
CreateProcess functions arguments |
|
|
102 | (1) |
|
Creating Windows modern processes |
|
|
103 | (1) |
|
Creating other kinds of processes |
|
|
104 | (1) |
|
|
105 | (8) |
|
|
113 | (7) |
|
Protected Process Light (PPL) |
|
|
115 | (4) |
|
|
119 | (1) |
|
Minimal and Pico processes |
|
|
120 | (3) |
|
|
120 | (1) |
|
|
121 | (2) |
|
Trustlets (secure processes) |
|
|
123 | (6) |
|
|
123 | (1) |
|
|
124 | (1) |
|
|
125 | (1) |
|
System built-in Trustlets |
|
|
125 | (1) |
|
|
126 | (1) |
|
Isolated user-mode services |
|
|
127 | (1) |
|
Trustlet-accessible system calls |
|
|
128 | (1) |
|
|
129 | (25) |
|
Stage 1: Converting and validating parameters and flags |
|
|
131 | (4) |
|
Stage 2: Opening the image to be executed |
|
|
135 | (3) |
|
Stage 3: Creating the Windows executive process object |
|
|
138 | (6) |
|
Stage 4: Creating the initial thread and its stack and context |
|
|
144 | (2) |
|
Stage 5: Performing Windows subsystem-specific initialization |
|
|
146 | (2) |
|
Stage 6: Starting execution of the initial thread |
|
|
148 | (1) |
|
Stage 7: Performing process initialization in the context of the new process |
|
|
148 | (6) |
|
|
154 | (1) |
|
|
155 | (21) |
|
Early process initialization |
|
|
157 | (3) |
|
DLL name resolution and redirection |
|
|
160 | (4) |
|
|
164 | (4) |
|
|
168 | (2) |
|
Post-import process initialization |
|
|
170 | (1) |
|
|
171 | (2) |
|
|
173 | (3) |
|
|
176 | (15) |
|
|
177 | (1) |
|
|
178 | (1) |
|
|
179 | (4) |
|
Windows containers (server silos) |
|
|
183 | (8) |
|
|
191 | (2) |
Chapter 4 Threads |
|
193 | (108) |
|
|
193 | (1) |
|
|
194 | (13) |
|
|
194 | (12) |
|
|
206 | (1) |
|
Examining thread activity |
|
|
207 | (7) |
|
Limitations on protected process threads |
|
|
212 | (2) |
|
|
214 | (73) |
|
Overview of Windows scheduling |
|
|
214 | (1) |
|
|
215 | (8) |
|
|
223 | (5) |
|
|
228 | (3) |
|
|
231 | (7) |
|
|
238 | (17) |
|
|
255 | (1) |
|
|
256 | (4) |
|
|
260 | (4) |
|
|
264 | (1) |
|
|
264 | (2) |
|
|
266 | (2) |
|
|
268 | (15) |
|
Thread selection on multiprocessor systems |
|
|
283 | (1) |
|
|
284 | (2) |
|
Heterogeneous scheduling (big.LITTLE) |
|
|
286 | (1) |
|
|
287 | (10) |
|
Dynamic fair share scheduling |
|
|
289 | (3) |
|
|
292 | (3) |
|
Dynamic processor addition and replacement |
|
|
295 | (2) |
|
Worker factories (thread pools) |
|
|
297 | (3) |
|
|
298 | (2) |
|
|
300 | (1) |
Chapter 5 Memory management |
|
301 | (182) |
|
Introduction to the memory manager |
|
|
301 | (8) |
|
Memory manager components |
|
|
302 | (1) |
|
|
303 | (2) |
|
|
305 | (3) |
|
|
308 | (1) |
|
Services provided by the memory manager |
|
|
309 | (15) |
|
Page states and memory allocations |
|
|
310 | (3) |
|
Commit charge and commit limit |
|
|
313 | (1) |
|
|
314 | (1) |
|
|
314 | (1) |
|
Shared memory and mapped files |
|
|
315 | (2) |
|
|
317 | (2) |
|
Data Execution Prevention |
|
|
319 | (2) |
|
|
321 | (2) |
|
Address Windowing Extensions |
|
|
323 | (1) |
|
Kernel-mode heaps (system memory pools) |
|
|
324 | (8) |
|
|
325 | (2) |
|
|
327 | (4) |
|
|
331 | (1) |
|
|
332 | (16) |
|
|
333 | (1) |
|
|
334 | (1) |
|
|
334 | (1) |
|
|
334 | (1) |
|
The low-fragmentation heap |
|
|
335 | (1) |
|
|
336 | (5) |
|
|
341 | (1) |
|
|
342 | (1) |
|
|
343 | (4) |
|
|
347 | (1) |
|
Virtual address space layouts |
|
|
348 | (23) |
|
x86 address space layouts |
|
|
349 | (3) |
|
x86 system address space layout |
|
|
352 | (1) |
|
|
353 | (2) |
|
System page table entries |
|
|
355 | (1) |
|
|
356 | (1) |
|
64-bit address space layout |
|
|
357 | (2) |
|
x64 virtual addressing limitations |
|
|
359 | (1) |
|
Dynamic system virtual address space management |
|
|
359 | (5) |
|
System virtual address space quotas |
|
|
364 | (1) |
|
User address space layout |
|
|
365 | (6) |
|
|
371 | (12) |
|
x86 virtual address translation |
|
|
371 | (6) |
|
Translation look-aside buffer |
|
|
377 | (3) |
|
x64 virtual address translation |
|
|
380 | (1) |
|
ARM virtual address translation |
|
|
381 | (2) |
|
|
383 | (15) |
|
|
384 | (1) |
|
|
385 | (1) |
|
|
386 | (1) |
|
|
387 | (1) |
|
|
387 | (2) |
|
|
389 | (5) |
|
Commit charge and the system commit limit |
|
|
394 | (3) |
|
Commit charge and page file size |
|
|
397 | (1) |
|
|
398 | (3) |
|
|
399 | (1) |
|
|
400 | (1) |
|
|
401 | (1) |
|
Virtual address descriptors |
|
|
401 | (3) |
|
|
402 | (1) |
|
|
403 | (1) |
|
|
404 | (1) |
|
|
405 | (7) |
|
|
412 | (13) |
|
|
413 | (1) |
|
Logical prefetcher and ReadyBoot |
|
|
413 | (3) |
|
|
416 | (1) |
|
|
417 | (4) |
|
Balance set manager and swapper |
|
|
421 | (1) |
|
|
422 | (1) |
|
Memory notification events |
|
|
423 | (2) |
|
Page frame number database |
|
|
425 | (21) |
|
|
428 | (8) |
|
|
436 | (2) |
|
Modified page writer and mapped page writer |
|
|
438 | (2) |
|
|
440 | (3) |
|
|
443 | (3) |
|
|
446 | (3) |
|
Windows client memory limits |
|
|
447 | (2) |
|
|
449 | (7) |
|
|
450 | (3) |
|
|
453 | (3) |
|
|
456 | (3) |
|
|
459 | (8) |
|
|
460 | (1) |
|
|
461 | (1) |
|
|
462 | (1) |
|
From private to shared PTE |
|
|
462 | (2) |
|
|
464 | (3) |
|
|
467 | (5) |
|
|
468 | (1) |
|
Memory enclave initializations |
|
|
469 | (1) |
|
|
469 | (2) |
|
Loading data into an enclave |
|
|
471 | (1) |
|
|
472 | (1) |
|
Proactive memory management (SuperFetch) |
|
|
472 | (10) |
|
|
473 | (1) |
|
|
474 | (1) |
|
|
475 | (1) |
|
Page priority and rebalancing |
|
|
476 | (2) |
|
|
478 | (1) |
|
|
479 | (1) |
|
|
480 | (1) |
|
|
480 | (2) |
|
|
482 | (1) |
Chapter 6 I/O system |
|
483 | (122) |
|
|
483 | (5) |
|
|
485 | (1) |
|
|
486 | (2) |
|
Interrupt Request Levels and Deferred Procedure Calls |
|
|
488 | (4) |
|
|
488 | (2) |
|
|
490 | (2) |
|
|
492 | (18) |
|
|
492 | (6) |
|
|
498 | (2) |
|
Driver objects and device objects |
|
|
500 | (7) |
|
|
507 | (3) |
|
|
510 | (42) |
|
|
511 | (2) |
|
|
513 | (12) |
|
I/O request to a single-layered hardware-based driver |
|
|
525 | (8) |
|
I/O requests to layered drivers |
|
|
533 | (3) |
|
|
536 | (1) |
|
|
537 | (4) |
|
|
541 | (5) |
|
|
546 | (6) |
|
|
552 | (1) |
|
|
552 | (7) |
|
I/O-related verification options |
|
|
554 | (1) |
|
Memory-related verification options |
|
|
555 | (4) |
|
The Plug and Play manager |
|
|
559 | (16) |
|
Level of Plug and Play support |
|
|
560 | (1) |
|
|
561 | (2) |
|
|
563 | (6) |
|
Driver support for Plug and Play |
|
|
569 | (2) |
|
Plug-and-play driver installation |
|
|
571 | (4) |
|
General driver loading and installation |
|
|
575 | (3) |
|
|
575 | (2) |
|
|
577 | (1) |
|
The Windows Driver Foundation |
|
|
578 | (12) |
|
Kernel-Mode Driver Framework |
|
|
579 | (8) |
|
User-Mode Driver Framework |
|
|
587 | (3) |
|
|
590 | (13) |
|
Connected Standby and Modern Standby |
|
|
594 | (1) |
|
|
595 | (1) |
|
|
596 | (3) |
|
Driver and application control of device power |
|
|
599 | (1) |
|
Power management framework |
|
|
600 | (2) |
|
Power availability requests |
|
|
602 | (1) |
|
|
603 | (2) |
Chapter 7 Security |
|
605 | (166) |
|
|
605 | (3) |
|
Trusted Computer System Evaluation Criteria |
|
|
605 | (2) |
|
|
607 | (1) |
|
Security system components |
|
|
608 | (3) |
|
Virtualization-based security |
|
|
611 | (8) |
|
|
612 | (5) |
|
|
617 | (2) |
|
|
619 | (47) |
|
|
621 | (4) |
|
|
625 | (21) |
|
|
646 | (4) |
|
Security descriptors and access control |
|
|
650 | (16) |
|
|
666 | (1) |
|
|
666 | (2) |
|
|
667 | (1) |
|
Account rights and privileges |
|
|
668 | (9) |
|
|
669 | (1) |
|
|
670 | (5) |
|
|
675 | (2) |
|
Access tokens of processes and threads |
|
|
677 | (1) |
|
|
677 | (7) |
|
|
679 | (3) |
|
|
682 | (1) |
|
Advanced Audit Policy settings |
|
|
683 | (1) |
|
|
684 | (26) |
|
|
685 | (2) |
|
|
687 | (23) |
|
|
710 | (12) |
|
|
711 | (2) |
|
|
713 | (5) |
|
|
718 | (1) |
|
Windows Biometric Framework |
|
|
719 | (2) |
|
|
721 | (1) |
|
User Account Control and virtualization |
|
|
722 | (13) |
|
File system and registry virtualization |
|
|
722 | (7) |
|
|
729 | (6) |
|
|
735 | (21) |
|
Process-mitigation policies |
|
|
735 | (5) |
|
|
740 | (12) |
|
|
752 | (4) |
|
Application Identification |
|
|
756 | (1) |
|
|
757 | (5) |
|
Software Restriction Policies |
|
|
762 | (2) |
|
|
764 | (1) |
|
|
765 | (3) |
|
|
768 | (2) |
|
|
770 | (1) |
Index |
|
771 | |