0
メモリ内のルーチンコードを別の場所にコピーしたい。例えば、ルーチンの内容をメモリ内の別の場所にコピーする
procedure OldShowMessage;
begin
ShowMessage('Old message..');
end;
私はメモリ内の別の場所にルーチンをコピーしたいと言います。私はいくつかの擬似コードは、私はこれを行うのいずれかの可能性があるかどうかを知りたい
// VirtualProtect(@OldShowMessage, <length of routine>, ..., ...);
// Allocate memory
// lopShowMessage := AllocMem(<length of routine>);
// Move(@OldMessage, Pointer(lopShowMessage)^, <length of routine>);
// FlushInstructioncache.....
ようになる
var
lopShowMessage : procedure; // procedural pointer.
のようなものを宣言しました。私は新しいルーチンを呼び出すルーチンをパッチしましたが、コードの迂回路を使用してJMP命令を配置するので、古いルーチンで提供されている機能を使用できない場合があります。
私の前の質問に対する基準は、あなたがDetoursが実際にどのように動作するかの技術的な詳細にまで読めば、あなたはの一部としてtrampoline
を利用することにより、古いルーチンを利用することができていることがわかりますhere
なぜこれがダウンリストされましたか?それは有効な答えです。 –