gpt4 book ai didi

delphi - 什么是相对跳跃?

转载 作者:行者123 更新时间:2023-12-01 18:39:40 25 4
gpt4 key购买 nike

为什么用它来 Hook 和重定向函数?

像这样:

procedure RedirectProcedure(OldAddress, NewAddress: Pointer);
var
NewCode: TInstruction;
begin
NewCode.Opcode := $E9; //relative jump
NewCode.Offset := NativeInt(NewAddress)-NativeInt(OldAddress)-SizeOf(NewCode);
PatchCode(OldAddress, NewCode, SizeOf(NewCode));
end;

顺便问一下,$E9 常数是什么意思?

最佳答案

跳转指令将指令指针移动到新位置。它在机器语言中相当于 goto。绝对跳转将指令指针移动到绝对地址。相对跳转跳转到相对于当前指令指针指定的地址。

$E9 操作码是具有 32 位偏移量的相对跳转。请注意,对于具有不同大小偏移量的跳转,有不同的跳转操作码。

地址相对于跳转指令的结束,因此需要调整 SizeOf(NewCode)。

我觉得这段代码确实很熟悉。我想是我写的!

关于delphi - 什么是相对跳跃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17788375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com