Windows内核安全编程从入门到实践作 者: 《黑客防线》编辑部 组编出版时间:2012内容简介 本书详细介绍了Windows平台下的内核安全编程知识。首先简单介绍了驱动编程的基本方法;然后详细介绍了Windows各个系统组件的工作原理,如文件系统、网络系统自上而下的执行流程。同时还介绍了各个组件涉及的安全问题,如文件隐藏、键盘记录等,并通过工程项目让读者从代码层级了解这些信息安全问题及解决方法;最后介绍了驱动编程本身的安全问题,如安全编码的注意事项和脆弱代码的检测手段。另外本书还介绍了简单的调试和逆向技术,帮助解决开发过程中遇到的技术难题。通过阅读本书,可以帮助读者更深层次的了解内核态下的信息安全知识。本书适合大专院校计算机系的学生、windows程序员、从事信息安全行业的工程师以及所有对windows内核安全编程感兴趣的爱好者使用。目录第一部分 基础篇第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_STRING3.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 键盘类驱动的分发函数Hook6.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 DriverEntry8.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 支持多CPU9.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 示例 上一篇: 微机原理与接口技术 [李永忠] 2013年版 下一篇: Windows Azure从入门到精通