第9章 对象和注册表通知
第9章 对象和注册表通知覆盖17个正式目录坐标,用版本/IRQL合同、可执行对象探针与安全门交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录
学习目标
- 把对象通知、进程保护、注册表前后通知、性能与用户态客户落实为Windows build、驱动模型、内核对象、执行上下文、调用链与恢复条件
- 只注入“把保护示例扩展为任意内核能力、忽略访问控制、注册句柄泄漏或前后回调错配”,定位第9章 对象和注册表通知相对签名参考驱动的首个分岔
- 交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录,明确区分中文版一版、作者二版迁移轨与目标Microsoft平台轨
为什么从这个问题开始
第9章 对象和注册表通知围绕“对象与注册表前后回调怎样限制访问、关联上下文并在卸载前可靠注销?”建立贯穿任务。先冻结出版轨、目标build、驱动包和对象身份,再以小输入观察状态与调用链,最后用唯一故障和同输入恢复验收;只有守住“只收窄声明的访问且每个注册句柄、上下文和回调引用都反向释放”并交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录,目录术语、DDI名字或一次成功加载才可能升级为机制证据。
来源合同、版本差异与安全边界
第9章 对象和注册表通知以作者一版Leanpub完整公开目录核对Pavel Yosifovich《Windows Kernel Programming》2020-12-10版本、455页和11章结构;中文版采用李亮译《Windows内核编程》,机械工业出版社2021年版,ISBN 9787111684756。中文版治理清单是11章185个正式坐标,章根已计入;作者一版公开目录按同口径是204个坐标,两者相差19项。
官方18页样章开放一版身份、第一章目录以及进程、虚拟内存、线程和系统调用的局部正文,因此本站来源访问级别是authorized-sample。样章不授权其余正文、代码、图表或练习;第9章 对象和注册表通知是中文独立教学重构,不复制未开放内容。
第9章 对象和注册表通知登记的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。它们可能来自译本底稿、修订时点或目录裁剪;没有出版社正文证据就保持“来源差异”,不补成中文版坐标,也不把作者页面的后续更新倒写给译者。
第9章 对象和注册表通知把三条轨道分开:中文版/作者一版解释成书范围;作者二版及MIT示例仓库只做迁移参考;当前平台轨以Microsoft Learn和目标系统公开DDI核对。第9章 对象和注册表通知的实验必须记录完整Windows build、架构、SDK、WDK、Visual Studio、驱动模型、签名、VBS/HVCI、驱动包摘要和符号,不能只写Windows 11或latest。
第9章 对象和注册表通知涉及内核代码、驱动部署、回调、用户缓冲区、Minifilter、Verifier和故障调试。第9章 对象和注册表通知页面只给实验协议;执行仅允许在可丢弃VM或专用测试机,并预备快照、备份、宿主内核调试、崩溃转储、超时、恢复启动和Verifier reset。生产设备、日常主机和无法承受蓝屏或数据损坏的对象不在实验范围内。
本页独立事实来源
- 作者一版Leanpub页面与完整公开目录:第9章 对象和注册表通知用它核对Pavel Yosifovich、2020-12-10版本、455页、11章公开目录与软件内核驱动范围。
- 作者一版Leanpub官方18页授权样章:第9章 对象和注册表通知用它局部核对一版身份、第一章目录及进程、虚拟内存、线程和系统调用开放正文;不扩大整书授权。
- 作者二版Leanpub页面与完整公开目录:第9章 对象和注册表通知用它建立二版迁移轨,识别新增章节和接口;不把二版倒写成2021年中文版。
- 作者二版MIT示例仓库:第9章 对象和注册表通知用它核对当前作者示例的章节归属、提交与许可;仓库只对应二版。
- Microsoft ObRegisterCallbacks DDI:第9章 对象和注册表通知用它核对注册句柄、前后回调与卸载前注销合同。
- Microsoft ObCallback官方示例:第9章 对象和注册表通知用它核对进程通知与对象回调的受支持示例边界。
- Microsoft驱动安全清单:第9章 对象和注册表通知用它核对内核必要性、最小权限、WDF、HVCI、测试、签名和发布门。
- Microsoft Windows内核DDI参考:第9章 对象和注册表通知用它核对目标build公开DDI、对象、IRP和例程合同。
正式目录坐标逐项解释
第9章 对象和注册表通知
坐标 1/17:第9章 对象和注册表通知。稳定证据键 WKP2-C09-A。 第9章 对象和注册表通知把第9章 对象和注册表通知映射到“对象通知、进程保护、注册表前后通知、性能与用户态客户”中的对象身份、所有者、引用、IRQL和调用线程。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
9.1 对象通知
坐标 2/17:9·1 对象通知。稳定证据键 WKP2-C09-B。 第9章 对象和注册表通知为9·1 对象通知分别记录中文版一版对象、作者二版迁移和目标Microsoft DDI,形成显式版本差分。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
9.1.1 操作前回调
坐标 3/17:9·1·1 操作前回调。稳定证据键 WKP2-C09-C。 第9章 对象和注册表通知对9·1·1 操作前回调预注册输入、唯一控制与首个WinDbg/ETW/状态信号,不以最终蓝屏或成功加载替代调用链。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
9.1.2 操作后回调
坐标 4/17:9·1·2 操作后回调。稳定证据键 WKP2-C09-D。 第9章 对象和注册表通知用9·1·2 操作后回调构造可撤销反例,安全卸载或恢复快照后以同驱动包和输入重新验收“只收窄声明的访问且每个注册句柄、上下文和回调引用都反向释放”。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
9.2 进程保护驱动程序
坐标 5/17:9·2 进程保护驱动程序。稳定证据键 WKP2-C09-E。 第9章 对象和注册表通知把9·2 进程保护驱动程序映射到“对象通知、进程保护、注册表前后通知、性能与用户态客户”中的对象身份、所有者、引用、IRQL和调用线程。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
9.2.1 对象通知注册
坐标 6/17:9·2·1 对象通知注册。稳定证据键 WKP2-C09-F。 第9章 对象和注册表通知为9·2·1 对象通知注册分别记录中文版一版对象、作者二版迁移和目标Microsoft DDI,形成显式版本差分。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
9.2.2 管理受保护的进程
坐标 7/17:9·2·2 管理受保护的进程。稳定证据键 WKP2-C09-G。 第9章 对象和注册表通知对9·2·2 管理受保护的进程预注册输入、唯一控制与首个WinDbg/ETW/状态信号,不以最终蓝屏或成功加载替代调用链。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
9.2.3 操作前回调
坐标 8/17:9·2·3 操作前回调。稳定证据键 WKP2-C09-H。 第9章 对象和注册表通知用9·2·3 操作前回调构造可撤销反例,安全卸载或恢复快照后以同驱动包和输入重新验收“只收窄声明的访问且每个注册句柄、上下文和回调引用都反向释放”。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
9.2.4 客户应用
坐标 9/17:9·2·4 客户应用。稳定证据键 WKP2-C09-I。 第9章 对象和注册表通知把9·2·4 客户应用映射到“对象通知、进程保护、注册表前后通知、性能与用户态客户”中的对象身份、所有者、引用、IRQL和调用线程。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
9.3 注册表通知
坐标 10/17:9·3 注册表通知。稳定证据键 WKP2-C09-J。 第9章 对象和注册表通知为9·3 注册表通知分别记录中文版一版对象、作者二版迁移和目标Microsoft DDI,形成显式版本差分。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
9.3.1 处理操作前通知
坐标 11/17:9·3·1 处理操作前通知。稳定证据键 WKP2-C09-K。 第9章 对象和注册表通知对9·3·1 处理操作前通知预注册输入、唯一控制与首个WinDbg/ETW/状态信号,不以最终蓝屏或成功加载替代调用链。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
9.3.2 处理操作后回调
坐标 12/17:9·3·2 处理操作后回调。稳定证据键 WKP2-C09-L。 第9章 对象和注册表通知用9·3·2 处理操作后回调构造可撤销反例,安全卸载或恢复快照后以同驱动包和输入重新验收“只收窄声明的访问且每个注册句柄、上下文和回调引用都反向释放”。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
9.3.3 性能考虑
坐标 13/17:9·3·3 性能考虑。稳定证据键 WKP2-C09-M。 第9章 对象和注册表通知把9·3·3 性能考虑映射到“对象通知、进程保护、注册表前后通知、性能与用户态客户”中的对象身份、所有者、引用、IRQL和调用线程。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
9.4 实现注册表通知
坐标 14/17:9·4 实现注册表通知。稳定证据键 WKP2-C09-N。 第9章 对象和注册表通知为9·4 实现注册表通知分别记录中文版一版对象、作者二版迁移和目标Microsoft DDI,形成显式版本差分。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
9.4.1 处理注册表回调
坐标 15/17:9·4·1 处理注册表回调。稳定证据键 WKP2-C09-O。 第9章 对象和注册表通知对9·4·1 处理注册表回调预注册输入、唯一控制与首个WinDbg/ETW/状态信号,不以最终蓝屏或成功加载替代调用链。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
9.4.2 修改后的客户代码
坐标 16/17:9·4·2 修改后的客户代码。稳定证据键 WKP2-C09-P。 第9章 对象和注册表通知用9·4·2 修改后的客户代码构造可撤销反例,安全卸载或恢复快照后以同驱动包和输入重新验收“只收窄声明的访问且每个注册句柄、上下文和回调引用都反向释放”。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
9.6 总结
坐标 17/17:9·6 总结。稳定证据键 WKP2-C09-Q。 第9章 对象和注册表通知把9·6 总结映射到“对象通知、进程保护、注册表前后通知、性能与用户态客户”中的对象身份、所有者、引用、IRQL和调用线程。 第9章 对象和注册表通知必须交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录中的对应记录;目录标题限定范围,授权样章只支持开放页,Microsoft文档支持当前平台,三者都不能替代目标build的运行证据。
三个可操作证据视图
第9章 对象和注册表通知先选择正式坐标、版本轨和执行上下文,再调整小输入复算对象数量、队列或缓冲边界,最后逐阶段切换参考、单故障与恢复。每个视图都保留重置,不生成驱动成熟度、风险或性能综合分。
版本合同:选择坐标、出版轨与IRQL
版本—驱动模型—执行上下文合同
第9章 对象和注册表通知
先选正式坐标,再分开一版、二版与目标平台,并冻结真实IRQL边界。
坐标 1/17
第9章 对象和注册表通知
- 版本身份
- 中文版以2021年机械工业出版社版为范围;作者一版页面与18页授权样章只支持目录、版本及开放页核对。
- 来源与迁移边界
- 中文版185坐标与作者一版公开目录204坐标存在19项差异;差异项只能标注,不得冒充中文版缺失正文。
- PASSIVE_LEVEL
- 记录调用线程、进程上下文、可分页性、等待、用户缓冲区捕获、锁和卸载状态;不能仅凭例程名推断上下文。
第9章 对象和注册表通知的探针真正计算对象/句柄、构建矩阵、池载荷、IOCTL请求、转储二分提示、DPC预算、IRP栈位置、通知队列、回调关联、Minifilter消息或Verifier请求。公式公开且只用于小模型;真实延迟、内存、安全和并发结论必须来自目标build、驱动包、测试机与捕获。
最小可重现实验协议
- 第9章 对象和注册表通知先冻结Windows产品与完整build、架构、SDK、WDK、Visual Studio、驱动模型、SYS/INF/CAT摘要、签名、VBS/HVCI、符号、VM快照、输入和预期结果。
- 第9章 对象和注册表通知只在可丢弃VM或专用测试机运行签名参考驱动,保存操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录;基线不稳、符号不匹配、对象身份不明或调试宿主不可用时停止。
- 第9章 对象和注册表通知保持其余条件不变,只注入“把保护示例扩展为任意内核能力、忽略访问控制、注册句柄泄漏或前后回调错配”,记录首个对象状态、NTSTATUS、IRQL、线程、CPU、时间、调用链、竞争性解释和停止条件。
- 第9章 对象和注册表通知停止新请求与回调,反向排空IRP、队列、端口、实例、引用和设备,必要时执行Verifier reset或恢复快照;以同输入重放,无法恢复“只收窄声明的访问且每个注册句柄、上下文和回调引用都反向释放”则标记失败或未知。
小结与上架门
第9章 对象和注册表通知把对象通知、进程保护、注册表前后通知、性能与用户态客户连接成可复核链:中文版目录给185正式坐标,作者一版页面暴露19项目录差异,18页样章限定局部授权,二版与MIT仓库只支持迁移,当前Microsoft文档和目标DDI限定实际合同。版本/IRQL合同、透明对象探针、唯一故障首错、反向卸载和同输入恢复共同决定能否上架。最终交付操作类/访问掩码矩阵、前后关联键、注册表通知轨迹与注销记录并同时报告未测build、未开放正文和安全边界。
练习与答案
练习
问题 1:9.1 对象通知
为第9章 对象和注册表通知的 WKP2-C09-B 设计一个中文版一版/作者二版/目标平台差分、签名参考基线、唯一故障、首个对象或调用链信号和恢复断言,并说明9·1 对象通知的IRQL或用户边界。
问题 2:9.1.1 操作前回调
为第9章 对象和注册表通知的 WKP2-C09-C 设计一个中文版一版/作者二版/目标平台差分、签名参考基线、唯一故障、首个对象或调用链信号和恢复断言,并说明9·1·1 操作前回调的IRQL或用户边界。
问题 3:9.1.2 操作后回调
为第9章 对象和注册表通知的 WKP2-C09-D 设计一个中文版一版/作者二版/目标平台差分、签名参考基线、唯一故障、首个对象或调用链信号和恢复断言,并说明9·1·2 操作后回调的IRQL或用户边界。
问题 4:9.2 进程保护驱动程序
为第9章 对象和注册表通知的 WKP2-C09-E 设计一个中文版一版/作者二版/目标平台差分、签名参考基线、唯一故障、首个对象或调用链信号和恢复断言,并说明9·2 进程保护驱动程序的IRQL或用户边界。
问题 5:9.2.1 对象通知注册
为第9章 对象和注册表通知的 WKP2-C09-F 设计一个中文版一版/作者二版/目标平台差分、签名参考基线、唯一故障、首个对象或调用链信号和恢复断言,并说明9·2·1 对象通知注册的IRQL或用户边界。
问题 6:9.2.2 管理受保护的进程
为第9章 对象和注册表通知的 WKP2-C09-G 设计一个中文版一版/作者二版/目标平台差分、签名参考基线、唯一故障、首个对象或调用链信号和恢复断言,并说明9·2·2 管理受保护的进程的IRQL或用户边界。
问题 7:9.2.3 操作前回调
为第9章 对象和注册表通知的 WKP2-C09-H 设计一个中文版一版/作者二版/目标平台差分、签名参考基线、唯一故障、首个对象或调用链信号和恢复断言,并说明9·2·3 操作前回调的IRQL或用户边界。
问题 8:9.2.4 客户应用
为第9章 对象和注册表通知的 WKP2-C09-I 设计一个中文版一版/作者二版/目标平台差分、签名参考基线、唯一故障、首个对象或调用链信号和恢复断言,并说明9·2·4 客户应用的IRQL或用户边界。
问题 9:9.3 注册表通知
为第9章 对象和注册表通知的 WKP2-C09-J 设计一个中文版一版/作者二版/目标平台差分、签名参考基线、唯一故障、首个对象或调用链信号和恢复断言,并说明9·3 注册表通知的IRQL或用户边界。
问题 10:9.3.1 处理操作前通知
为第9章 对象和注册表通知的 WKP2-C09-K 设计一个中文版一版/作者二版/目标平台差分、签名参考基线、唯一故障、首个对象或调用链信号和恢复断言,并说明9·3·1 处理操作前通知的IRQL或用户边界。
问题 11:9.3.2 处理操作后回调
为第9章 对象和注册表通知的 WKP2-C09-L 设计一个中文版一版/作者二版/目标平台差分、签名参考基线、唯一故障、首个对象或调用链信号和恢复断言,并说明9·3·2 处理操作后回调的IRQL或用户边界。
问题 12:9.3.3 性能考虑
为第9章 对象和注册表通知的 WKP2-C09-M 设计一个中文版一版/作者二版/目标平台差分、签名参考基线、唯一故障、首个对象或调用链信号和恢复断言,并说明9·3·3 性能考虑的IRQL或用户边界。
问题 13:9.4 实现注册表通知
为第9章 对象和注册表通知的 WKP2-C09-N 设计一个中文版一版/作者二版/目标平台差分、签名参考基线、唯一故障、首个对象或调用链信号和恢复断言,并说明9·4 实现注册表通知的IRQL或用户边界。
问题 14:9.4.1 处理注册表回调
为第9章 对象和注册表通知的 WKP2-C09-O 设计一个中文版一版/作者二版/目标平台差分、签名参考基线、唯一故障、首个对象或调用链信号和恢复断言,并说明9·4·1 处理注册表回调的IRQL或用户边界。
问题 15:9.4.2 修改后的客户代码
为第9章 对象和注册表通知的 WKP2-C09-P 设计一个中文版一版/作者二版/目标平台差分、签名参考基线、唯一故障、首个对象或调用链信号和恢复断言,并说明9·4·2 修改后的客户代码的IRQL或用户边界。
问题 16:9.6 总结
为第9章 对象和注册表通知的 WKP2-C09-Q 设计一个中文版一版/作者二版/目标平台差分、签名参考基线、唯一故障、首个对象或调用链信号和恢复断言,并说明9·6 总结的IRQL或用户边界。
问题 17:为什么中文版185坐标不能静默扩成作者目录204坐标
第9章 对象和注册表通知应怎样处理19项来源差异、18页样章和作者二版?
问题 18:什么时候必须停止内核实验
第9章 对象和注册表通知缺少哪些条件时不能继续?
六个裁决术语
第9章 对象和注册表通知使用↡第9章 对象和注册表通知的Windows完整build、架构、SDK、WDK、工具链、驱动包、签名与安全状态、↡第9章 对象和注册表通知对象所处的线程/进程、IRQL、可分页性、等待、锁与用户缓冲区边界、↡第9章 对象和注册表通知中Driver、Device、File、IRP、callback、filter、instance或context的所有权关系、↡第9章 对象和注册表通知单故障轨迹相对签名参考驱动最早出现状态、NTSTATUS或调用链差异的位置、↡第9章 对象和注册表通知把中文版185坐标、作者一版204坐标、二版与目标平台分开的显式记录、↡第9章 对象和注册表通知反向清理或恢复快照后用原驱动包与输入恢复对象、引用、队列和信号的断言构成最小证据语言;这些术语指向真实build、对象、IRQL、调用链与恢复,不生成成熟度、风险或性能综合分。
名词解释
本章出现的专业名词,用大白话再讲一遍。
- 目标身份
第9章 对象和注册表通知的Windows完整build、架构、SDK、WDK、工具链、驱动包、签名与安全状态。
- 执行上下文
第9章 对象和注册表通知对象所处的线程/进程、IRQL、可分页性、等待、锁与用户缓冲区边界。
- 驱动对象链
第9章 对象和注册表通知中Driver、Device、File、IRP、callback、filter、instance或context的所有权关系。
- 首个分岔
第9章 对象和注册表通知单故障轨迹相对签名参考驱动最早出现状态、NTSTATUS或调用链差异的位置。
- 出版轨差异
第9章 对象和注册表通知把中文版185坐标、作者一版204坐标、二版与目标平台分开的显式记录。
- 同输入恢复
第9章 对象和注册表通知反向清理或恢复快照后用原驱动包与输入恢复对象、引用、队列和信号的断言。