第一部分 基础篇
第1章 前置要求与环境搭建
1.1 驱动编程的语言
1.2 开发环境搭建
1.2.1 Visual Studio 2005/2008的安装与配置
1.2.2 WDK的安装与配置
1.2.3 VisualDDK的安装与配置
1.3 常用工具介绍
第2章 内核编程基础知识
2.1 Windows主要系统组件
2.1.1 对象管理器
2.1.2 内存管理器
2.1.3 进程和线程管理器
2.1.4 I/O管理器
2.1.5 PnP管理器
2.1.6 电源管理器
2.1.7 配置管理器
2.1.8 安全引用监视器
2.2 常见名词解释
2.2.1 内核名词
2.2.2 文件名词
2.2.3 网络名词
2.3 常见内核数据结构
2.3.1 驱动框架常见数据结构
2.3.2 进程与线程数据结构
2.3.3 存储系统数据结构
2.3.4 网络数据结构
2.3.5 其他一些常见的数据结构
第3章 基本编程方法
3.1 简单的NT式驱动模型
3.1.1 驱动模型的选择
3.1.2 NT式驱动程序基本结构
3.1.3 编译驱动程序
3.1.4 加载驱动及查看输出信息
3.2 应用层与内核的通信方法
3.2.1 访问数据的I/O方式
3.2.2 读写驱动程序
3.2.3 发送I/O控制码
3.2.4 内存共享
3.3 同步技术
3.3.1 事件对象
3.3.2 信号灯对象
3.3.3 互斥体对象
3.3.4 定时器对象
3.3.5 自旋锁
3.3.6 回调对象
3.3.7 原子操作
3.4 IRP处理
3.4.1 简单的IRP流动图
3.4.2 IRP的创建
3.4.3 IRP的发送
3.4.4 为IRP设置完成函数
3.4.5 IRP的完成
3.4.6 多种典型的 IRP处理示例
3.5 字符串操作
3.5.1 STRING、ANSI_STRING和UNICODE_STRING
3.5.2 初始化和销毁
3.5.3 复制和添加
3.5.4 比较
3.5.5 转换
3.6 内存管理
3.6.1 分配系统空间内存
3.6.2 运行时库管理函数
3.6.3 使用内核栈
3.6.4 使用Lookaside快速链表
3.6.5 访问用户空间内存
3.6.6 内存区对象和视图
3.6.7 MDL的使用
3.7 注册表编程
3.7.1 注册表对象管理函数
3.7.2 注册表运行时库函数
3.7.3 注册表调用过滤
3.8 文件编程
3.8.1 打开文件句柄
3.8.2 执行相关文件操作
3.9 其他
3.9.1 本地系统服务函数的Nt
和Zw版本
3.9.2 NTSTATUS返回值
3.9.3 双向链表的使用
3.9.4 异常处理
第二部分 提升篇
第4章 进程
4.1 进程监控实现原理
4.2 Windows 7系统下的进程
监控软件实例
4.2.1 内核模块程序实现
4.2.2 用户模式程序实现
4.3 安装与使用
第5章 磁盘
5.1 存储驱动体系结构
5.2 设备树示例
5.3 diskperf磁盘过滤驱动
5.3.1 diskperf介绍
5.3.2 diskperf的过滤框架
5.3.3 diskperf的PnP支持
5.3.4 diskperf的硬盘访问监控和性能数据捕获
5.3.5 diskperf的电源支持
5.3.6 diskperf的安装与测试
第6章 键盘
6.1 原理跟踪
6.1.1 自下而上的过程
6.1.2 自上而下的过程
6.2 几种常见的键盘记录行为
6.2.1 应用层的消息钩子
6.2.2 键盘过滤驱动
6.2.3 键盘类驱动的分发函数Hook
6.2.4 DKOM技术
6.2.5 其他方法
6.3 反键盘记录
6.3.1 实现原理
6.3.2 反键盘记录示例
第7章 文件
7.1 原理跟踪
7.1.1 Windows存储栈
7.1.2 不涉及缓存的数据存储
7.1.3 涉及缓存的数据存储
7.2 简单的文件隐藏
7.2.1 文件隐藏的原理
7.2.2 文件隐藏的实现
7.3 scanner扫描程序
7.3.1 过滤管理器与微过滤驱动概念
7.3.2 使用过滤管理模型的优势
7.3.3 微过滤驱动的加载和卸载
7.3.4 用户模式和内核模式的交互
7.3.5 scanner介绍
7.3.6 scanner驱动程序
7.3.7 scanner应用层程序
7.3.8 scanner的安装与使用
第8章 网络
8.1 原理跟踪
8.2 NDIS协议驱动
8.2.1 DriverEntry
8.2.2 绑定
8.2.3 数据发送
8.2.4 数据接收
8.2.5 数据流动总结
8.3 OPEN_BLOCK的展示
8.3.1 原理知识
8.3.2 相关代码
第三部分 辅助篇
第9章 安全编码
9.1 蓝屏的概念
9.2 创建可靠的驱动程序
9.2.1 验证设备对象
9.2.2 使用安全字符串
9.2.3 验证对象句柄
9.2.4 支持多CPU
9.2.5 确认驱动状态
9.2.6 IRP安全检查
9.3 使用驱动验证程序
9.3.1 驱动验证程序的测试选项
9.3.2 使用驱动验证程序
第10章 调试与逆向
10.1 静态调试
10.1.1 静态调试驱动程序
10.1.2 静态调试应用程序
10.2 动态调试
10.2.1 双机调试的基本方法
10.2.2 WinDbg的常用命令
10.2.3 WinDbg的使用技巧
10.3 逆向与调试相结合
10.3.1 示例
^ 收 起