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


         

Информационный Блок Потока) для поиска


1 – возникла исключительная ситуация;
2 – операционная система анализирует TIB (Thread Information Bock – Информационный Блок Потока) для поиска первого SEH-фрейма в цепочке;
3 – операционная система передает управление первому SEH-обработчику;
4 – обработчик прикидывается шлагом и уходит в отказ;
5 – операционная система переходит к следующему фрейму в цепочке;
6 – операционная система передает управление SEH-обработчику;
7 – и этот обработчик не знает, что делать с исключением;
8 – операционная система переходит к следующему фрейму;
9 – операционная система передает управление SEH-обработчику;
10 – этот обработчик обрабатывает исключение (не обработать его он не может, т.к. это первичный обработчик, просто прихлопывающий приложение от безысходности)

Для исследования структурных обработчиков исключений, напишем нехитрую программку, трассирую SEH-фреймы и выводящую их содержимое на экран. Законченная реализация может выглядеть, например, так:

main(int argc, char **argv)

{

       int *a, xESP;

       __try{

              __asm{

                     mov eax,fs:[0];

                     mov a,eax

                     mov xESP, esp

              } printf(     "ESP                            : %08Xh\n",xESP);

             

              while((int)a != -1)

              {

                     printf(       "EXCEPTION_REGISTRATION.prev    :%08Xh\n"\

                           "EXCEPTION_REGISTRATION.handler :%08Xh\n\n", a, *(a+1));

                     a = (int*) *a;

              }

       }

       __except (1 /*EXCEPTION_EXECUTE_HANDLER */) {

              printf("exception\x7\n");

       }

       return 0;

}

Листинг 2 простой визуализатор SEH-фреймов

Откомпилировав программу и запустив ее на выполнение, мы получим следующий результат (естественно, адреса SEH-фреймов и обработчиков в вашем случае скорее всего будут другими):

ESP                            : 0012FF54h      ; текущий указатель вершины стека


Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий