为什么LoadLibrary加载不相关的DLL

为什么LoadLibrary加载不相关的DLL,dll,loadlibrary,dll-injection,Dll,Loadlibrary,Dll Injection,这是关于DLL注入的 假设p.exe依赖于A.dll、B.dll和C.dll(隐式链接),它们是p.exe的私有模块 现在我使用CreateProcess和CREATE_SUSPENDED标志来启动p.exe,之后我使用CreateRemoteThread调用目标进程中的LoadLibrary来加载Inject.dll,并以相同的方式调用Inject.dll的初始化函数来执行实际工作(在DLLMain中不能执行的操作) 它起作用了。但我发现调用LoadLibrary也会加载A.dll、B.dll

这是关于DLL注入的

假设p.exe依赖于A.dll、B.dll和C.dll(隐式链接),它们是p.exe的私有模块

现在我使用CreateProcess和CREATE_SUSPENDED标志来启动p.exe,之后我使用CreateRemoteThread调用目标进程中的LoadLibrary来加载Inject.dll,并以相同的方式调用Inject.dll的初始化函数来执行实际工作(在DLLMain中不能执行的操作)

它起作用了。但我发现调用LoadLibrary也会加载A.dll、B.dll和C.dll,而不仅仅是Inject.dll。从Visual Studio的输出来看,它们甚至在Inject.dll之前加载,这不是我想要的。您知道,Inject.dll不依赖于任何第三方dll,事实上它只依赖于kernel32.dll和user32.dll


在这种情况下,如何仅加载Inject.dll?

我怀疑Windows需要完全初始化并运行该进程才能使CreateRemoteThread工作。因此,它可能正在完成加载可执行文件和依赖项,以便CreateRemoteThread可以工作,而不是像加载注入的DLL的依赖项那样加载这些DLL。或者,在LoadLibrary可以工作之前,加载程序需要完成解析主可执行文件导入的延迟工作。@AndrewMedico请看一看您有什么建议吗?