我想将内存中的例程代码复制到另一个位置。例如
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