Windows内核编程

Windows内核编程
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] (Pavel Yosifovich)
2021-06
版次: 1
ISBN: 9787111684756
定价: 119.00
装帧: 其他
开本: 16开
纸张: 胶版纸
字数: 143千字
  • 在Windows系统中没有什么比内核更强大了,但是如何编写内核驱动程序来利用这种强大能力呢?
      这本书为读者描述如何编写Windows系统的软件内核驱动程序。
      这些驱动程序不涉及硬件,而是处理系统本身:进程、线程、模块、注册表等等。内核代码可用于监视重要事件,防止在需要时发生某些事件。
      读者可以通过编写各种过滤器来拦截驱动程序中感兴趣的调用。 帕维尔·约西福维奇(Pavel Yosifovich)是著名的软件开发者、培训师、作者和演讲者。他热爱关于软件的一切,并且依然怀念他从前的Commodore 64电脑。可以通过zodiacon@live.com联系他。

    [译者简介]

    李亮 资深程序员,从事软件开发三十余年。从嵌入式系统到企业应用开发,从操作系统底层到 Web 前端技术均有涉足。喜欢钻研技术,对编写代码孜孜以求,也时常阅读和翻译相关技术书籍,追寻生活与工作之间的平衡。 译者序

    第1章 Windows内部概览1

    1.1 进程1

    1.2 虚拟内存2

    1.2.1 页状态4

    1.2.2 系统内存4

    1.3 线程5

    1.4 系统服务7

    1.5 系统总体架构8

    1.6 句柄和对象10

    1.6.1 对象名称11

    1.6.2 访问已经存在的对象13

    第2章 开始内核开发15

    2.1 安装工具15

    2.2 创建一个驱动程序项目16

    2.3 DriverEntry和Unload例程17

    2.4 部署驱动程序19

    2.5 简单的跟踪22

    2.6 练习24

    2.7 总结24

    第3章 内核编程基础25

    3.1 内核编程的一般准则25

    3.1.1 未处理的异常26

    3.1.2 终止26

    3.1.3 函数返回值26

    3.1.4 IRQL27

    3.1.5 C  用法27

    3.1.6 测试和调试28

    3.2 调试构建与发布构建28

    3.3 内核API29

    3.4 函数和错误代码30

    3.5 字符串30

    3.6 动态内存分配31

    3.7 链表33

    3.8 驱动程序对象35

    3.9 设备对象36

    3.10 总结38

    第4章 驱动程序:从头到尾39

    4.1 简介39

    4.2 驱动程序初始化40

    4.2.1 将信息传递给驱动程序41

    4.2.2 客户程序/驱动程序之间的通信协议42

    4.2.3 创建设备对象44

    4.3 客户程序代码46

    4.4 Create和Close分发例程47

    4.5 DeviceIoControl分发例程48

    4.6 安装与测试52

    4.7 总结54

    第5章 调试55

    5.1 Debugging Tools for Windows 55

    5.2 WinDbg简介56

    5.3 内核调试70

    5.3.1 本地内核调试70

    5.3.2 本地内核调试教程71

    5.4 完整内核调试77

    5.4.1 配置目标机78

    5.4.2 配置宿主机79

    5.5 内核驱动程序调试教程81

    5.6 总结83

    第6章 内核机制84

    6.1 中断请求级别84

    6.1.1 提升和降低IRQL86

    6.1.2 线程优先级与IRQL87

    6.2 延迟过程调用88

    6.3 异步过程调用90

    6.4 结构化异常处理91

    6.4.1 使用__try/__except93

    6.4.2 使用__try/__finally95

    6.4.3 使用C   RAII代替__try/__finally96

    6.5 系统崩溃98

    6.5.1 崩溃转储信息100

    6.5.2 分析转储文件103

    6.5.3 系统挂起105

    6.6 线程同步107

    6.6.1 互锁操作107

    6.6.2 分发器对象108

    6.6.3 互斥量110

    6.6.4 快速互斥量113

    6.6.5 信号量114

    6.6.6 事件114

    6.6.7 执行体资源115

    6.7 高IRQL同步116

    6.8 工作项目119

    6.9 总结120

    第7章 I/O请求包121

    7.1 IRP简介121

    7.2 设备节点122

    7.3 IRP和I/O栈位置126

    7.4 分发例程130

    7.5 访问用户缓冲区132

    7.5.1 缓冲I/O133

    7.5.2 直接I/O135

    7.5.3 IRP_MJ_DEVICE_CONTROL的用户缓冲区138

    7.6 汇总:Zero驱动程序139

    7.6.1 使用预编译头140

    7.6.2 DriverEntry例程142

    7.6.3 读分发例程143

    7.6.4 写分发例程144

    7.6.5 测试应用144

    7.7 总结145

    第8章 进程和线程通知146

    8.1 进程通知146

    8.2 实现进程通知149

    8.2.1 DriverEntry例程151

    8.2.2 处理进程退出通知152

    8.2.3 处理进程创建通知154

    8.3 将数据提供给用户模式156

    8.4 线程通知160

    8.5 映像载入通知163

    8.6 练习164

    8.7 总结165

    第9章 对象和注册表通知166

    9.1 对象通知166

    9.1.1 操作前回调168

    9.1.2 操作后回调170

    9.2 进程保护者驱动程序171

    9.2.1 对象通知注册172

    9.2.2 管理受保护的进程172

    9.2.3 操作前回调176

    9.2.4 客户应用177

    9.3 注册表通知180

    9.3.1 处理操作前通知181

    9.3.2 处理操作后回调181

    9.3.3 性能考虑182

    9.4 实现注册表通知182

    9.4.1 处理注册表回调183

    9.4.2 修改后的客户程序代码185

    9.5 练习187

    9.6 总结187

    第10章 文件系统小过滤驱动188

    10.1 简介188

    10.2 装入与卸载189

    10.3 初始化191

    10.3.1 操作回调注册194

    10.3.2 高度198

    10.4 安装200

    10.4.1 INF文件200

    10.4.2 安装驱动程序206

    10.5 处理I/O操作206

    10.5.1 操作前回调207

    10.5.2 操作后回调209

    10.6 删除保护驱动程序210

    10.6.1 处理创建前回调212

    10.6.2 处理设置信息前回调216

    10.6.3 重构218

    10.6.4 将驱动程序通用化221

    10.6.5 测试修改后的驱动程序225

    10.7 文件名227

    10.7.1 文件名的各个部分228

    10.7.2 RAII FLT_FILE_NAME_INFORMATION包装器231

    10.8 另一个删除保护驱动程序232

    10.8.1 处理创建前回调和设置信息前回调239

    10.8.2 测试驱动程序241

    10.9 上下文241

    10.10 初始化I/O请求244

    10.11 文件备份驱动程序246

    10.11.1 创建后回调248

    10.11.2 写前回调252

    10.11.3 清理后回调257

    10.11.4 测试驱动程序258

    10.11.5 恢复备份258

    10.12 用户模式通信260

    10.12.1 创建通信端口261

    10.12.2 用户模式连接262

    10.12.3 发送和接收消息263

    10.12.4 增强文件备份驱动程序264

    10.12.5 用户模式客户程序266

    10.13 调试268

    10.14 练习271

    10.15 总结271

    第11章 其他主题273

    11.1 驱动程序签名273

    11.2 驱动程序验证器276

    11.3 使用原生API282

    11.4 过滤驱动程序283

    11.4.1 过滤驱动程序的实现285

    11.4.2 附加过滤器286

    11.4.3 在任意时刻附加过滤器288

    11.4.4 过滤器的清理289

    11.4.5 基于硬件的过滤驱动程序的更多内容290

    11.5 设备监视器292

    11.5.1 增加过滤设备293

    11.5.2 移除过滤设备296

    11.5.3 初始化和卸载297

    11.5.4 处理请求298

    11.5.5 测试驱动程序301

    11.5.6 请求的结果305

    11.6 驱动程序挂钩307

    11.7 内核库309

    11.8 总结310
  • 内容简介:
    在Windows系统中没有什么比内核更强大了,但是如何编写内核驱动程序来利用这种强大能力呢?
      这本书为读者描述如何编写Windows系统的软件内核驱动程序。
      这些驱动程序不涉及硬件,而是处理系统本身:进程、线程、模块、注册表等等。内核代码可用于监视重要事件,防止在需要时发生某些事件。
      读者可以通过编写各种过滤器来拦截驱动程序中感兴趣的调用。
  • 作者简介:
    帕维尔·约西福维奇(Pavel Yosifovich)是著名的软件开发者、培训师、作者和演讲者。他热爱关于软件的一切,并且依然怀念他从前的Commodore 64电脑。可以通过zodiacon@live.com联系他。

    [译者简介]

    李亮 资深程序员,从事软件开发三十余年。从嵌入式系统到企业应用开发,从操作系统底层到 Web 前端技术均有涉足。喜欢钻研技术,对编写代码孜孜以求,也时常阅读和翻译相关技术书籍,追寻生活与工作之间的平衡。
  • 目录:
    译者序

    第1章 Windows内部概览1

    1.1 进程1

    1.2 虚拟内存2

    1.2.1 页状态4

    1.2.2 系统内存4

    1.3 线程5

    1.4 系统服务7

    1.5 系统总体架构8

    1.6 句柄和对象10

    1.6.1 对象名称11

    1.6.2 访问已经存在的对象13

    第2章 开始内核开发15

    2.1 安装工具15

    2.2 创建一个驱动程序项目16

    2.3 DriverEntry和Unload例程17

    2.4 部署驱动程序19

    2.5 简单的跟踪22

    2.6 练习24

    2.7 总结24

    第3章 内核编程基础25

    3.1 内核编程的一般准则25

    3.1.1 未处理的异常26

    3.1.2 终止26

    3.1.3 函数返回值26

    3.1.4 IRQL27

    3.1.5 C  用法27

    3.1.6 测试和调试28

    3.2 调试构建与发布构建28

    3.3 内核API29

    3.4 函数和错误代码30

    3.5 字符串30

    3.6 动态内存分配31

    3.7 链表33

    3.8 驱动程序对象35

    3.9 设备对象36

    3.10 总结38

    第4章 驱动程序:从头到尾39

    4.1 简介39

    4.2 驱动程序初始化40

    4.2.1 将信息传递给驱动程序41

    4.2.2 客户程序/驱动程序之间的通信协议42

    4.2.3 创建设备对象44

    4.3 客户程序代码46

    4.4 Create和Close分发例程47

    4.5 DeviceIoControl分发例程48

    4.6 安装与测试52

    4.7 总结54

    第5章 调试55

    5.1 Debugging Tools for Windows 55

    5.2 WinDbg简介56

    5.3 内核调试70

    5.3.1 本地内核调试70

    5.3.2 本地内核调试教程71

    5.4 完整内核调试77

    5.4.1 配置目标机78

    5.4.2 配置宿主机79

    5.5 内核驱动程序调试教程81

    5.6 总结83

    第6章 内核机制84

    6.1 中断请求级别84

    6.1.1 提升和降低IRQL86

    6.1.2 线程优先级与IRQL87

    6.2 延迟过程调用88

    6.3 异步过程调用90

    6.4 结构化异常处理91

    6.4.1 使用__try/__except93

    6.4.2 使用__try/__finally95

    6.4.3 使用C   RAII代替__try/__finally96

    6.5 系统崩溃98

    6.5.1 崩溃转储信息100

    6.5.2 分析转储文件103

    6.5.3 系统挂起105

    6.6 线程同步107

    6.6.1 互锁操作107

    6.6.2 分发器对象108

    6.6.3 互斥量110

    6.6.4 快速互斥量113

    6.6.5 信号量114

    6.6.6 事件114

    6.6.7 执行体资源115

    6.7 高IRQL同步116

    6.8 工作项目119

    6.9 总结120

    第7章 I/O请求包121

    7.1 IRP简介121

    7.2 设备节点122

    7.3 IRP和I/O栈位置126

    7.4 分发例程130

    7.5 访问用户缓冲区132

    7.5.1 缓冲I/O133

    7.5.2 直接I/O135

    7.5.3 IRP_MJ_DEVICE_CONTROL的用户缓冲区138

    7.6 汇总:Zero驱动程序139

    7.6.1 使用预编译头140

    7.6.2 DriverEntry例程142

    7.6.3 读分发例程143

    7.6.4 写分发例程144

    7.6.5 测试应用144

    7.7 总结145

    第8章 进程和线程通知146

    8.1 进程通知146

    8.2 实现进程通知149

    8.2.1 DriverEntry例程151

    8.2.2 处理进程退出通知152

    8.2.3 处理进程创建通知154

    8.3 将数据提供给用户模式156

    8.4 线程通知160

    8.5 映像载入通知163

    8.6 练习164

    8.7 总结165

    第9章 对象和注册表通知166

    9.1 对象通知166

    9.1.1 操作前回调168

    9.1.2 操作后回调170

    9.2 进程保护者驱动程序171

    9.2.1 对象通知注册172

    9.2.2 管理受保护的进程172

    9.2.3 操作前回调176

    9.2.4 客户应用177

    9.3 注册表通知180

    9.3.1 处理操作前通知181

    9.3.2 处理操作后回调181

    9.3.3 性能考虑182

    9.4 实现注册表通知182

    9.4.1 处理注册表回调183

    9.4.2 修改后的客户程序代码185

    9.5 练习187

    9.6 总结187

    第10章 文件系统小过滤驱动188

    10.1 简介188

    10.2 装入与卸载189

    10.3 初始化191

    10.3.1 操作回调注册194

    10.3.2 高度198

    10.4 安装200

    10.4.1 INF文件200

    10.4.2 安装驱动程序206

    10.5 处理I/O操作206

    10.5.1 操作前回调207

    10.5.2 操作后回调209

    10.6 删除保护驱动程序210

    10.6.1 处理创建前回调212

    10.6.2 处理设置信息前回调216

    10.6.3 重构218

    10.6.4 将驱动程序通用化221

    10.6.5 测试修改后的驱动程序225

    10.7 文件名227

    10.7.1 文件名的各个部分228

    10.7.2 RAII FLT_FILE_NAME_INFORMATION包装器231

    10.8 另一个删除保护驱动程序232

    10.8.1 处理创建前回调和设置信息前回调239

    10.8.2 测试驱动程序241

    10.9 上下文241

    10.10 初始化I/O请求244

    10.11 文件备份驱动程序246

    10.11.1 创建后回调248

    10.11.2 写前回调252

    10.11.3 清理后回调257

    10.11.4 测试驱动程序258

    10.11.5 恢复备份258

    10.12 用户模式通信260

    10.12.1 创建通信端口261

    10.12.2 用户模式连接262

    10.12.3 发送和接收消息263

    10.12.4 增强文件备份驱动程序264

    10.12.5 用户模式客户程序266

    10.13 调试268

    10.14 练习271

    10.15 总结271

    第11章 其他主题273

    11.1 驱动程序签名273

    11.2 驱动程序验证器276

    11.3 使用原生API282

    11.4 过滤驱动程序283

    11.4.1 过滤驱动程序的实现285

    11.4.2 附加过滤器286

    11.4.3 在任意时刻附加过滤器288

    11.4.4 过滤器的清理289

    11.4.5 基于硬件的过滤驱动程序的更多内容290

    11.5 设备监视器292

    11.5.1 增加过滤设备293

    11.5.2 移除过滤设备296

    11.5.3 初始化和卸载297

    11.5.4 处理请求298

    11.5.5 测试驱动程序301

    11.5.6 请求的结果305

    11.6 驱动程序挂钩307

    11.7 内核库309

    11.8 总结310
