Сейчас на форуме: asfa, bartolomeo, hgdagon (+6 невидимых)

 eXeL@B —› Программирование —› стек - (хочу сделать доступным самое дно)
Посл.ответ Сообщение

Ранг: 79.6 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 10 февраля 2006 13:02 · Поправил: doctor Ice
· Личное сообщение · #1

push eax
mov eax, esp

push eax
push PAGE_READWRITE
push 4096


mov eax, d_w_p [fs:NT_TEB.NtTib+NT_TIB.StackBase]
sub eax, d_w_p [fs:NT_TEB.NtTib+NT_TIB.StackLimit]
add eax, 4096
push eax

call VirtualProtect

GetLastError возвращает 1e7 тоесть жалуется на неверный адрес.


в чем проблема?

-----
power and the money money and the power




Ранг: 20.9 (новичок)
Активность: 0.010
Статус: Участник

Создано: 10 февраля 2006 18:07
· Личное сообщение · #2

doctor Ice
Если мне память не изменяет, на дне стека находится зарезервированная (сторожевая) страница, при обращении к которой генерируется эксепшн. И ей физическая память никогда не выделяется.



Ранг: 79.6 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 11 февраля 2006 08:12
· Личное сообщение · #3

нет не обязательно на дне. она может быть и в середине при возникновении эксепшена страница проверяется последняя ли она и если нет то сторожевая страница сдвигается вниз (ну нафик весь неиспользуемый стек держать в памяти). да последнюю и правда нельзя делать доступно но проблема в том что и на предпоследнюю и дажена первую виртуал протект ругается как на недопустимый адрес.

зы.
по поводу сдвига сторожевой это только догадки =)

-----
power and the money money and the power



 eXeL@B —› Программирование —› стек - (хочу сделать доступным самое дно)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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