Я читал о технике внедрения DLL, и я имел в виду этот вопрос.
Допустим, мы хотим внедрить DLL в процесс назначения в Windows 7, в котором ASLR включен для kernel32.dll
Таким образом, ни один фрагмент внедренного кода не может использовать какой-либо winapi или любой системный вызов, поскольку адрес, скажем, функции loadLibrary в коде инжектора будет отличаться от адреса loadLibrary в процессе назначения, не так ли??
Так что такой вызов CreateRemoteThread
не сработает:
CreateRemoteThread(hProcess,
NULL,
0,
(LPTHREAD_START_ROUTINE) ::GetProcAddress(hKernel32,
"LoadLibraryA" ),
pLibRemote,
0,
NULL );
::WaitForSingleObject( hThread, INFINITE );
Поправьте меня, если я ошибаюсь в этом рассуждении.