Теория и практика защиты программ


         

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


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

В первом случае защита может быть основана на шифровании конфиденциальной части программы, а во втором - на блокировании доступа к исполняемому коду программы в оперативной памяти со стороны отладчиков [ЗШ]. Кроме того, перед завершением работы защищаемой программы должен обнуляться весь ее код в оперативной памяти. Это предотвратит возможность несанкционированного копирования из оперативной памяти дешифрованного исполняемого кода после выполнения защищаемой программы.

Таким образом, защищаемая от исследования программа должна включать следующие компоненты:

·     инициализатор;

·     зашифрованную конфиденциальную часть;

·     деструктор (деициниализатор).

Инициализатор должен обеспечивать выполнение следующих функций:

·     сохранение параметров операционной среды функционирования (векторов прерываний, содержимого регистров процессора и т.д.);

·     запрет всех внутренних и внешних прерываний, обработка которых не может быть запротоколирована в защищаемой программе;

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

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

Конфиденциальная часть программы

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

Деструктор после выполнения конфиденциальной части программы должен выполнить следующие действия:

·     обнуление конфиденциального кода программы в оперативной памяти;

·     восстановление параметров операционной системы (векторов прерываний, содержимого регистров процессора и т.д.), которые были установлены до запрета неконтролируемых прерываний;



Содержание  Назад  Вперед