Здравствуйте, ononim, Вы писали:
I>>Работает, но иногда обламывается.
I>>ZwUnmapViewOfSection (handle, imgBase) -> OK
I>>VirtualAllocEx (handle, imgBase, size, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE) -> FAILED
I>>Ошибка ERROR_INVALID_ADDRESS или STATUS_CONFLICTING_ADDRESSES если использовать NtAllocateVirtualMemory.
O>только возможная причина: Другой поток вашего процесса мог занять пространство адресов (выделива память) между этими двумя вызовами..
Процесс создан с флагом CREATE_SUSPENDED т.е. поток там только один и тот еще выполняться не начинал.
Если дело в ASLR висты (как я думаю), то память могли занять:
1. Стек потока.
2. Куча процесса. Сомнительно, т.к. в PEB ProcessHeap равно NULL.
Больше ничего в голву не приходит.