Я хочу найти шаблон в память текущего процесса. Я запрашиваю страницы памяти с помощью VirtualQuery для извлечения интересующих диапазонов. Проблема заключается в том, что после 5 минут непрерывного цикла программа вылетает из stackoverflow. Размер выделенной памяти по процессу становится больше.инструкция lodsb вызывает переполнение стека
Проблема заключается в этом цикле:
valid_range:
pushad
mov eax, [ebp]
mov esi, [eax] ; memory range start
mov ecx, [eax + 12] ; memory range size
xor eax, eax
loopmem:
lodsb ; this causes stackoverflow after certain time ????
dec ecx
cmp ecx, 0 ; we loop trough memory until we finish it
; reduced the code to minimum
je finish_range
jmp loopmem
finish_range:
popad
ret
если я закомментировать LODSB все идет гладко – opc0de
Это немного странно, вы получите переполнение стека, но вы можете убедиться, что вы только прикоснуться к страницам, которые совершаются и не установлен атрибут PAGE_GUARD. –
Да выглядит так, что диапазон памяти был неправильным, но все еще не может объяснить, почему чтение памяти увеличивает его. – opc0de