《Windows内核编程》全书总复习

用控制设备、系统通知、进程保护、文件备份小过滤器和设备监视器串联全书11章与185个核心目录层级。 覆盖6个本页目录坐标。

学习目标

  • 把对象、构建、生命周期、调试、机制、IRP、通知、过滤、签名和发布安全落实为Windows build、驱动模型、内核对象、执行上下文、调用链与恢复条件
  • 只注入“跨子系统同时注错、混用驱动包或只保留最终蓝屏与一次成功重启”,定位本章相对签名参考驱动的首个分岔
  • 交付全书目标清单、跨章对象ID、逐故障轨迹、转储/符号与卸载回归报告,明确区分中文版一版、作者二版迁移轨与目标Microsoft平台轨

直觉起点

本章的核心问题是:从对象与构建到IRQL、IRP、通知、Minifilter、签名和恢复,怎样完成跨章驱动证据链?

、、、、共同构成本页坐标。用控制设备、系统通知、进程保护、文件备份小过滤器和设备监视器串联全书11章与185个核心目录层级。

内核编程必须同时画三张图:调用图说明用户请求、系统回调或I/O如何进入驱动;对象图说明DriverObject、DeviceObject、IRP、回调Cookie、上下文和池块由谁拥有;时间图说明注册、并发回调、注销、排空和卸载的先后。少一张图,表面可用的驱动也可能在压力或卸载时蓝屏。

来源合同与版本差异

本章以作者一版Leanpub完整公开目录核对Pavel Yosifovich《Windows Kernel Programming》2020-12-10版本、455页和11章结构;中文版采用李亮译《Windows内核编程》,机械工业出版社2021年版,ISBN 9787111684756。中文版治理清单是11章185个正式坐标,章根已计入;作者一版公开目录按同口径是204个坐标,两者相差19项。

官方18页样章开放一版身份、第一章目录以及进程、虚拟内存、线程和系统调用的局部正文,因此本站来源访问级别是authorized-sample。样章不授权其余正文、代码、图表或练习;本章是中文独立教学重构,不复制未开放内容。

本章登记的19项差异是:第1章:Thread Stacks;第2章:Exercises;第5章:Tutorial: User mode debugging basics;第6章:Using DPC with a Timer;第6章:Critical Regions and Guarded Regions;第6章:The Spin Lock;第7章:IRP Flow;第7章:Viewing IRP Information;第7章:Completing a Request;第8章:The User Mode Client;第8章:Exercises;第9章:Desktop Objects;第9章:Exercises;第10章:Pipes and Mailslots;第10章:Direct Access Volume (DAX or DAS);第10章:Context Types;第10章:Managing Contexts;第10章:Exercises;第11章:Example Driver Verifier Sessions。它们可能来自译本底稿、修订时点或目录裁剪;没有出版社正文证据就保持“来源差异”,不补成中文版坐标,也不把作者页面的后续更新倒写给译者。

本章把三条轨道分开:中文版/作者一版解释成书范围;作者二版MIT示例仓库只做迁移参考;当前平台轨以Microsoft Learn和目标系统公开DDI核对。本章的实验必须记录完整Windows build、架构、SDK、WDK、Visual Studio、驱动模型、签名、VBS/HVCI、驱动包摘要和符号,不能只写Windows 11或latest。

本章涉及内核代码、驱动部署、回调、用户缓冲区、Minifilter、Verifier和故障调试。本章页面只给实验协议;执行仅允许在可丢弃VM或专用测试机,并预备快照、备份、宿主内核调试、崩溃转储、超时、恢复启动和Verifier reset。生产设备、日常主机和无法承受蓝屏或数据损坏的对象不在实验范围内。

本页独立事实来源

常见误区与故障注入

本章注入的故障是:跨子系统同时注错、混用驱动包或只保留最终蓝屏与一次成功重启。在实验中,保持其余条件不变,只注入这个故障,记录首个分岔与竞争性解释。

四类样本与验收

样本注入方式必查证据通过条件
基线固定快照、sys/PDB和输入状态码、IRQL、对象与日志与预测一致
边界空缓冲、短输出、断开客户端长度、Information、引用不越界不泄漏
失败错IRQL、竞态、Verifier规则首错栈和责任层故障可定位
恢复清理或快照后同输入重放模块、服务、池、回调状态回到基线

本章验收不变量:唯一故障的首错可归因,撤销后所有回调、IRP、引用、端口、实例和设备恢复基线

本章必查证据:全书目标清单、跨章对象ID、逐故障轨迹、转储/符号与卸载回归报告

交互实验 — 全书证据链

以下三个视图分别冻结版本合同、调整执行探针并重放安全门。每个视图都保留重置,不生成驱动成熟度、风险或性能综合分。

分步1 / 3

版本合同:选择坐标、出版轨与IRQL

版本—驱动模型—执行上下文合同

《Windows内核编程》185坐标全书驱动证据总复习

先选正式坐标,再分开一版、二版与目标平台,并冻结真实IRQL边界。

坐标 1/185

第1章 Windows内部概览

版本身份
中文版以2021年机械工业出版社版为范围;作者一版页面与18页授权样章只支持目录、版本及开放页核对。
来源与迁移边界
中文版185坐标与作者一版公开目录204坐标存在19项差异;差异项只能标注,不得冒充中文版缺失正文。
PASSIVE_LEVEL
记录调用线程、进程上下文、可分页性、等待、用户缓冲区捕获、锁和卸载状态;不能仅凭例程名推断上下文。

练习

练习

问题 1:实验设计

请围绕以下问题设计一个可重现实验:从对象与构建到IRQL、IRP、通知、Minifilter、签名和恢复,怎样完成跨章驱动证据链?

问题 2:故障识别与避免

如果在实验中观察到“跨子系统同时注错、混用驱动包或只保留最终蓝屏与一次成功重启”,如何定位根因?如何避免?

问题 3:来源差异处理

中文版有185个目录坐标,作者一版有204个,两者相差19项。应如何处理这些差异?

问题 4:安全边界与停止条件

什么情况下必须停止内核实验?

小结

  • 隔离虚拟机:连接“恢复干净快照”的内核契约与证据。

  • IRP证据:连接“构建签名驱动”的内核契约与证据。

  • 通知回调:连接“运行控制设备”的内核契约与证据。

  • Minifilter:连接“验证系统通知”的内核契约与证据。

  • Verifier闭环:连接“运行过滤项目”的内核契约与证据。

  • 本页6个目录坐标全部进入实验链,不以泛化驱动主题替代原书内容。

  • 来源合同:中文版185坐标与作者一版204坐标的19项差异已登记,三条轨道分开,互不倒写。

术语表

名词解释

本章出现的专业名词,用大白话再讲一遍。

跨章对象ID

跨章对象ID是本章的入口概念。从对象与构建到IRQL、IRP、通知、Minifilter、签名和恢复,怎样完成跨章驱动证据链?从这个概念开始建立可调试关系。它必须绑定进程、build、架构与生命周期,并在全书目标清单、跨章对象ID、逐故障轨迹、转储/符号与卸载回归报告中留下可验证记录。

逐故障轨迹

逐故障轨迹在本章中用于构造可撤销反例。注入故障“跨子系统同时注错、混用驱动包或只保留最终蓝屏与一次成功重启”后,它的状态变化是首个分岔的关键信号,必须与签名参考基线对比。

卸载回归报告

卸载回归报告必须满足不变量“唯一故障的首错可归因,撤销后所有回调、IRP、引用、端口、实例和设备恢复基线”。在实验中,它的记录是验收通过的条件之一,不能以一次成功加载替代。

唯一故障

唯一故障连接本章的目录坐标与实验链。不以泛化驱动主题替代原书内容,每个坐标都进入可复核的故障注入与恢复验收。

讨论

评论区加载中…