Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ЗКИ.docx
Скачиваний:
0
Добавлен:
21.01.2020
Размер:
1.06 Mб
Скачать

Защита от отладчиков защищенного режима

Особенностью отладчиков защищенного режима является возможность полной их изоляции от выполняемой программы. В связи с этим, задача обнаружения отладчика в памяти стандартными средствами значительно усложняется. Особенностью защищенного режима является введение специализированных регистров DR0 – DR7, предназначенных для отладочных целей (таких, как установка точек останова, в том числе на обращение к определенным адресам памяти и др.).

Один из способов противодействия отладчикам защищенного режима заключается в манипулировании регистрами отладки DR0-DR7. При наличии отладчика в памяти сама программа либо не может получить доступа к регистрам отладки, либо нарушит работу самого отладчика, например,

……

Lea ebx, continue;

Заносим в ebx адрес перехода

Mov dr0,ebx;

Записываем адрес перехода в DR0

Xor eax,ebx;

Исключаем вероятность совпадения eax и ebx

Mov eax, dr0;

Читаем адрес перехода из DR0

Jmp ax;

Переходим по данному адресу. Если доступ к регистру DR0 запрещен, то мы перейдем по неверному адресу и ход выполнения программы будет нарушен

……

Используя данную особенность защищенного режима можно прибегать к разнообразным трикам.

Трик 5. Шифрование кода программы с расшифровкой через отладочный регистр

……

Mov eax,11111111h;

Ключ, которым зашифрован код программы

Mov dr0,eax;

Сохраним ключ в отладочном регистре

Xor eax,0СВСВСВСВh;

Кладем мусор в eax

Mov eax,dr0;

Возвращаем из регистра отладки ключ в eax

Xor dword ptr cs:[hiddencode], eax;

Расшифровываем код

……

hiddencode:

[зашифрованный код]

Для противодействия отладчикам защищенного режима можно через определенные, достаточно малые интервалы времени производить чистку регистров DR0-DR7.

Трик 6

Данный три основан на том, что отладчики защищенного режима теряют одно трассировочное прерывание при установке регистров DRx. Использование данного трика аналогично трику 1 (потеря трассировочного прерывания по команде pop ss).

Достаточно часто разработчики отладчиков допускают ошибки или специально оставляют дырки в своих продуктах. Нередко, это вызовы API функций, которые могут быть доступны отлаживаемой программе. Одной из таких дырок «страдает» наиболее распространенный отладчик защищенного режима SoftIce.

Пример 9.2. Определение наличия SoftIce в оперативной памяти из отлаживаемой программы

……

Mov bx,202h

Mov ax,1684h

Xor di,di

Int 21h;

Если функция не определена, то di останется неизменным

Or di,di

Jnz SoftIceDectected

У SoftIce данная функция занята

……

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

Преимущества защиты от отладки с помощью перечисленных методов в том, что трики между собой не связаны, их можно очень легко применять. Недостатками данных методов является то, что они предназначены для защиты только от начинающих взломщиков, профессионалы их обойдут. Трики, как правило, включаются в программу по правилу «чем больше, тем лучше» и от их исключения логика работы программы не меняется. В некоторых случаях совокупный размер кодов триков сравним с размером программы.