この辺が参考になるかもしれません。
run.cppのinject_dll( )で、起動するアプリケーションのgdi32.dll呼び出しの一部を書き換えています。
上記サイトの開発者向けドキュメントに記載されていますが、「listexp2.exe」というプログラムで、任意のDLLのスケルトンを作成できるようです。
ただし、VC++ 6.0用なので、VC++ 2005などでコンパイルするには、生成されたxx_dummy.cppファイルの「__declspec( naked )」を「__declspec( naked ) void WINAPI」に置換する必要があるようです。
listexp2.exeにもソースが付いているので、「void WINAPI」付きでスケルトンを出力するように修正した方が速いかもしれません。
インポートセクションを操作して任意のAPIをフックすることができます。
http://ruffnex.oc.to/kenji/text/api_hook/
ただし、少々難解でデバッグしずらいため、私もMessageBoxA/Wなどの単純なAPIしかフックしたことありません。
※フック解除せずにフックプログラムが終了するとOSごとハングすることもたるので注意を。
コメント(0件)