游戏中控制流的操作技巧
在游戏操作中,我们可以通过多种方式来对游戏进行操控,而将多种方法结合起来形成的“钩子”技术,更是一种强大的操控手段。下面将详细介绍四种强大的游戏黑客钩子方法。
调用钩子(Call Hooking)
调用钩子是直接修改 CALL 操作的目标,使其指向新的代码。在 x86 汇编中,CALL 操作有几种变体,但调用钩子通常只用于近调用(near call)。
内存中的近调用
在汇编程序中,近调用看起来像这样:
CALL 0x0BADF00D近调用由字节 0xE8 表示,但它在内存中的存储并非简单的0xE8 0x0BADF00D形式。实际上,近调用存储的是相对于调用后立即地址的偏移量。计算公式为:
calleeAddress – (callAddress + 5)例如,若CALL 0x0BADF00D位于内存地址0xDEADBEEF,则 0xE8 后面的值为:
0x0BADF00D – (0xDEADBEEF + 5) = 0x2D003119在内存中,该 CALL 指令看起来是: