Как влияет установка точек останова в GDB на адресное пространство? - PullRequest
0 голосов
/ 03 января 2012

Я недавно прочитал текст о переполнении буфера, в котором упоминалось, что установка точек останова может немного сместить ваши адреса памяти.Я думаю, что столкнулся с этой проблемой на днях при попытке перезаписать EIP: эксплойт, казалось, работал, когда я не установил точку останова, но вызвал segfault, когда была установлена ​​точка останова.Что случилось?

Спасибо!

1 Ответ

0 голосов
/ 03 января 2012

Недавно я прочитал текст о переполнении буфера, в котором упоминалось, что установка точек останова может немного сместить ваши адреса памяти.

Либо вы не поняли, что говорит этот текст, либо текст неправильный. Трудно сказать, какая из двух возможностей верна, поскольку вы не указали ссылку на текст или реальную цитату.

Обновление:

http://www.deadc0de.info/2009/11/08/solution-level5-of-smashthestack-io/

"как я сказал выше, наш обратный адрес полностью перезаписан стек с C (0x43). Однако, когда вы устанавливаете свою точку останова на printf () адрес может измениться. "

Это утверждение является поддельным. Установка точки останова не может и не будет изменять расположение стека, в котором хранятся %ebp и обратный адрес.

Установка точки останова обычно не влияет на макет памяти, но может влиять на защиту страниц: для вставки точки останова отладчик обычно делает ptrace(PTRACE_POKETEXT, ...). Это может вызвать или не вызвать страницу .text с записываемой точкой останова (в зависимости от ОС).

Что случилось?

Вы не предоставили достаточно данных, чтобы ответить на этот вопрос.

...