Переполняющиеся буфера - активные средства защиты

         

дизассемблерный код, раскрывающий сущность механизма Ret Range Checking


Усилилась и защита локальных переменных. Теперь перед вызовом функции по указателю, Stack-Shield убеждается, что она находится в пределах сегмента кода (см. листинг 9):

                           ; // в eax

находится указатель на функцию

       cmp eax, offset shielddatabase

                           ; // проверяем границы указателя

      

       jbe

.LSHIELDCALL     ; // если указатель в границах, прыгаем на вызов функции

      

       mov eax,1            ; // указатель на функцию выходит за допустимые границы

       movl ebx,-1          ; // возможно, он был хакнут

       int 80h                    ; // завершаем выполнение программы

      

.LSHIELDCALL:

       call

[eax]           ; // вызываем функцию по указателю



Содержание раздела