Я читал о технике внедрения 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 );
Поправьте меня, если я ошибаюсь в этих рассуждениях.