教程参考自:https://www.bilibili.com/video/av26193169/?p=9
代码地址:https://github.com/G4rb3n/Windows-Driver/tree/master/MT-InlineHook
1. 概述
之前的章节我们介绍了FSD Hook技术,这章我们来讲解一下更底层一点的Inline Hook技术。
2. 原理介绍
Inline Hook直接修改内存中任意函数的代码,将其劫持至Hook API。它的目标是系统函数,如下,第一张图是Hook之前的状态,procexp.exe进程调用ZwQuerySystemInformation()函数时,ZwQuerySystemInformation()的代码是正常的代码。第二张图是Hook后的状态,注意红框中的代码,ZwQuerySystemInformation()函数开头5个字节已被修改,变成了jmp 0x10001120,也就是我们恶意代码的地址,之后便可以开始我们的自定义操作。0x1000116A我们先进行unhook操作(脱钩),目的是将ZwQuerySystemInformation()的代码恢复。大家可能有疑惑,为什么刚修改完又要恢复回来,原因很简单,Hook的目的是当调用某个函数时,我们能劫持进程的执行流。现在我们已经劫持了进程的执行流,便可以恢复ZwQuerySystemInformatio