2016-12-13 4 views
3

私のコンピュータで実行されているプロセス(target.exe)があるとします。 target.exeがDLL(target.dll)を使用していることが判明しました。このDLLには、指定されたメソッドがあります:プロセスの再起動なしでプロセスによって呼び出されるdllのメソッドを変更します。

public PaintedObject GetRepaintedObject(Image img) 
{ 
    return new PaintedObject(img); 
} 

それは、実行時にメソッド呼び出しGetRepaintedObjectをキャッチし、自分自身のコードを実行することは可能ですか?自分のPaintedObjectを返すだけです。

編集:私は彼のメモリ空間にtarget.exe負荷target.dllを考えると、これは私が注入または方法GetRepaintedObjectを変更したいポイントです。私はDLLやその他のものを再コンパイルしたくありません。毎回target.exeが呼び出されていますGetRepaintedObject私はこれを傍受して自分の値を返したいと思います。

+0

Mono.Cecilライブラリを参照してください。そこには多くのチュートリアルがあります。 –

+0

私はすでにそれをしました。しかし、私は自分の問題に関する事例や情報が見つかりませんでした。 – Ngine

+0

重複の場合は、代わりにステップ '5b'を実行したいコードに置き換えるだけです。コードが2行以上ある場合は、 'inject.dll'を作成し、' GetRepaintedObject'を 'inject.dll'から静的関数を呼び出して静的メソッドの呼び出しを返すことをお勧めします。 Mono.Cecilの別のDLLから静的メソッドを呼び出す際に問題がある場合は、特にそれについて新しい疑問を尋ねてください。 –

答えて

-1

実行時にGetRepaintedObject()をDLLから呼び出す必要がありますか?

「はい」の場合は、Reflectionを使用してDLLで定義されたクラスのメソッドへの参照を取得できます。

+0

私メソッドを呼び出す必要はありません。メソッドはtarget.exeによって時々呼ばれ、私はこの呼び出しを傍受して自分のコードを実行したいだけです。 ** GetRepaintedObject **は** target.exe **によって毎回呼び出されます。私は自分自身のコードを実行/挿入し、** target.exeにカスタム** PaintedObject *を返すようにしたい**: – Ngine

関連する問題