查看详情
12
相关图书 / 更多
Windows内核编程
Wi-Fi 6:入门到应用
唐宏 林国强 王鹏 张爱华 宋雪娜 叶何亮
Windows内核编程
WindowsC/C++加密解密实战
朱晨冰、李建英 著
Windows内核编程
Windows Server 2012系统配置与管理项目教程(第2版)
谭方勇;许璐蕾;郭翠珍;陈小英
Windows内核编程
WindowsServer2016网络操作系统企业应用案例详解
杨云、徐培镟、杨昊龙 著
Windows内核编程
WindowsServer2019服务器配置与管理/高职高专计算机任务驱动模式教材
张恒杰、李彦景 著
Windows内核编程
Windows Server 2019操作系统项目化教程
蒋建峰
Windows内核编程
WindowsServer2019ActiveDirectory配置指南
戴有炜 著
Windows内核编程
Windows Server 2012系统管理与网络服务配置
胡章平 高峰 周科
Windows内核编程
Windows编程调试技术内幕
[印度]塔里克·索拉米(Tarik Soulami)
Windows内核编程
WindowsServer操作系统维护与管理项目教程(第三版)/“十二五”职业教育国家规划教材
王伟 编
Windows内核编程
Windows XP应用技巧点通点精1000招(1CD)
恰丹科技工作室 编著;李彪 主编
Windows内核编程
WindowsServer2012网络服务与管理
邹臣嵩 著;邹臣嵩 段桂芹 编
您可能感兴趣 / 更多
Windows内核编程
油画自学大师课:印象派风景油画技法
[美]辛迪·萨拉斯基 著;[美]乔治·加洛、周蕾 译
Windows内核编程
国家地理可爱的动物(圆溜溜篇)
[美]珍妮弗·希曼斯基 著;吴婧 译
Windows内核编程
行到水穷处(班宗华画史论集)/开放的艺术史丛书
[美]班宗华 著;白谦慎 编;刘晞仪 译
Windows内核编程
国家地理可爱的动物(胖嘟嘟篇)
[美]珍妮弗·希曼斯基 著;吴婧 译
Windows内核编程
国家地理可爱的动物(毛茸茸篇)
[美]珍妮弗·希曼斯基 著;吴婧 译
Windows内核编程
范德瓦尔斯流体热力学的进展(英文版)/国外优秀物理著作原版系列
[美]大卫·C.约翰斯顿 著
Windows内核编程
神奇树屋:魔术师胡迪尼(进阶版22)/故事系列
[美]玛丽·波·奥斯本 著;冷杉 译;[美]萨尔·莫多卡 绘
Windows内核编程
海绵宝宝漫画书(1海底爆笑故事集)
[美]史蒂芬·海伦伯格 著;王冠颖 编;米琳、夏鸥 译
Windows内核编程
神奇树屋(14音乐家奇妙夜进阶版)/故事系列
[美]玛丽·波·奥斯本 著
Windows内核编程
神奇树屋(12南极洲大冒险进阶版)/故事系列
[美]玛丽·波·奥斯本 著
Windows内核编程
神奇树屋(11深海怪物来袭进阶版)/故事系列
[美]玛丽·波·奥斯本 著
Windows内核编程
航天飞行医学原理与实践
[美]迈克尔 著