图书介绍

Windows内核设计思想pdf电子书版本下载

Windows内核设计思想
  • 陈树宝著 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121253140
  • 出版时间:2015
  • 标注页数:615页
  • 文件大小:76MB
  • 文件页数:638页
  • 主题词:Windows操作系统-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
下载压缩包 [复制下载地址] 温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页

下载说明

Windows内核设计思想PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如 BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 搭建开发和调试环境 1

1.1 编译环境 1

1.2 使用Bochs运行ntos.img 2

1.3 使用V Mware运行ntos.vmdk 3

1.4 模拟调试运行 6

1.5 编程思想(等差数列求和) 8

1.6 函数调用约定 14

1.7 模块扩展约定 15

1.8 本章总结 15

第2章 Windows内核加载器(SU) 16

2.1 主引导记录(MBR) 18

2.2 系统分区(Partition1) 25

2.3 SU模块(startup.com) 28

2.3.1 原版Windows Server 2003系统NTLDR startup.com基本分析 28

2.3.2 根据原理重新构建新的startup.com 30

2.4 检测物理内存 32

2.5 开启A20地址线 40

2.6 重新定位GDT和IDT 42

2.7 保护模式 43

2.7.1 段描述符(Segment Descriptor) 43

2.7.2 特权级(privilege level) 48

2.7.3 段描述符表(segment descriptor table) 50

2.7.4 开启保护模式 51

2.8 加载Loader模块 53

2.9 转移控制权 59

2.10 导出函数 59

2.10.1 读写扇区 62

2.10.2 获取物理内存块 63

2.10.3 检测硬件 64

2.11 本章总结 64

第3章 Windows内核调试设计 66

3.1 初始化调试系统 67

3.2 初始化模拟调试 74

3.3 初始化内核调试 76

3.3.1 中断和异常向量表 76

3.3.2 注册异常处理例程 79

3.3.3 基于栈框架的异常处理程序 82

