Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PASOIB.doc
Скачиваний:
119
Добавлен:
17.09.2019
Размер:
4.95 Mб
Скачать

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).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]