“Исключение Unknown software exemption (0x800000003) в приложении по адресу 0x0012FF6C”. Адрес 0x9912FF6C доказывает, что адрес возврата действительно подобран правильно и первый байт переданной строки получает управление.
Таким образом, вся информация, необходимая для вторжения на чужую машину получена, и злоумышленник может приступать к программной реализации атакующего кода, примеры которого были приведены в главе «Технология срыва стека» и дополнении «Использование срыва стека для запуска командного интерпретатора под Windows NT».
Под управлением Windows 9x ту же операцию выполнить намного проще, поскольку она позволяет узнать содержимое регистров и состояние стека нажатием на клавишу «сведения». На экране отобразится диалоговое окно наподобие изображенного на рисунке 080.
Наибольший интерес представляет значение регистра ESP, значение которого позволяет вычислить местоположение введенной строки в стеке. Значение регистра EBP, равного 0x5A5A5A5A говорит о том, что компилятор сгенерировал код, адресующий локальные переменные с помощью регистра EBP. Вполне возможно, что модификацией сохраненного значения EBP злоумышленнику удастся проникнуть на машину или, по крайне мере, «завесить» ее.
В штатную поставку Windows 9x, Windows NT 4.x, Windows 2000 входит утилита «Dr. Watson», предназначенная для выявления причин ошибок. При возникновении аварийной ситуации она сохраняет текущее состояние некорректно работающего приложения в файл протокола, в который (в зависимости от настоек) могут входить: содержимое регистров и состояние стека, истории трассировки и т.д.
Один из примеров протокола приведен ниже [333]. Он получен после возникновения исключения в результате переполнения буфера программы buff.demo.exe: