2012-03-08 10 views
1

私はいくつかのエクササイズをしていますが、問題を見つけました。私はexeファイルに注入されるDLLファイルを持っています。私はDLLファイルから私の関数によって、そのexeから一つの関数をオーバーライドする必要があります。私はexeファイルに干渉することはできませんが、DLLで私はすることができます。私は置き換える必要がある(GetProcAddress()関数で取得した)関数のアドレスを取得しましたが、今はこのアドレスを自分の関数にリダイレクトする必要があります。私が達成したいのは、exeが関数を呼び出すとき、彼は内部関数ではなく、DLLから関数を呼び出すことです。私は自分自身をはっきりさせることを願っています。これは、関数の頭部がどのように見えるかです:外部関数をオーバーライドする方法は?

int (func)(float, int); 

私はそのようにそれを実行しようとしました:

typedef int (*func_ptr)(float, int); 
func_ptr myFunction; 
myFunction = (*func_ptr)GetProcAddress(hModule, func_name); 
*myFunction = newFunction; 

答えて

1

あなたは迂回を見てすることがあります:http://research.microsoft.com/en-us/projects/detours/ 、または手動でターゲット機能にパッチを適用しますあなたの交換先にジャンプしてください。

+0

私はそれを見ましたが、実際には自分でそれをしたいと思います。私が言ったように - 私は訓練のためにそれをやっています – Blood

+0

おかげで、私はその迂回路でそれを作った。どうもありがとうございました! – Blood

関連する問題