如何在完成后从DLL中卸载从目标进程注入的DLL?

时间:2012-07-30 06:12:55

标签: winapi visual-c++ dll dll-injection

我有一个使用CreateRemoteThread / LoadLibrary方法注入自身的DLL。

在调试和开发DLL时退出目标应用程序并重新启动它(加载时间为10-20秒)是很麻烦的,所以我想在检查我的代码工作原理时卸载DLL ,重新编译/重新注入它。

我想避免使用用于加载和卸载所述DLL的框架来创建新的DLL。

这怎么可能?

1 个答案:

答案 0 :(得分:3)

如果DllMain生成一个线程,并且该线程完成了它正在做的任何事情,你可以使用FreeLibraryAndExitThread

  

FreeLibraryAndExitThread函数允许在DLL中执行的线程安全地释放它们正在执行的DLL并自行终止。 如果他们分别调用FreeLibrary和ExitThread,则会出现竞争条件。可以在调用ExitThread之前卸载库。

从那句话开始,我用简单的英语说明你应该不要在DllMain中调用这个函数

相关问题