バイナリ実行可能ファイルのメンバー関数を迂回しようとしています。関数のシグネチャとメソッドの VA しか知りません。Detours Express 3.0 に含まれている「メソッド」サンプルの助けを借りて、次のことを思いつきました。
class Detour
{
public:
void mine_target(const char* text)
{
printf("text = %s\n", text);
(this->*real_target)(text);
}
static void (Detour::*real_target)(const char* text);
};
void (Detour::*real_target)(const char* text)
= (void (Detour::*)(const char*))0x401010;
エラーが表示されます:
error C2440: 'type cast' : cannot convert from 'int' to 'void (__thiscall Detour:: *)(const char *)'
There are no conversions from integral values to pointer-to-member values