我想将内存中的例程代码复制到另一个位置。例如,
procedure OldShowMessage;
begin
ShowMessage('Old message..');
end;
假设我想将例程复制到内存中的另一个位置。我已宣布类似
的内容var
lopShowMessage : procedure; // procedural pointer.
一些伪代码就像
// VirtualProtect(@OldShowMessage, <length of routine>, ..., ...);
// Allocate memory
// lopShowMessage := AllocMem(<length of routine>);
// Move(@OldMessage, Pointer(lopShowMessage)^, <length of routine>);
// FlushInstructioncache.....
我只想知道是否有可能这样做。我修补了一个例程来调用一个新例程,但由于我们使用代码绕道放置一个JMP指令,我可能无法使用旧例程中提供的功能。
我之前提问的参考资料是here