InLineHook原理:
通过硬编码的方式先内核API的内存空间写入跳转语句,当程序跳转到我们的程序时,需要执行3个步骤:
1,重新调整当前堆栈;需要保证内核API在执行完代码后返回我们的函数,就需要对当前的堆栈做调整;
2,执行遗失的指令;执行我们的代码时,可能会覆盖内核API的指令,需要在我们的代码空间将遗失的指令补回来;
3,信息过滤;根据返回结果做一些信息过滤,这些内容因被hook的API以及hook目的的不同而不同;
InLineHook工作流程:
1.验证内核API的版本
2.撰写之间的函数,要完成三项任务
3.获取直接函数的地址,覆盖内核API内存,供跳转