問題:
プログラムに注入して呼び出しにパッチを当てていますが、アプリケーションを 1 行ずつ見て特定の呼び出しを見つける方法があるかどうか疑問に思っていました。_IE: プログラム 'Foo.exe' がメモリ内のある場所でMessageBoxを呼び出しているとします。
次のコードを実行した場合:(大まかな考えです)
a = GetModuleHandle ( "<dll>" );
b = GetProcAddress ( a , "<name>" );
swap ( b , (DWORD)*fake_function );
-- 実際の関数の呼び出しを開始するまで、すべてがうまく機能します。これにより、永遠に続く巨大なループが作成されます (痛い)。
今、私はこれについて確信が持てず、間違っているかもしれませんが...上記のコードはメモリ内の「Foo.exe」呼び出しを置き換えますか、それともdllの関数を「fake_function」に置き換えますか?
私はいくつかのことに興味があります...
A ) MessageBoxを呼び出す 'Foo,exe' 内のすべてのメモリ ロケーションを見つけて、それらのメモリ ロケーションを 'fake_function' の呼び出しに置き換えるにはどうすればよいですか?
B )迂回路はこの問題をどのように解決しますか?