Для домашнего задания я выполняю серию атак на переполнение буфера. Мне дали программу для дизассемблирования, исходный код на C для функции, которая неправильно вызывает gets()
, и исходный код для нескольких других функций, которые я должен заставить программу вызывать. Для одной из задач мне нужно:
- Введите код, который изменяет значение, затем
- Вернитесь к одному из вышеупомянутых методов.
Главное, что я не понимаю, куда программа смотрит в стеке при определении, куда возвращаться. Где находится адрес возврата для метода, хранящегося в стеке?
Программа скомпилирована для x86.
call
иret
. Если у вас есть это, вы можете попытаться узнать, что такое стековый фрейм. - person David J   schedule 01.11.2012