Дюсенов Руслан
Казахский
агротехнический университет им. С.Сейфуллина, г. Астана, Казахстан
Защита программ не стандартными приёмами
Большая часть программ
распространяются в виде исполняемого файла. Ради взлома программы с целью пиратства машинный код должен быть,
предварительно, переведен в ассемблерное представление. Этакий процесс носит
название дизассемблирования. В случае если удастся создать неразрешимой задачу
взломщика еще на этом этане исследования программы, шансы на сохранность
интеллектуальной собственности станут стопроцентными.
Цели а также
разновидности дизассемблирования
Анализировать программы
дозволено следующими способами:
Во-первых, динамический
или отладка - анализируется программный код во время исполнения (в пошаговом
режиме или при помощи статического разбора снятого «Dump» программы).
Во-вторых, статический
или дизассемблирование - исследуя программный код записанный в исполняемом
файле, физически настоящий файл не исполняя.
Приёмы охраны от
динамического разбора безуспешны при разборе статическом, однако приёмы охраны
от статического безуспешны при динамическом. Поэтому с целью надёжной охраны
программы требуется применять приёмы против всех типов разбора. Основными
целями отладки а также дизассемблирования являются изменение кода (с целью
обхода охраны от копирования, извлечения/изменения функциональности).
Не стандартные приёмы
защиты
Первый средство
запутывания - это использование недокументированных/нестандартных команд.
Существует вероятность, что сейчас дизассемблер, руководствуясь соображениями
правдоподобия, примет такие команды за другое, и ошибётся.
Главный его изъян - это
одноразовость. После однократного обнаружения недокументированной команды она
становится известной, заносится в базу команд дизассемблера а также становится
документированной.
Разновидность данного
подхода, пригодная с целью борьбы вместе с отладкой, использование известных
ошибок известных отладчиков а также антивирусных анализаторов.
Следующий очень
эффективный метод - это использование перекрывающихся инструкций. В практике
предпринималась поползновение включить метод запутывающих преобразований.
Результаты оказались такими: эффективность крайне высока, однако велика
трудоёмкость. Тем далеко не более, в многих случаях дозволено искусственно
принять перекрывание инструкций.
Основной плюс метода -
известные дизассемблеры отнюдь не способны интерпретировать один а также тот же
участок кода другим способом, еще однажды поставив ему в соотношение последовательность
команд. Задача полного рассмотрения всех вариантов в случае применения
перекрывания инструкций едва ли не невыполнима.
Таким образом, дозволено
сформулировать следующую исследовательскую задачу: соорудить систему
эквивалентных преобразований бинарного кода, направленных на получение как
будто дозволено большего числа перекрывающихся инструкций.
Приём против отладки
дешифратора - применять в качестве кода ради расшифровки динамически
вычисляемый CRC кода самого дешифратора.
Считаем CRC (Cyclic
Redundancy Code) первого дешифратора, дозволено брать различные функции от кода
дешифратора. Нужно затем чтобы нельзя было установить точку остановки на
главный дешифратор а также перехватить управление. Крапинка остановки обновляет
байт в том месте, в каком месте она расположена, а также CRC станет посчитан
неверно. Ради невозможности установки аппаратной точки остановки должен быть применять
аппаратные регистры контроля точек остановки.
При помощи получившегося
CRC первым дешифратором расшифровываем второй дешифратор.
Второй дешифратор
расшифровывает основной код, расшифровывать код нужно в динамически выделяемую область памяти.
Заключение
Существует огромное
количество способов затруднить дизассемблирование программы. Наиболее надёжной
защитой представляется многоуровневое шифрование кода в совокупности
Литература:
1. Зегжда Д.П.
Ивашко А.М.
Как построить защищенную информационную систему. СПб. НПО "Мир и
семья-95" 1997. – 286 с.
2. Щербаков А.Ю.
Современная компьютерная безопасность. Теоретические основы. Практические
аспекты. Книжный мир, 2009 г – 352 с.
3. Расторгуев С.П., Дмитриевский Н.Н. Искусство защиты и раздевания
программ. - М.: Совмаркет, 1991. - 94 с.