2017-07-09 11 views
0

対象アプリに同じdllを複数回注入することができます。easyhookをdllを複数回注入するのを避けるにはどうしたらいいですか?

これにより、同じ機能が複数回フックされます。

ターゲットアプリが既に挿入されているかどうかを検出する方法があるかどうかは分かりますか?または複数の注射を避ける方法はありますか? DLLがすでに注入を進める前に、ターゲットアプリケーションにロードされている場合は、チェックすることができ

答えて

0

:.NETで

  • を、あなたは、プロセスにロードされたDLLを反復するProcess.Modulesプロパティを使用することができます。

  • ネイティブC/C++では、WindowsプロセスステータスAPIメソッドEnumProcessModulesを使用して同じ結果を得ることができます。プロセスのモジュールを反復する例はfound hereです。

はまた、あなたのフック作成ロジックが複数回適用されていないことを確実にするために注入されているあなたのDLL内の名前付きシステムミューテックスを使用することができます。 .NETの場合は Mutex class、ネイティブの場合は CreateMutexを参照してください。これはより複雑なアプローチであり、フックが削除されたときにmutexをクリーンアップする必要があります。

関連する問題