ASLR是否会因DLL注入而导致地址摩擦?

Cna*_*eak 3 dll winapi inject aslr createremotethread

我正在阅读关于DLL注入技术的内容,我记住了这个问题.

让我们假设我们想要将一个DLL注入Windows 7中的目标进程,该进程为kernel32.dll启用了ASLR

因此,任何一段注入的代码都不能使用任何winapi或任何系统调用,因为地址让我们说在注入器代码中的loadLibrary函数将与目标进程中的地址loadLibrary不同,不是吗?

所以这样的召唤CreateRemoteThread不起作用:

CreateRemoteThread(hProcess,
                   NULL,
                   0,
                   (LPTHREAD_START_ROUTINE) ::GetProcAddress(hKernel32,
                                                             "LoadLibraryA" ),
                   pLibRemote,
                   0,
                   NULL );

::WaitForSingleObject( hThread, INFINITE );
Run Code Online (Sandbox Code Playgroud)

如果我在这个推理中错了,请纠正我.

hmj*_*mjd 7

不,我认为这是不正确的.模块的地址kernel32.dll在机器启动时是随机的,但对于所有进程都是相同的.