放置跳转¶
无条件跳转的字节码类似于近调用,但第一个字节是 0xE9 而不是 0xE8。(需要复习请参阅第一百五十三页「处理内存中的近调用」。)在图 8-1 中,无条件跳转 JMP trampoline 替换了以下四个操作:

在这种情况下,你需要替换多个顺序操作,以适应无条件跳转的 5 字节大小。你可能会遇到被替换操作的大小大于 5 字节的情况。发生这种情况时,用 NOP 指令替换剩余字节。
现在,让我们看看如何替换这些操作。清单 8-11 展示了放置跳转钩子的代码。
无条件跳转的字节码类似于近调用,但第一个字节是 0xE9 而不是 0xE8。(需要复习请参阅第一百五十三页「处理内存中的近调用」。)在图 8-1 中,无条件跳转 JMP trampoline 替换了以下四个操作:

在这种情况下,你需要替换多个顺序操作,以适应无条件跳转的 5 字节大小。你可能会遇到被替换操作的大小大于 5 字节的情况。发生这种情况时,用 NOP 指令替换剩余字节。
现在,让我们看看如何替换这些操作。清单 8-11 展示了放置跳转钩子的代码。