文章目录
什么是Inline Hook
Inline Hook,即内联钩子。
系统提供的API都保存在DLL文件中,当程序运行需要调用某个API时,它会隐式地将此API所在的DLL文件加载到其进程中。那么,如果我们使用一种方法,直接修改DLL中的API函数在内存中的映像,使API函数的首条代码为jmp MyFuncAddress
这样就可以执行自己的函数了。
由于这种方法是直接在程序中嵌入jmp
指令来实现Hook的,所以把它称为内联钩子。
使用DLL实现对其他进程的Inline Hook
思路:写一个DLL,DLL内写好钩子函数,然后进行DLL注入。其在首次被Load入进程时,在进程中查找特定函数的地址,然后替换为钩子函数的地址,这个过程叫挂钩。钩子函数中,执行完自定义操作后,如果想继续执行原程序的操作,有两种方法:
1.在钩子函数中调用原来的函数