|
我在教程里,公布了一种修改函数14个字节的INLINE HOOK方法。不得不说,这是一种很糟糕的HOOK法,因为需要太多空间了。这样子甚至难以实现安全HOOK,因为InterlockExchange系列函数顶多能一次性修改8个字节。
其实稍微改造一下代码,即可实现修改函数6字节的HOOK法。
以KeQueryPerformanceCounter为例,看看此函数头之前是什么样子的:
- lkd> u hal!kequeryperformancecounter-8
- hal!HalpScaleQueryPerformanceCounter+0x40:
- fffff800`01e0a6ec 90 nop
- fffff800`01e0a6ed 90 nop
- fffff800`01e0a6ee 90 nop
- fffff800`01e0a6ef 90 nop
- fffff800`01e0a6f0 90 nop
- fffff800`01e0a6f1 90 nop
- fffff800`01e0a6f2 90 nop
- fffff800`01e0a6f3 90 nop
复制代码
前面是8个NOP,正好足够放下一个64位的地址。那么思路就是:具体实现的代码就自己动手写吧。 |
|