Если в OllyDbq Внести с адреса 00401000 PUSH EAX JMP SHORT 00401000 RETN То EBP показывает не глубину стека, а адрес с которого начинает вносить в стек Самое начало стека его верхний адрес 12FF94 В начале ESP показывает, что будет в носить в стек не с 12FF94, а с адреса 12FF8C Далее после выполнения команды останавливается на адресе 33000 ESP показывает последний внесённый адрес как 33000, а не 000000 Получается, что стек в данном случае равен с 12FF8C по 33000 FCF8C - адресов по 32 byt dword Как стек увеличить
VictorV79 1. Загрузить необходимые предалы в TEB. Предположу что сейчас вопрос возникнет как дефолтный размер стека определить - ProcessImageInfomation -> SECTION_IMAGE_INFORMATION. 2. Обратитбся к сторожевой странице, ядро расширит стек на страницу, выполнить в цикле до необходимого размера.
Что нибудь скажите может вообще не по делу написал Происходит переполнение стека как его продолжить толком не пойму на Ассемблере вот так Masm32 .code q123: q124: push eax jmp q124 retn end q123
Clerk Вы хоть начали вопрос-то читать? Какая сторожевая страница? VictorV79 вышел уже за пределых SizeOfStackReserve. VictorV79 Открыть образ PE-редактором и подредактировать поле PE-заголовка SizeOfStackReserve на то, какое понравится. А один мегабайт по умолчанию. Либо масму (компоновщику) указать соответствующий ключ (см. документацию на масм).
вот так расширяется стек push PAGE_EXECUTE_READWRITE push MEM_COMMIT push 1000000h push 0 call VirtualAlloc lea esp, [eax+1000000h - 4] Процедуру выполнять строго после точки входа
Да отлично получилось Благодарен .code q123: push PAGE_EXECUTE_READWRITE push MEM_COMMIT push 1000000h push 0 call VirtualAlloc lea esp, [eax+1000000h - 4] q124: push eax jmp q124 retn end 123
Можно наверно и так lea esp, [eax+1000000h - 4] lea esp, [eax+1000000h - 1] Можно и не ставить как я понял lea esp, [eax+1000000h]
intel_x128 Ну посмотрим, как потом VictorV79 после такого "расширения стека" по ret'у выход из программы делать будет...
l_inc Человек начинающий. Не ищите геморрой там, где его нет по определению Код (Text): ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; расширяем стек ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; push PAGE_EXECUTE_READWRITE push MEM_COMMIT push 1000000h push 0 call VirtualAlloc lea esp, [eax+1000000h-4] lea eax, dword ptr [ExitProcess] push eax
получится получилось теперь буду разбирать, что там masm32\include выполняет или наверно точнее сказать инструкции invoke