迂回ライブラリを使ってチュートリアルを作ろうとしています。
古いバージョンの detour ライブラリ v1.5 では、関数 DetourFunction を使用してアドレスを定義していたため、DLL は関数を探す場所を認識していました。
たとえば、次のように使用できます。
InsertDateTime = (int (__stdcall*)(int))DetourFunction((PBYTE)0x01006F10, (PBYTE)MyInsertDateTime)
http://www.moddb.com/groups/ibepex/tutorials/function-hookingを参照してください
ただし、新しいバージョンでは、関数は次のように変更されています
LONG DetourAttach(
PVOID * ppPointer,
PVOID pDetour
);
ここで、ppPointer は迂回先のターゲット ポインターへのポインターです。
ターゲット関数のアドレスが 16 進数形式 0x01006F10 でわかっているので、これをどうにかして ppPointer の引数として使用したいと考えています。私はただ書いてみました:
InsertDateTime = (int (__stdcall*)(int))DetourAttach((PVOID*)0x01006F10, MyInsertDateTime);
コンパイルはうまくいきますが、私のプログラムは思ったように動作しません。プログラムはそのアドレスから関数を決してキャッチしないようです。
したがって、基本的に私の質問は、16 進アドレスへのポインターを正しく使用したか、次に、DetourAttach() の使用方法に根本的な間違いがあるかということです。