# 6 HOOKING
Hooking 是一种强大的进程监控 (process-observation)技 术,通过改变进程的流程,以监视进程中数据的访问和改变。 Hooking 常用于隐藏 rootkits,窃取按键信息,还有调试工作。在逆向调试中,通过构建简单的 hook 检索我们需要的信息,能够节省很多手工操作的时间。hook,简单而强大。
在 Windows 系统中,有非常多的方法实现 hook。我们主要介绍两种:soft hook 和 hard hook。soft hook 就是在要附加的目标进程中,插入 INT3 中断,接管进程的执行流程。这和 58 夜的“扩展断点处理”很像。hard hook 则是在目标进程中硬编码( hard-coding)一个跳转 到 hook 代码(用汇编代码编写)。Soft hook 在频繁的函数调用中很有用。然而,为了对目标 进 程 产 生 最 小 的 影 响 就 必 须 用 到 hard hook 。 有 两 种 主 要 的 hard hook , 分 别 是 heap-management routines 和 intensive file I/O operations。
我们在前面介绍的工具实现 hook。用 PyDbg 实现 soft hook 用于嗅探加密的网络传输。 用 Immunity 实现 hard hook 做一些高效的 heap instrumentation。
- 序
- 1 搭建开发环境
- 1.1 操作系统准备
- 1.2 获取和安装 Python2.5
- 1.3 配置 Eclipse 和 PyDev
- 2 调试器设计
- 2.1 通用 CPU 寄存器
- 2.2 栈
- 2.3 调试事件
- 2.4 断点
- 3 自己动手写一个 windows 调试器
- 3.2 获得 CPU 寄存器状态
- 3.3 实现调试事件处理
- 3.4 全能的断点
- 4 PyDBG---纯 PYTHON 调试器
- 4.1 扩展断点处理
- 4.2 处理访问违例
- 4.3 进程快照
- 5 IMMUNITY----最好的调试器
- 5.1 安装 Immunity 调试器
- 5.2 Immunity Debugger 101
- 5.3 Exploit 开发
- 5.4 搞定反调试机制
- 6 HOOKING
- 6.1 用 PyDbg 实现 Soft Hooking
- 6.2 Hard Hooking
- 7 Dll 和代码注入
- 7.1 创建远线程
- 7.2 邪恶的代码
- 8 FUZZING
- 8.1 Bug 的分类
- 8.2 File Fuzzer
- 8.3 改进你的 Fuzzer
- 9 SULLEY
- 9.1 安装 Sulley
- 9.2 Sulley primitives
- 9.3 猎杀 WarFTPD
- 10 Fuzzing Windows 驱动
- 10.1 驱动通信
- 10.2 用 Immunity fuzzing 驱动
- 10.4 构建 Driver Fuzzer
- 11 IDAPYTHON --- IDA 脚本
- 11.1 安装 IDAPython
- 11.2 IDAPython 函数
- 11.3 脚本例子
- 12 PyEmu
- 12.1 安装 PyEmu
- 12.2 PyEmu 一览
- 12.3 IDAPyEmu