【HOOK技术】内联钩子--Inline Hook笔记

Inline Hook原理

应用程序所调用的API函数都在操作系统提供的DLL文件当中。当程序要调用时某个API函数并运行后。程序会将API函数所在的DLL文件加载入进程当中。API函数也是由代码编译而成的,也有其对应的二进制代码。既然是代码,就可以被修改。通过某种方法直接修改API函数所在内存中的映像,从而实现对API函数进行HOOK。这个方法是直接使用汇编的jmp指令将其代码执行流程进行改变,进而执行自己的代码,这样就使原来的函数的流程改变了(JMP是汇编语言中的无条件跳转指令。无条件跳转指令可转到内存中任何程序段。转移地址可在指令中给出,也可以在寄存器中给出,或在储存器中指出)。假设要对某进程的kernel32.dll的xxxx函数进行hook,首先需要在指定进程中的内存找到xxxx函数的地址,然后修改xxxx函数的首地址代码为 jmp xxxxxx 的指令。这样,当指定进程调用这个函数时,首先会跳转到自己的函数中执行流程,这就完成了HOOK的的工作。

posted @ 2020-07-27 21:34  Boky_Learn  阅读(670)  评论(0)    收藏  举报