サードパーティの.NETアプリケーションのプロセス作成を検出する必要があります。私の目標は、このアプリケーションの機能を強化するためにプラグインDLLを挿入することです。アプリケーションの初期化イベントをキャッチできるように、これをできるだけ早く注入したいと思います。このプロセスがいつ作成されたかを検出し、Mainが呼び出される前にDLLを挿入する方法はありますか?
3 に答える
通常の解決策は、対象のアプリケーション イメージを、制御されたパラメーターの下で元のイメージを起動するスタブに置き換えることです。
GFlagsのような他の方法もありますが、通常の操作ではなくデバッグを目的としています。
Remus が提案したように元のアプリケーションを置き換えることができない場合は、システム レベルのフックの使用を検討し、CreateProcess() API ファミリ関数をインターセプトして、すべての呼び出しを監視することをお勧めします。
参照 : API フックが明らかに
これは少し複雑で、vista や他のフック ライブラリの問題など、あらゆる種類の問題に遭遇する可能性があります: http://forum.madshi.net/viewtopic.php?p=15833
悪いアイデア。
私は厳しいと思うかもしれませんが、一部のジョーカーが「機能強化」のためにランダムな DLL をプロセスに挿入するのは素晴らしいアイデアだと考えたため、プロセスがクラッシュするのを見てきました。他のすべてのアドレス空間を不安定にする可能性があります。やめろ。さらに、あなたの悪いコードが彼らを台無しにすると、彼らは非難されるでしょう.
別のプロセスにコードを挿入できるようにする API は、実際にはデバッガーを作成するためのものです。デバッガーを作成していない場合は、本番コードで使用しないでください。あなたは火遊びをしています。