以下に示すように、関数 A と関数 B があるとします。
#include <stdio.h>
#include <stdlib.h>
void a( )
{
printf("Hello from function a!\n");
return;
}
void b( )
{
printf("Hello from function b!\n");
return;
}
int main( )
{
printf( "a = %p, b = %p\n", a, b );
a( );
b( );
return 0;
}
この場合、次の出力が得られます。
a = 00401334, b = 00401349
Hello from function a!
Hello from function b!
プログラムで (C と winapi を使用して) 外部プログラムからのこれら 2 つの関数呼び出しを切り替えて、a() への呼び出しで b のメッセージを出力し、b() で a のメッセージを何らかのタイプのフックで出力する方法はありますか? もしそうなら、私のプログラムが関数を切り替えるのに十分長く実行され、関数がインライン化されていないと仮定して、どのようにそのようなプログラムを書くのでしょうか。