注入的DLL立即卸载

时间:2018-06-22 01:13:22

标签: c++ windows debugging dll-injection

我正在使用C++将DLL注入正在运行的进程中。 here是一个很好的源代码库(这是我正在使用的代码库)。举一个简短的例子,您可以使用this问题中的代码。我的问题是注入后,DLL立即被再次卸载。我可以观察到x64Dbg中加载的DLL的情况,例如,当调试器连接时,它显示以下内容:

Thread 7CC8 created, Entry: <kernel32.LoadLibraryA>
DLL Loaded: 0000000001110000 D:\MyDLL.dll
DLL Unloaded: 0000000001110000 mydll.dll
Thread 7CC8 exit

我调试了注入,它总是在CreateRemoteThread()或类似的设置和运行线程的方法上发生。

为什么会发生这种情况,以及如何防止进程卸载DLL?我已经看到像this one这样的注释,建议使用GetModuleHandleEx,但是我不确定在代码中的何处以及如何使用它。在目标进程中找到LoadLibrary的地址时,还是需要在注入的DLL中调用它?这样的方法调用会是什么样子?

loadLibAddr = GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "LoadLibraryA");

Another suggestion was to repeatedly call LoadLibrary,但是什么时候?创建线程后,该过程已经卸载了DLL,所以我不确定该怎么做。

Reflective injection不起作用(例如GetReflectiveLoaderOffset()返回0)。我还正在处理完全64-bit个应用程序。

我知道这是可能的,因为我已经看到另一个应用程序进行了持久注入。

0 个答案:

没有答案