2021-02-15 11:10:49
15 02 2021
摘要:inline hook是一种通过修改机器码的方式来实现hook的技术。

在x86汇编中,同样有很多类型的jmp,本文构造inline hook使用的是近距离地址跳转的jmp指令,它的机器码为E9,这种类型的jmp指令需要一个参数,参数是当前jmp指令地址距离目标函数地址的字节数。

假设需要hook的call的指令的内存地址为:0x1000,我们想要它执行后跳转到我们的函数(假设函数在内存中的地址:0x5000),那么,构造jmp指令时,指令应为:

jmp (0x5000-(0x1000 + 5))

即:

jmp 0x3FFB

对于5字节指令的hook,上面的计算公式是固定的,jmp指令本身占用5字节,所以加上5

懂了这些知识,就可以动手编写hook代码

延伸阅读
  1. 上一篇:JDK
  2. 下一篇:Nginx
发表评论