Безопасность программного обеспечения компьютерных систем


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


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

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

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

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

  • зашифрованную секретную часть;

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

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

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

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

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

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

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

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

  • обнуление секретного кода программы в оперативной памяти;

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

  • выполнение операций, которые невозможно было выполнить при запрете неконтролируемых прерываний;

  • освобождение всех незадействованных ресурсов компьютера и завершение работы программы.




Начало  Назад  Вперед