gpt4 book ai didi

delphi - 如何在 FastcodeAddressPatch 之后访问替换的过程

转载 作者:行者123 更新时间:2023-12-03 15:48:46 25 4
gpt4 key购买 nike

我试图用我自己的即时版本替换 Delphi 内置函数。

function ShortCutToTextOverride(ShortCut: TShortCut): string;
begin
if SomeCondition then
Result := Menus.ShortCutToText // after patching the pointer equals ShortCutToTextOverride
else
begin
// My own code goes here
end;
end;

FastcodeAddressPatch(@Menus.ShortCutToText, @ShortCutToTextOverride);

打补丁后,原有功能无法再使用。无论如何都可以访问它吗?

最佳答案

恐怕不会:第一个字节会被跳转到新函数所覆盖。

您可以使用 KOLDetours.pas:它返回指向蹦床的指针(被绕行覆盖的原始前几个字节)。 http://code.google.com/p/asmprofiler/source/browse/trunk/SRC/KOLDetours.pas

例如:

type
TNowFunction = function:TDatetime;
var
OrgNow: TNowFunction;
function NowExact: TDatetime;
begin
//exact time using QueryPerformanceCounter
end;

initialization
OrgNow := KOLDetours.InterceptCreate(@Now, @NowExact);
Now() -> executes NowExact()
OrgNow() -> executes original Now() before the hook

关于delphi - 如何在 FastcodeAddressPatch 之后访问替换的过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10597462/

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