Недавно я прочитал текст о переполнении буфера, в котором упоминалось, что установка точек останова может немного сместить ваши адреса памяти.
Либо вы не поняли, что говорит этот текст, либо текст неправильный. Трудно сказать, какая из двух возможностей верна, поскольку вы не указали ссылку на текст или реальную цитату.
Обновление:
http://www.deadc0de.info/2009/11/08/solution-level5-of-smashthestack-io/
"как я сказал выше, наш обратный адрес полностью перезаписан
стек с C (0x43). Однако, когда вы устанавливаете свою точку останова на
printf () адрес может измениться. "
Это утверждение является поддельным. Установка точки останова не может и не будет изменять расположение стека, в котором хранятся %ebp
и обратный адрес.
Установка точки останова обычно не влияет на макет памяти, но может влиять на защиту страниц: для вставки точки останова отладчик обычно делает ptrace(PTRACE_POKETEXT, ...)
. Это может вызвать или не вызвать страницу .text
с записываемой точкой останова (в зависимости от ОС).
Что случилось?
Вы не предоставили достаточно данных, чтобы ответить на этот вопрос.