Введение в архитектуру компьютеров

Классификация и особенности программных методов защиты от копирования


Защитные механизмы по способу своего внедрения в защищаемый программный модуль могут быть пристыковочными и/или встроенными.

В пристыковочной защите работа модуля, ее осуществляющего, по времени не пересекается с работой защищаемого модуля. Как правило, сначала отрабатывает модуль защиты, затем – защищенный модуль. В этом случае обычно можно отследить момент передачи управления от пристыковочного модуля к защищаемому и обойти систему защиты без ее анализа.

Эффективной и надежной является та система, "взлом" которой достаточно долог и трудоемок. Основным параметром, определяющим эффективность средства защиты, является время, необходимое на снятие защиты.

Существуют две проблемы:

· не потеряет ли программа за время снятия ее защиты своей актуальности, т. е. не устареет ли ее информация;

· не превысят ли затраты на снятие защиты стоимости программы.

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

Более эффективной является встроенная защита, которая может отрабатывать как до начала, так и в процессе работы функционального модуля. Для создания эффективной встроенной защиты наиболее приемлемы такие защитные механизмы, которые проверяют какие-то специфические характеристики компьютера. Наиболее типичными характеристиками компьютера, к которым чаще всего осуществляется "привязка" защищаемой программы, являются:

· временные характеристики (быстродействие различных компонент компьютера: процессор, память, контроллеры и т. д.; скорость вращения двигателей дисководов; время реакции на внешние воздействия);

· тип микропроцессора и конфигурация машины (тип микропроцессора и разрядность шины данных, наличие и тип контроллеров внешних

устройств);

· характерные особенности компьютера (контрольная сумма BIOS; содержимое СМОS-памяти; длина конвейера шины данных; аномальные явления при программировании микропроцессора).


Временные характеристики компьютера в наибольшей степени отражают индивидуальные особенности машины. Однако ввиду нестабильности электронных элементов компьютера происходит нестабильность показателей быстродействия его компонент. Это приводит к усложнению защитного механизма, в функции которого должно входить нормирование замеренных временных показателей.

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

Еще одним интересным и эффективным способом защиты программ от несанкционированного копирования (НСК) является использование аномальных явлений, с которыми приходится сталкиваться при программировании микропроцессора. Информацию о них чаще всего можно получить лишь экспериментальным путем. Это такие особенности работы компьютера, которые являются исключением из общих правил его функционирования. В качестве примера такого аномального явления может служить потеря одного трассировочного прерывания после команд, связанных с пересылкой сегментных регистров. Это свойство может применяться для недопущения работы программы под отладчиком.

Наиболее эффективным методом программной защиты выполняемых программ от НСК является их защита на этапе разработки. Модули защиты могут располагаться в нескольких местах программы, что значительно затруднит работу "взломщика" по поиску в дизассемблированной программе тех мест, где производится проверка каких-либо параметров машины. Это особенно эффективно, если программа написана не на Ассемблере, а на языке высокого уровня (С, ПАСКАЛЬ и др.).

Можно отметить два существенных момента:

· не использовать для защиты нескольких программ стандартные программные модули;

· не оформлять эти модули в виде процедур и функций, вызов которых производится в основной программе.

Первое обусловлено тем, что стандартный защитный модуль может быть обнаружен "взломщиком" при сопоставлении нескольких защищенных таким образом программ.Этот модуль будет иметь один и тот же вид в дизассемблированных кодах различных программ.

Второе обусловлено легким поиском в дизассемблированной программе места вызова модуля защиты.

Все вышеизложенное позволяет сделать следующий вывод: для создания достаточно эффективной и надежной программной защиты от НСК необходим индивидуальный подход к созданию нестандартных механизмов защиты и включению их в основную программу на этапе ее разработки.


Содержание раздела