ZwUnmapViewOfSection + VirtualAllocEx
От: Ignatich  
Дата: 09.12.07 08:37
Оценка:
Гружу PE из памяти в процесс как завещал дедушка Нэбэт.
Работает, но иногда обламывается.

ZwUnmapViewOfSection (handle, imgBase) -> OK
VirtualAllocEx (handle, imgBase, size, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE) -> FAILED

Ошибка ERROR_INVALID_ADDRESS или STATUS_CONFLICTING_ADDRESSES если использовать NtAllocateVirtualMemory.

Пробовал перед Alloc делать VirtualFreeEx — толку ноль. Потом попробовал весь нужный диапазан обходить с помощью
VirtualQueryEx и принудительно удалять несвободные блоки — помогает, но иногда процесс стартует, но не пашет.

Можно конечно создавать процессы в цикле пока не получиться, но это ж бред :\ Нужно что бы работало как часы (не китайские).

Надо сказать что дело было под вистой. Мб какая аномалия связанная с ASLR. Помогите разобраться!
Для тесту возьмите широкоизвестный loadexe.cpp, но в качестве "инкубатора" используйте не calc.exe
(с ним работает), а скажем iexplore.exe.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.