私のコンピュータで実行されているプロセス(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私はこれを傍受して自分の値を返したいと思います。
Mono.Cecilライブラリを参照してください。そこには多くのチュートリアルがあります。 –
私はすでにそれをしました。しかし、私は自分の問題に関する事例や情報が見つかりませんでした。 – Ngine
重複の場合は、代わりにステップ '5b'を実行したいコードに置き換えるだけです。コードが2行以上ある場合は、 'inject.dll'を作成し、' GetRepaintedObject'を 'inject.dll'から静的関数を呼び出して静的メソッドの呼び出しを返すことをお勧めします。 Mono.Cecilの別のDLLから静的メソッドを呼び出す際に問題がある場合は、特にそれについて新しい疑問を尋ねてください。 –