CreateRemoteThread/LoadLibraryメソッドを使用して自分自身を挿入するDLLがあります。
DLLのデバッグと開発時に、ターゲットアプリケーションを終了して再起動する(ロード時間は10〜20秒)のは面倒なので、コードの動作を確認したらDLLをアンロードして、再コンパイルします。 /再注入します。
上記のDLLをロードおよびアンロードするためのフレームワークを使用して新しいDLLを作成することは避けたいと思います。
これはどのように可能ですか?
CreateRemoteThread/LoadLibraryメソッドを使用して自分自身を挿入するDLLがあります。
DLLのデバッグと開発時に、ターゲットアプリケーションを終了して再起動する(ロード時間は10〜20秒)のは面倒なので、コードの動作を確認したらDLLをアンロードして、再コンパイルします。 /再注入します。
上記のDLLをロードおよびアンロードするためのフレームワークを使用して新しいDLLを作成することは避けたいと思います。
これはどのように可能ですか?
DllMainがスレッドを生成し、そのスレッドが実行中の処理をすべて完了したら、FreeLibraryAndExitThreadを使用できます。
FreeLibraryAndExitThread関数を使用すると、DLL内で実行されているスレッドが、実行中のDLLを安全に解放し、自身を終了することができます。FreeLibraryとExitThreadを別々に呼び出すと、競合状態が発生します。ExitThreadが呼び出される前に、ライブラリをアンロードできます。
その引用から、私は平易な英語で、 DllMain内からこの関数を呼び出すべきではないと述べています。