Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Лекция 15.ppt
Скачиваний:
115
Добавлен:
28.06.2014
Размер:
851.97 Кб
Скачать

Защита программных

средств от изучения

Противодействие использованию отладчиков.

Противодействие дизассемблерам и декомпиляторам.

Искусственное запутывание механизма защиты (obfuscation, обфускация) как общий метод защиты.

Методы «снятия» защиты

Изучение алгоритма проверки ключевой информации для генерации правильных регистрационных ключей (например, программной эмуляции работы поставляемого с программой USB-ключа).

Изучение алгоритма проверки ключевой информации для отключения работы соответствующего участка кода программы защиты.

Противодействие

использованию отладчиков

1.Обнаружение работы программы под управлением отладчика или программы мониторинга типа FileMon или RegMon.

2.Реакция на обнаружение отладчика.

программы под управлением

отладчика

• Использование функций из набора Windows API (EnumWindows, IsDebuggerPresent, функций библиотеки toolhelp.dll).

• Проверка установки точек прерывания (байт 0xCC) на функции программы или Windows API.

• Изучение переменных системного окружения (функция Windows API GetEnvironmentStrings).

• Измерение времени выполнения критических участков кода программы.

Реакция на обнаружение

отладчика

1.Вызов аварийного завершения отладчика:

«порча» стека или вызов функции Windows API DestroyWindow для главного окна отладчика;

некорректное взаимодействие с отладчиком по протоколам DDE или COM (передача «мусора», преждевременный вызов метода Release).

2.Выключение механизма защиты (для «обмана» взломщика и выигрыша о времени).

Противодействие

дизассемблированию

Создание самомодифицирующегося кода (шифрование и расшифрование фрагментов кода, полное изменение исполнимого кода путем замены команд на эквивалентные в соответствии с некоторой таблицей и т..). Требуется использование языка ассемблера.

Использование методов запутывания (обфускации).

Методы запутывающего кодирования

1.Лексические трансформации (запутывание кода).

2.Запутывание структур данных.

3.Изменение потока выполнения программы.

Запутывание кода

1. Асимметричная криптография:

Данные, представленные покупателем, шифруются на закрытом ключе изготовителя и передаются покупателю вместе с защищенной программой и открытым ключом.

При запуске программы блок проверки расшифровывает сохраненные данные с помощью открытого ключа и сравнивает их с информацией, введенной пользователем.

Запутывание кода

2.Использование при проверке ключевой информации необратимой функции (например, хеширования).

3.Использование функции преобразования проверяемых данных F (Y=F(X)), являющейся суперпозицией функций H1 и H2, и реализация в системе защиты Z1=H1 (X), Z2=H2-1(Y), сравнения Z1 и Z2 (X – хранящийся в системе защиты эталон, Y – вводимая информация).

Запутывание кода

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

5.Имитация проверки введенных данных в разных местах программы.

6.Использование в программе различных функций с одинаковым действием.

Соседние файлы в папке Лекции