Всем привет.Пытаюсь реализовать запуск в памяти(LoadPE) файла без reloc`ов.Выделяю память вот так:
Но получаю GetLastError = 487 (ERROR_INVALID_ADDRESS).MSDN пишет, что я выделяю память не по валидному адресу.Подскажите пожалуйста, что я делаю неправильно? И есть ли вообще способ выделить память по стандартному адресу загрузки приложения?
P.S: ImageBase самого "загрузчика" изменил на 0x900000.Файл который загружаю - скомпилированный MINIPAD из екзамплов FASM-а, весит ~6кб
C:
//pohHeader - OptionalHeader загружаемого файла
//pohHeader->ImageBase = 0x400000
//pohHeader->SizeOfImage =0x16000
LPVOID lpBase = VirtualAlloc((LPVOID)pohHeader->ImageBase, pohHeader->SizeOfImage, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if(lpBase == NULL)
{
CHAR cError[30];
wsprintfA(cError, "%d", GetLastError());
MessageBoxA(NULL, cError, "GetLastError", MB_OK);
}
P.S: ImageBase самого "загрузчика" изменил на 0x900000.Файл который загружаю - скомпилированный MINIPAD из екзамплов FASM-а, весит ~6кб