gpt4 book ai didi

delphi - 快速代码 : studying its code

转载 作者:行者123 更新时间:2023-12-02 20:02:00 24 4
gpt4 key购买 nike

我正在研究FastMM的代码,它在运行时更改方法和函数的地址。但有些事情我不明白。

http://koders.com/delphi/fid356C72C9C454FA74A916971690F624B0FF9111E5.aspx?s=pos

我的疑问在第 47 行:“if PBYTE(AStub)^ = $E8 then”为什么要进行这样的比较?好的,检查它是否已分配。我错了吗 ?但为什么是 $E8(232) 呢?如果它总是相同的值,那么它不是总是相同的结果吗?

代码的其余部分在我看来“没问题”。但如果有人能解释这一切,我会很感激。

感谢您的建议。

最佳答案

该代码返回 CALL 指令的目标地址。该测试只是为了检查它是否确实是已传递给例程的 CALL 指令。这并不是万无一失的,因为您可能会传递指令中间的地址,甚至是非代码的地址。

所以,是的,如果函数调用正确,测试应该总是成功。

这两个例程大概是串联使用的。首先,您获得 CALL 指令的地址,然后将该站点的代码替换为 JMP ($E9)。

关于delphi - 快速代码 : studying its code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5489160/

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