3

CreateRemoteThread/LoadLibraryメソッドを使用して自分自身を挿入するDLLがあります。

DLLのデバッグと開発時に、ターゲットアプリケーションを終了して再起動する(ロード時間は10〜20秒)のは面倒なので、コードの動作を確認したらDLLをアンロードして、再コンパイルします。 /再注入します。

上記のDLLをロードおよびアンロードするためのフレームワークを使用して新しいDLLを作成することは避けたいと思います。

これはどのように可能ですか?

4

1 に答える 1

3

DllMainがスレッドを生成し、そのスレッドが実行中の処理をすべて完了したら、FreeLibraryAndExitThreadを使用できます。

FreeLibraryAndExitThread関数を使用すると、DLL内で実行されているスレッドが、実行中のDLLを安全に解放し、自身を終了することができます。FreeLibraryとExitThreadを別々に呼び出すと、競合状態が発生します。ExitThreadが呼び出される前に、ライブラリをアンロードできます。

その引用から、私は平易な英語で、 DllMain内からこの関数を呼び出すべきではないと述べています。

于 2012-08-07T14:10:45.303 に答える