SEH на службе контрреволюции


         

сформированный ключевым словом 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
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий