Старые антиотладочные приемы на новый лад


         

под отладчиком происходит переход на


       pop eax                           ; выталкиваем его содержимое в регистр eax

       or ah, 1                   ; взводим флаг TF

       push eax                   ; кладем eax

в стек

       popf                       ; выталкиваем его содержимое в регистр флагов

                                  ; теперь флаг трассировки взведен!

      

       jmp under_debugger         ; после выполнения этой команды генерируется

                                  ; исключение и если отладчик не установлен,

                                  ; его перехватывает SEH-обработчик, который

                                  ; корректирует EIP и эта команда не выполняется

                                  ; под отладчиком происходит переход на ветку

                                  ; under_debugger

       //

       ...                        ; основной код программы

       //

      

       ; SEH-обработчик. может быть расположен в любом месте

       ; (лучше расположить его подальше от защитного кода,

       ; чтобы он не так бросался в глаза)

SEH_handler:

       mov esi, [esp+0ch]   ; указатель на контекст регистров

       assume esi: PTR CONTEXT

       mov [esi].regEip, offset continue

                                  ; откуда продолжать выполнение

                                  ; в отсутствии отладчика

       xor eax, eax

       ret                        ; выход из SEH-обработчика

continue:

       ; // отсюда будет продолжено управление, если отладчик не установлен


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





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