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。