Разработка приложения, способного защищать исполняемые файлы, страница 3

Программы защиты можно также разделить на те, которые выполняют проверку на легальность запуска только в момент запуска, и те, механизм защиты, в которых распределён по всему коду, и проверки производятся многократно, что усложняет «взлом» защиты. Ещё одним признаком классификации является характер действий, производимых в случае «нелегального» доступа — возможна как полная блокировка выполнения программы, так и частичное ограничение её функциональности (обычно применяется в ShareWare программах или в других схемах отложенной оплаты).

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

Варианты реализации защиты паролем

Существует несколько способов защитить исполняемый файл паролем, рассмотрим несколько из них:

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

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

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

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

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

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

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

Создание незащищенной копии

Требует задания конкретной директории

Сложность

1 вариант

+

+

низкая

2 вариант

-

-

высокая

3 вариант

-

-

средняя

Для разработки курсового проекта выберем 3 вариант, как наиболее оптимальный и интересный


Разработка программы

Описание формата Portable Executable(PE)

С момента появления на рынке операционных систем ОС Windows NT 3.1 произошло достаточно много изменений. Однако одна из многих концепций, появившихся при выходе этой ОС, осталась неизменной по сегодняшний день. Это – формат исполняемого файла.

За основу разработки нового формата исполняемого файла была взята спецификация COFF (Common Object File Format), используемая в ОС семейства UNIX. Для сохранения совместимости со старыми ОС типа MS-DOS, Windows 3.x в новом формате файла были сохранены старые MZ-заголовки.