
- •Модульная архитектура технических средств защиты по от несанкционированного использования
- •Функционирование подсистем и модулей системы защиты по от несанкционированного использования
- •Электронные ключи hasp
- •Глава 1. Методы и средства обратного проектирования.
- •1.1. Понятие обратного проектирования
- •1.2. Основные приемы, используемые злоумышленником при отладке и дизассемблировании программного обеспечения
- •1.2.1. Специфика атак на модули проверки корректности ключевой информации
- •1.2.2. Специфика атак на модули проверки истечения временного срока работы программы или ограничения по количеству ее запусков
- •1.2.3. Отлов злоумышленником вызова WinApi функций при взломе по
- •1.3. Мониторинг событий
- •Глава 2. Методы противодействия обратному проектированию
- •2.1. Методы противодействия отладчикам
- •2.1.1. Защита от отладчиков реального режима
- •2.1.2. Защита от отладчиков защищенного режима
- •2.1.3. Методы, основанные на невозможности полного эмулирования отладчиком среды загрузки программы
- •2.2. Методы противодействия дизассемблированию программного обеспечения
- •2.3. Защита, основанная на человеческом факторе злоумышленника
- •Глава 3. Общие методы защиты программ от отладки и дизассемблирования
- •3.1. Использование недокументированных команд и недокументированных возможностей процессора
- •3.2. Шифрование кода программы
- •Глава 4. Эмуляторы процессоров. Использование эмуляторов для взлома и защиты программного обеспечения.
- •Глава 5. Защита исходных текстов программного обеспечения
- •Глава 6. Идентификация и аутентификация субъектов
- •6.1. Идентификация и аутентификация пользователей с использованием технических устройств
- •6.2. Идентификация и аутентификация с использованием индивидуальных биометрических характеристик пользователя
- •7. Защита от разрушающих программных воздействий
- •7.1. Понятие разрушающего программного воздействия
- •7.2 Модели взаимодействия прикладной программы и рпв
- •7.3 Компьютерные вирусы как класс рпв
- •7.4. Защита от рпв. Изолированная программная среда
- •Глава 8. Руководящие документы России
- •Приложение
- •6.1. Отладка программ в отладчике SoftIce
- •6.2. Дизассемблирование программ с помощью интерактивного дизассемблера Ida Pro
- •6.3. Редактор кода hiew
- •Лабораторные работы
2.1.2. Защита от отладчиков защищенного режима
Особенностью отладчиков защищенного режима является возможность их полной изоляции от выполняемой программы. В связи с этим, задача обнаружения отладчика в памяти стандартными средствами значительно усложняется.
Кроме этого, особенностью защищенного режима является введение специализированных отладочных регистров DR0 – DR7, предназначенных для отладочных целей (таких как установка точек останова на обращение к определенным адресам памяти и портам).
Отладчик защищенного режима запускается с нулевым уровнем привилегий CPL (Code Privelege Level), и полностью защищен от возможных воздействий со стороны отлаживаемой программы, которую он запускает с более низким уровнем привилегий. И взламываемая программа, при правильной реализации отладчика, уже не может «отравить» жизнь отладчику, "подпортив" регистры. Однако, в данном случае возможно определить наличие отладчика в оперативной памяти. При этом могут быть использованы следующие методы.
1. Один из методов основан на том, что при наличии отладчика в памяти, сама программа не может получить доступа к регистрам отладки – доступ к ним запрещен. Этот тип защиты можно отнести как к обнаружению отладчика в оперативной памяти, так и к невозможности полного эмулирования чистой среды загрузки программы.
…… |
|
Lea ebx, continue; |
Заносим в ebx адрес перехода |
Mov dr0,ebx; |
Записываем адрес перехода в dr0 |
Xor eax,ebx; |
Исключаем вероятность совпадения eax и ebx |
Mov eax, dr0; |
Читаем адрес перехода из dr0 |
Jmp ax; |
Переходим по данному адресу. Если доступ к регистру dr0 запрещен, то мы перейдем не по тому адресу и ход выполнения программы будет нарушен |
…… |
|
Используя невозможность доступа к регистрам отладки, можно прибегать к разнообразным трикам.
Трик 1. Шифрование кода программы с расшифровкой через отладочный регистр.
…… |
|
Mov eax,11111111h; |
Ключ, которым зашифрован код программы |
Mov dr0,eax; |
Сохраним ключ в отладочном регистре |
Xor eax,0СВСВСВСВh xor 11111111h; |
Кладем мусор в eax |
Mov eax,dr0; |
Возвращаем из регистра отладки ключ в eax |
Xor dword ptr cs:[hiddencode],eax; |
Расшифровываем код |
…… |
|
hiddencode: |
[зашифрованный код] |
Трик 2. Основан на том, что отладчики защищенного режима теряют одно трассировочное прерывание при установке DRx.
Это позволяет использовать трик, аналогичный трику 1 отладчиков реального режима (потеря трассировочного прерывания по команде pop ss).