3.3.4 除零错误(#DE) 85

3.3.5 单步异常(#DB) 90

3.3.6 断点异常(#BP) 91

3.3.7 一般保护性错误(#GP) 91

3.3.8 页面错误(#PF) 92

3.3.9 调试器服务(debugger service) 93

3.4 分发异常 94

3.5 内核调试分发 102

3.5.1 打印字符串 106

3.5.2 加载/卸载符号 109

3.5.3 报告异常 115

3.6 内核调试引擎核心 118

3.6.1 获取系统版本 125

3.6.2 获取/设置机器信息 126

3.6.3 读/写虚拟内存 126

3.6.4 设置/恢复断点 130

3.7 调试通信协议 136

3.7.1 串行端口 136

3.7.2 COM寄存器 138

3.7.3 波特率 139

3.7.4 端口初始化 140

3.7.5 通信协议 142

3.7.6 读端口 142

3.7.7 写端口 146

3.7.8 调试包 147

3.7.9 接收调试包(KdReceivePacket) 150

3.7.10 发送调试包(KdSendPacket) 157

3.8 本章总结 160

第4章 Windows内核加载器(Loader) 161

4.1 NtProcessStartup 162

4.2 PcMachInit 165

4.3 初始化内存管理器 166

4.3.1 内存描述符表 167

4.3.2 页面查找表 175

4.3.3 初始化堆 182

4.4 分页机制 195

4.4.1 页帧号(PFN) 195

4.4.2 页目录和页表 197

4.4.3 开启分页机制 198

4.4.4 虚拟地址转译物理地址 208

4.4.5 修改页目录和页表位置 210

4.5 Loader读/写支持 211

4.5.1 ARC接口标准 211

4.5.2 虚拟磁盘驱动(RamDisk) 219

4.5.3 磁盘驱动(Hwdisk) 220

4.5.4 文件系统驱动(Ldfs) 226

4.6 加载器参数块 232

4.7 加载和启动内核 233

4.7.1 收集硬件信息 238

4.7.2 本地语言支持(NLS) 239

4.7.3 加载模块 240

4.7.4 内存描述符链表 244

4.7.5 处理器控制域(PCR)和任务状态段(TSS) 246

4.8 本章总结 251

第5章 结构化异常处理 252

5.1 异常触发 254

5.2 分发异常(RtlDispatchException) 257

5.3 异常处理(_except_handler3) 262

5.4 全局展开(_global_unwind2) 266

5.5 局部展开(_local_unwind2) 272

5.6 冒泡排序(BubbleSort) 274

5.7 本章总结 275

第6章 内存管理 276

6.1 物理内存管理概述 276

6.2 虚拟地址空间布局 277

6.3 初始化内存系统(MmArmInitSystem) 278

6.4 初始化机器相关(MiInitMachineDependent) 296

6.5 初始化非分页池(MiInitializeNonPagedPool) 305

6.6 初始化系统PTE(MiInitializeSystemPtes) 309

6.7 映射页帧数据库(MiMapPfnDatabase) 310

6.8 初始化颜色表(MiInitializeColorTables) 313

6.9 初始化页帧号数据库(MiInitializePfnDatabase) 315

6.9.1 从页面建立页帧号数据库(MiBuildPfnDatabaseFromPages) 319

6.9.2 从加载块物理内存链表建立页帧号数据库(MiBuildPfnDatabaseFromLoad-erBlock) 323

6.10 初始化池(InitializePool) 330

6.11 分配池页面(MiAllocatePoolPages) 335

6.11.1 非分页池分配 342

6.11.2 分页池分配 343

6.11.3 分页池页面错误处理 344

6.12 释放池页(MiFreePoolPages) 347

6.12.1 释放分页池 352

6.12.2 释放非分页池 353

6.13 建立分页池(MiBuildPagedPool) 354

6.14 分配池内存(ExAllocatePoolWithTag) 360

6.15 释放池内存(ExFreePoolWithTag) 371

6.16 初始化系统空间映射(MiInitializeSystemSpaceMap) 379

6.17 本章总结 381

第7章 对象管理 382

7.1 对象概述 382

7.1.1 对象整体结构 382

7.1.2 对象头(object header) 385

7.1.3 对象类型(object type) 386

7.1.4 对象类型例程模板(object type procedure template) 387

7.2 分配对象内存空间(ObpAllocateObject) 390

7.3 释放对象内存空间(ObpDeallocateObject) 397

7.4 初始化对象系统(ObInitSystem) 399

7.5 创建句柄表(ExCreateHandleTable) 406

7.6 创建对象类型(ObCreateObjectType) 410

7.7 创建目录对象(NtCreateDirectoryObject) 416

7.8 创建对象(ObCreateObject) 418

7.9 插入对象(ObInsertObject) 421

7.10 查找对象名(ObpLookupObjectName) 428

7.11 查找目录项(ObpLookupEntryDirectory) 445

7.12 创建无名句柄(ObpCreateUnnamedHandle) 448

7.13 分配句柄表项(ExpAllocateHandleTableEntry) 452

7.14 解析符号链接(ObpParseSymbolicLink) 465

7.15 Section和Segment 469

7.15.1 Prototype PTE页面异常处理 478

7.15.2 Section映射到系统进程 481

7.15.3 VAD页面错误处理 482

7.16 本章总结 483

第8章 I/O系统 485

8.1 初始化I/O系统(IoInitSystem) 486

8.2 创建驱动对象(IopCreateDriver) 497

8.3 创建设备对象(IoCreateDevice) 503

8.4 分配I/O请求包(IoAllocateIrp) 508

8.5 传递I/O请求包(IoCallDriver) 513

8.6 释放I/O请求包(IoFreeIrp) 514

8.7 解析设备(IopParseDevice) 515

8.8 磁盘读/写支持 525

8.9 本章总结 532

第9章 文件系统设计 533

9.1 文件系统初始化(DriverEntry) 533

9.2 挂载卷(NtfsMountVolume) 536

9.2.1 识别文件系统格式 540

9.2.2 文件控制块(FCB) 542

9.2.3 上下文控制块(CCB) 544

9.2.4 创建流文件对象(IoCreateStreamFileObject) 544

9.2.5 初始化缓存映射(CcInitializeCacheMap) 545

9.3 打开文件(NtfsOpenFile) 547

9.4 读文件(NtfsReadFile) 553

9.5 关闭文件(NtfsCloseFile) 555

9.6 发起卷挂载请求 561

9.7 加载NTDLL 564

9.7.1 打开NTDLL 564

9.7.2 检查NTDLL映像(MmCheckSystemImage) 565

9.7.3 创建NTDLL Section 569

9.7.4 映射NTDLL Section到当前进程空间 570

9.7.5 获取用户进入点 571

9.8 本章总结 573

第10章 进程和线程 574

10.1 进程和线程初始化 575

10.1.1 初始化进程 576

10.1.2 初始化线程 578

10.1.3 初始化线程上下文 580

10.1.4 初始化进程系统(PspInitPhase0) 584

10.2 线程优先级(priority) 590

10.3 线程状态(thread state) 591

10.4 线程调度(thread dispatch) 593

10.5 分配进程虚拟内存(NtAllocateVirtualMemory) 601

10.6 创建用户进程(smss.exe) 608

10.7 本章总结 608

附录A PE格式 609

精品推荐