伍红兵等编著的《主机防火墙设计技术及tdifw源代码分析》以Tdifw v1.4.4为主要素材,详细分析了防火墙设计技术。此外,防火墙软件不同于一般的windows应用程序,需要深入掌握windows安全模型、windows内核驱动、服务应用程序以及windows网络体系结构的相关知识,为帮助读者更深入、更全面地掌握防火墙设计技术,本书也包含了对这些知识的讲述。
为了帮助读者更好地阅读和分析Tdifw源代码,笔者将Tdifw项目移植到了Visualstudio 2010平台上,并且补充了详细的注释。读者结合移植后的Tdifw源代码能够更好地理解本书中的内容。
伍红兵等编著的《主机防火墙设计技术及tdifw源代码分析》以开源项目tdifw为素材,详细分析了主机防火墙设计技术及实现。
《主机防火墙设计技术及tdifw源代码分析》的目的是帮助读者学习和掌握防火墙设计技术与实现方法。主机防火墙一般采用“服务+驱动”的系统构架,能够控制哪个用户运行的哪个进程能够访问哪个远程主机的哪个端口。相应地,主机防火墙开发者首先需要具备windows安全模型、服务应用程序设计、内核驱动程序设计、网络体系结构等方面的知识,然后需要掌握如何运用这些技术开发主机防火墙。围绕这些内容,本书分为以下几个部分:windows安全模型,服务与事件日志;内核驱动程序设计;windows网络体系结构;tdifw防火墙设计技术与源代码分析。
《主机防火墙设计技术及tdifw源代码分析》适合大专院校计算机专业的学生、windows程序员、windows内核程序员、信息安全领域的程序员以及对windows防火墙设计感兴趣的编程爱好者使用。
阅读《主机防火墙设计技术及tdifw源代码分析》需要有c语言、windows操作系统和计算机网络的基础知识。
第1章 Windows安全模型
1.1 受保护的对象
1.2 对象安全模型
1.3 安全标识符
1.4 访问令牌
1.4.1 模仿
1.4.2 受限制的令牌
l.5 安全描述符
1.5.1 ACL分配
1.5.2 访问控制检查
1.6 账户权限和特权
1.6.1 账户权限
1.6.2 账户特权
1.7 Windows安全性组件
1.8 一个不容易理解的问题
1.8.1 登录会话
1.8.2 会话
1.8.3 窗口站和桌面
1.8.4 小结
第2章 服务与事件日志
2.1 windows服务概览
2.1.1 服务相关组件
2.1.2 服务相关注册表项
2.2 服务程序工作原理
2.2.1 进程人口函数
2.2.2 服务人口函数
2.2.3 服务控制处理器
2.2.4 控制码和状态报告
2.3 服务控制程序
2.3.1 打于SCM
2.3.2 安装服务
2.3.3 删除服务
2.3.4 启动与控制服务
2.3.5 重新配置服务
2.3.6 锁定SCM数据库
2.4 服务调试
2.5 事件日志
2.5.1 报告事件
2.5.2 消息文件
2.5.3 事件日志体系结构和开发流程
2.5.4 创建消息文件
2.5.5 编译消息
2.5.6 资源文件
2.6 Windows服务举例——ServiceFramework
2.6.1 安装服务InstallService
2.6.2 服务程序MyService
2.6.3 客户端程序MyClient
第3章 内核驱动程序设计
3.1 基本驱动程序示例
3.1.1 基本的NT驱动BaseNT
3.1.2 基本的WDM驱动
3.2 设备驱动程序基本概念
3.2.1 系统I/O组件
3.2.2 驱动程序基本结构与工作模型
3.2.3 驱动程序分类
3.2.4 wDM驱动程序与设备栈
3.2.5 设备栈的建立
3.2.6 IRP在设备栈中的传递
3.2.7 分层的驱动程序
3.2.8 注册表中的驱动程序信息
3.2.9 设备枚举
3.2.10 驱动程序加载顺序
3.3 关键数据结构
3.3.1 驱动对象
3.3.2 设备对象
3.3.3 文件对象
3.3.4 I/O请求包IRP
3.3.5 I/O栈单元
3.4 驱动程序编译
3.4.1 使用WDK的编译环境编译驱动程序
3.4.2 使用Visual Studio编译驱动程序
3.5 驱动程序调试
3.5.1 调试环境设置
3.5.2 结合WRK对项目调试
3.6 驱动程序安装
3.6.1 设备安装组件
3.6.2 PNP设备安装举例
3.6.3 INF文件
3.7 Toaster示例分析
3.7.1 目录和文件说明
3.7.2 编译方法
3.7.3 驱动安装
3.7.4 运行示例
3.7.5 过滤驱动
3.7.6 设备栈
第4章 Windows网络体系结构
4.1 网络API
4.2 WinSock
4.2.1 SPI
4.3 传输驱动程序接口TDI
4.4 网络驱动程序接口规范NDIS
4.5 Windows平台下的防火墙方案
4.5.1 用户级的实现方法
4.5.2 核心级的实现方法
4.5.3 各种拦截方案比较
4.6 对传输驱动接口TDI的详细讨论
4.6.1 传输驱动程序接口(TDI)
4.6.2 TDI设备对象
4.6.3 TDI文件对象
4.6.4 TDI传输驱动程序例程
4.6.5 TDI内核模式客户交互
4.6.6 TDI请求及事件
第5章 Tdifw防火墙设计技术与源代码分析
5.1 Tdifw安装与使用
5.1.1 Tdifw体系结构
5.1.2 系统文件说明
5.1.3 安装
5.1.4 配置文件Tdifw.conf
5.2 分析环境构建
5.2.1 Tdifw移植到Visual Studio 2010要点
5.2.2 Tdifw项目调试
5.2.3 增加输出错误信息的可读性
5.3 Tdifw安装程序tdi_install.c
5.3.1 Tdifw过滤驱动在系统中的位置
5.3.2 install.exe使用方法
5.3.3 t di_install.c注释
5.4 SVC项目
5.4.1 SVC项目中的内存泄露检测——CRT调试堆
5.4.2 main.c文件
5.4.3 SVC项目的错误信息输出
5.4.4 Tdifw服务线程setovice—main
5.4.5 start函数
5.4.6 stop函数
5.4.7 加载配置文件
5.4.8 服务程序响应驱动程序请求
5.4.9 处理驱动程序请求
5.4.10 其他函数的解释
5.4.11 Tdifw服务中的消息文件
5.5 drv驱动项目
5.5.1 drv项目中的内存泄露检测
5.5.2 驱动入口DriverEntry
5.5.3 ot_init
5.5.4 filter_init
5.5.5 conn_state_init
5.5.6 c_n_a_device
5.5.7 OnUnload
5.5.8 d_n_d_device
5.5.9 分发例程DeviceDispatch
5.5.10 tdi create
5.5.11 tdi dispatch cornplete
5.5.12 处理IRP_MJ_INTERNAL_DEVICE_CONTROL请求的函数
参考文献