сформированный ключевым словом try, лежит
EXCEPTION_REGISTRATION.prev : 0012FF70h ; "пользовательский" SEH-фрейм
EXCEPTION_REGISTRATION.handler : 004011C0h ; "пользовательский" SEH-обработчик
EXCEPTION_REGISTRATION.prev : 0012FFB0h ; SEH-фрейм
стартового кода
EXCEPTION_REGISTRATION.handler : 004011C0h ; SEH-обработчик
стартового кода
EXCEPTION_REGISTRATION.prev : 0012FFE0h ; первичный SEH-фрейм
EXCEPTION_REGISTRATION.handler : 77EA1856h ; SEH-обработчик
по умолчанию
Листинг 3 раскладка SEH-фреймов в памяти
Смотрите, "пользовательский" SEH-фрейм, сформированный ключевым словом try, лежит в непосредственной близости от вершины стека текущей функции и его отделяют всего 1Сh байт (естественно, конкретное значение зависит от размера памяти, выделенной под локальные переменные, ну и еще кое от чего).
Следующим в цепочке идет фрейм, сформированный стартовым кодом. Он расположен намного ниже – от вершины стека его отделяют аж 5Сh байт и это-то в демонстрационной программе, содержащей минимум переменных!!!
Первичный фрейм, назначаемый операционной системой, отстоит от вершины стека на целых 8Сh байт, а в реальных полновесных приложениях и того больше (идентифицировать первичный фрейм можно по "ненормальному" адресу SEH-обработчика, лежащего в старших адресах первой половины адресного пространства). Его линейный адрес, равный 12FFE0h, идентичен для первого потока всех процессов, запущенных в данной версии операционной системы, что создает благоприятные условия для его подмены. Однако, для гарантированного перехвата управления, shell-код должен перехватывать текущий, а не первичный обработчик, поскольку до первичного обработчика исключение может и не дожить. Проверьте: если при переполнении буфера бессмысленной строкой наподобие "XXXXX…", возникает стандартное диалоговое окно критической ошибки, подменять первичный обработчик можно, в противном случае, его перезапись ничего не даст и shell-код сдохнет прежде, чем успеет получить управление.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий