Сейчас на форуме: tyns777, cppasm, dutyfree, asfa (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Различие у ZwAllocateVirtualMemory на 7 и хп.
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 13 января 2017 23:37 · Поправил: mazaxaker
· Личное сообщение · #1

Пробую выделить память по нулевым адресам, на хп выделяет, а на 7 возвращает 0xC00000F0=STATUS_INVALID_PARAMETER_2
Пробую так:
Code:
  1.          LPVOID addr = ( LPVOID )0x1;
  2.          SIZE_T size = 0x1000;
  3.          int ercod=(int)ZwAllocateVirtualMemory( ( HANDLE ) -1,&addr, 0, &size, MEM_COMMIT | MEM_RESERVE , PAGE_EXECUTE_READWRITE );

Почему-то если адрес меньше 10000 (подсмотрел в virtualalloc), то на 7 отказывает в памяти там. Отключил DEP, думал он тут мешает, но и с отключенным не выдает так память.
Как бы узнать, почему на 7 отказывает по нулевому адресу выдать память, пробовал windbg, но он почему-то проскакивает sysenter.
Кстати исходников нету этих ntdll ?)




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 26 января 2017 22:46
· Личное сообщение · #2

mazaxaker

Есно, кольца защиты лол

-----
vx





Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 13 февраля 2017 04:29 · Поправил: difexacaw
· Личное сообщение · #3

Может не совсем по теме, но это важный момент.
Нет ядра старших версий что бы посмотреть, но в 8-ке введена следующая проверка. При вызове аллокатора проверяется валидность стека:

TEB.DeallocationStack <= rEsp < TEB.StackBase

Где StackBase это верхний предел стека, DeallocationStack это базовый адрес его(но не текущий нижний предел TEB.StackLimit).

Если при такой проверке окажется что указатель стека находится не в указанных пределах, разворачивается исключение #STATUS_STACK_BUFFER_OVERRUN и процесс завершается.

Это обламает переключение стека, без должной поправки в TEB. Введено для детекта ROP-переключения стека на код.

226d_13.02.2017_EXELAB.rU.tgz - 1.png

-----
vx



<< . 1 . 2 .
 eXeL@B —› Вопросы новичков —› Различие у ZwAllocateVirtualMemory на 7 и хп.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати