Курсовая работа: Защита программы от нелегального копирования
7 – данная программа уже представляет собой стационарный вариант программы, т. е. константа Key в ней уже определена.
Любое неотрицательное значение результата свидетельствует об успешном создании стационарной копии и равно количеству еще не использованных установок программы на жесткий диск.
В ходе установки программа контролирует ключевую дискету, затем определяет характерные признаки данного ПК и заносит эти признаки в константу Key. Поскольку защищается только тот экземпляр программы, в котором вызвана функция SetOnHD, нужно предусмотреть соответствующий вариант запуска программы. Например, можно проанализировать ключи команды запуска с целью проверки специального ключа создания стационарного варианта или предусмотреть соответствующую опцию в диалоговом меню, создаваемом программой в ходе работы.
Функция RemoveFromHD осуществляет обратные действия: уничтожает текущую стационарную копию и соответствующим образом увеличивает запас неизрасходованных установок программы. Она возвращает одно из следующих значений:
1 – в привод ГД не вставлена дискета;
2 – в привод вставлена дискета неэталонного типа (емкостью не 1,44 Мб или нет скрытого сектора);
3 – дискета защищена от записи или при записи на нее возникла ошибка;
4 – данный вариант программы не скопирован предварительно на жесткий диск;
5 – ошибка доступа к жесткому диску (программа не может прочитать собственный файл или не может записать в него новое значение константы Key).
Любое неотрицательное значение свидетельствует об успешном удалении стационарной копии и равно количеству еще не использованных установок программы на жесткий диск.
Также прилагается программа TEST.EXE, которая иллюстрирует приемы работы с модулем F_Prot. Программа анализирует ключи запуска: если используется ключ /SET, осуществляется установка программы на жесткий диск, если ключ /REMOVE, уничтожается стационарная копия программы, если этих ключей нет в команде запуска, программа осуществляет контроль легальности копии. Ключевая дискета должна быть предварительно подготовлена с помощью программы Diskette.
Программа Diskette и модуль F_Prot используют модуль F_Disk, который предназначен для работы с диском на физическом уровне.
Заключение
В результате выполнения данного курсового проекта, был написан модуль для защиты программ от нелегального копирования. Данный модуль позволяет защищать как стационарные и мобильные варианты программ. Этот модуль подключается к программе, которую требуется защитить, и программа использует его функции. Если функция проверки легальности копии возвращает негативный результат, то, на свое усмотрение, программист может сделать так, чтобы программа или не запускалась или выводила предупреждающее сообщение и реализовывала не все свои возможности. Для защиты стационарного варианта программы используется проверка даты создания ПЗУ данного ПК, если она не равна эталонной, то копия считается нелегальной. Для защиты мобильного варианта программы на ключевой дискете была создана дорожка с секторами нестандартного размера. Первый сектор дорожки содержит информацию, о программе, защищаемой от нелегального копирования. Ключевая дискета была подготовлена с помощью программы Diskett. Для тестирования работы модуля была написана программа Test.exe. Она показала, что написанный модуль работает верно.
Список ссылок
1. Фаронов В.В. Турбо Паскаль (в 3-х книгах). Кн.3. Практика программирования. – М.: Учебно-инженерный центр «МВТУ – ФЕСТО ДИДАКТИК», 1993. – 304с.
2. Юров В., Хорошенко С. Ассемблер: учебный курс – СПб: Издательство «Питер», 2000. – 672с.
3. Расторгуев С.П., Дмитриевский Н.Н. Искусство защиты и «раздевания» программ. – М.: Совмаркет, 1991. – 94с.
4. Фролов А.В., Фролов Г.В. Аппаратное обеспечение IBM PC: В 2-х ч. Ч. 1. – М.: «ДИАЛОГ – МИФИ». 1992. – 208с.
5. Фролов А.В., Фролов Г.В. Аппаратное обеспечение IBM PC: В 2-х ч. Ч. 2. – М.: «ДИАЛОГ – МИФИ». 1992. – 208с.
ПРИЛОЖЕНИЕ
Тексты программ:
1 Текст модуля F_Disk
2 Текст модуля F_Prot
3 Текст программы Diskett
4 Текст программы Test.exe
1 ТЕКСТ МОДУЛЯ F_DISK
{===================} UNIT F_Disk; {=====================}
{
+-------------------------------------------------------------+