5.1 HOOK知识前奏
在DOS时代进行编程,那时操作系统提供的编程接口不称为API函数,而称为中断服务向量。也就是说,当时的操作系统提供的编程接口只有中断,要进行写文件要调用系统中断,要进行读文件也要调用系统中断(当然,也不调用操作系统的中断直接调用更底层的中断)……中断服务向量类似于Windows下的API函数,中断服务向量在操作系统的某个地址保存着,它是以数组形式保存着的,我们也称其为中断向量表。DOS时代的HOOK技术也就是修改中断向量表中的中断地址。比如,要捕获写操作,那么就修改中断向量表中关于写文件的地址,将写文件的中断地址保存好,然后替换为我们的地址,这样当程序调用写文件中断时,我们的函数就被执行了;当程序执行完可以继续调用原来的中断地址,从而完成写文件的操作。
在Windows下HOOK技术的方法比较多,使用比较灵活,常见的应用层的HOOK方法有Inline Hook、IATHOOK、Windows钩子……HOOK技术涉及到了DLL相关的知识。因为HOOK其他进程的时候需要访问其他进程的地址空间,使用DLL是必然的。HOOK技术也涉及到了注入的知识,想要把完成HOOK功能的DLL加载到目标进程空间中就要使用注入的知识了。让我们来学习常用的HOOK技术吧。