Реферат: Защита программы от нелегального копирования

Министерствообразования и науки Украины

ПОЯСНИТЕЛЬНАЯЗАПИСКА

к курсовомупроекту

на тему «Защитапрограммы от нелегального копирования»

по курсу «Кодированиеи защита информации»

2004


Содержание

Введение

1    Описание существующих методов

Проверка типа ПК и версии ДОС

Проверка даты изготовления иконтрольной суммы ПЗУ

Проверка места расположения файла надиске

Проверка состава аппаратных средств

Использование скрытых частейпрограммы и особенностей физических носителей информации

2    Обоснование выбора используемого метода

3    Описание программы

Заключение

Список ссылок

Приложение


Введение

В данном курсовом проектерассматривается проблема создания программы, нелегальное (без ведомаофициального распространителя) копирование которой приводит к потере программыспособности нормально работать.

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

В соответствии смеждународным правом труд автора программы приравнен к труду других творцовинтеллектуальной собственности, таких как писатели, музыканты, художники, иподлежит защите. Однако в отличие от книги или картины массовое копированиепрограммы не вызывает каких-либо технических трудностей и не требуетспециального оборудования (если, разумеется, не считать ПК). В отношениипрограмма намного беззащитнее, чем, скульптура или книга. Общий ущерб отнелегального копирования программ по оценкам западных экспертов составляет от 2до 10 млрд. долларов в год [1].

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

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


1. Описаниесуществующих методов

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

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

Анализ индивидуальныхпризнаков среды подразумевает, какими специфическими признаками может обладатьта программно-аппаратная среда, в которой работает программа. ДляIBM-совместимых ПК этими признаками могут быть:

— тип ПК и тип (версия)операционной системы;

— дата изготовления ПЗУBIOS и/или его контрольная сумма;

— физическое положениефайлов на дисковом носителе;

— состав аппаратныхсредств;

— наличие скрытых частейпрограммы;

— физические особенности(в том числе дефекты) носителя.

Некоторые из этихпризнаков очень индивидуальны (например, физические особенности некачественногоносителя), другие обладают меньшей индивидуальностью (тип ПК, версия ДОС). Программаможет использовать один или несколько признаков для проверки легальности копии.При этом особое значение приобретает способ использования программы: если программарассчитана на работу на конкретном ПК, выбираются одни признаки, если она можетсвободно перемещаться с одного компьютера на другой без потериработоспособности, — другие. Назовем программы первого типа стационарными, авторого – мобильными. Защита тех и других программ имеет свои особенности,которые мы будем обсуждать.

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

1.1     Проверкатипа ПК и версии ДОС

Эти проверки оченьпросты, но не обладают высокой степенью индивидуальности в том смысле, чтомогут существовать многие сотни тысяч ПК одного типа, в которых используетсяодинаковая ДОС. Поэтому обычно эти проверки используются в сочетании спроверками других индивидуальных признаков, и предназначены для защитыстационарных программ.

Тип ПК записан в ПЗУ поадресу $F000:$FFFE, т. е. в предпоследнем байте мегабайтного адресного пространстваПК [4].

Версию ДОС можно получитьс помощью функции ДОС $30 [4]. При обращении к этой функции в регистре AL возвращается старший, а в AH – младший номера версии. Регистр ALможет содержать 0, если используется более ранняя ДОС чем 2.0.

Ценность этих проверокзаключается в их исключительной простоте, однако могут найтись тысячиоднотипных компьютеров, на которых используется одинаковая версия ДОС, поэтомуограничиваться только этими проверками вряд ли имеет смысл.

1.2     Проверкадаты изготовления и контрольной суммы ПЗУ

Постоянное запоминающееустройство (ПЗУ) является неотъемлемой составной частью любого IBM – совместимого ПК. Содержимое ПЗУучитывает особенности реализации конкретного ПК и может отличаться в компьютерахразного типа. Более того, в конце ПЗУ (по адресу $F000:$FFF5) обычнозаписывается дата его изготовления, поэтому даже для ПК одного типа (и одной итой же фирмы-изготовителя) контрольная сумма ПЗУ отличается в разныхэкземплярах ПК. Дата изготовления ПЗУ занимает 8 смежных байт. Данные хранятсяв символьном виде в формате ММ/ДД/ГГ [1],[4].

Как показывает практика,любая уважающая себя фирма-изготовитель ПЗУ для IBM – совместимых ПК тщательноследит за корректностью этой даты. Конечно, каждый день во всем миреизготавливаются тысячи микросхем ПЗУ с одинаковой датой, однако вероятностьтого, что где-то используется ПК того же типа и с такой же датой изготовления,как и у компьютера владельца программы крайне мала. Разумеется, при массовойзакупке ПК, например для оснащения учебного класса, многие или даже всеодновременно приобретенные компьютеры могут иметь одну и ту же датуизготовления ПЗУ. Однако в таких случаях способность защищенных программсвободно переноситься с одного родственного компьютера на другой можно рассматриватькак вполне естественную. Эта проверка используется для защиты стационарных программ.

1.3     Проверкаместа расположения файла на диске

Хорошей индивидуальностьюобладает физический номер кластера, начиная с которого на жестком дискерасполагается файл с защищенной программой. Действительно, вряд ли что-либодругое в аппаратно-программной среде ПК (кроме, разумеется, содержимогооперативной памяти) меняется столь же динамично, как файловая структуражесткого диска. При создании легальной копии номер начального кластера дляфайла программы на жестком диске в общем случае совершенно случаен. Если вмомент запуска программа проверит этот номер, то в подавляющем большинствеслучаев она легко обнаружит факт нелегального копирования. Тем не менее, такойспособ защиты нельзя считать идеальным по многим причинам. Проверка номеракластера выполняется далеко не так просто, как проверка типа ПК или датыизготовления ПЗУ, поскольку в стандартном Турбо Паскале нет средств для работыс дисками на физическом уровне. Однако главный недостаток заключается в другом:любое изменение местоположения файла даже в пределах одного каталога приводит ктому, что ранее установленная копия становится нелегальной. Это крайне неудобнодля пользователя, в особенности, если он часто прибегает к процедурепереупорядочения файловой структуры с помощью дефрагментации жесткого диска.Если пользователь считает, что номер единственного кластера не обладаетнеобходимой степенью индивидуальности, то можно проверять цепочку кластеров потаблице FAT или начальные кластеры нескольких файлов. Разумеется, такаяпроверка может использоваться для защиты только стационарных программ [1],[3].

1.4     Проверкасостава аппаратных средств

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

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

Получение сведений оконфигурации ПК может быть осуществлено посредством чтения данных поопределенным адресам КМОП-памяти. Более подробно об этом написано в [1], [4],[5].

1.5     Использованиескрытых частей программы и особенностей физических носителей информации

Достаточно эффективнымспособом защиты (главным образом для мобильных программ) может служить созданиеи использование скрытых частей программы и/или особенностей физическихносителей информации [3].

Скрытые части программы –это участки дискового носителя, тем или иным способом связанные с программой,но не зафиксированные в качестве файлов ДОС. В подавляющем большинстве случаевпрограмме нет необходимости искусственно создавать такие участки, поскольку ониуже имеются в «хвосте» любого файла. Дело в том, что ДОС распределяет дисковоепространство кластерами, имеющими длину от 512 до 4096 и более байтов. Дажеесли полезная длина файлов составляет всего несколько байт, ДОС выделит такомуфайлу целый кластер, большая часть которого будет заполнена «мусором» — случайной информацией, сохранившейся от предыдущего использования кластера всоставе другого файла. При копировании файлов стандартными средствами ДОСкопируется только полезная часть кластера, так что на новом месте «хвост» файлав общем случае будет заполнен другой информацией [1].

Более изощренный, ноничуть не более эффективный способ защиты состоит в создании и использованиидополнительных скрытых кластеров. Такие кластеры могут помечаться в FAT каксбойные или «потерянные» (т. е. не относящиеся ни к какому зарегистрированномуфайлу). Во всех случаях, помещается ли ключ в хвост файла или в отдельныйкластер, защита может быть легко нейтрализована, если используется копированиедискеты «блок в блок» с помощью утилиты DISKCOPY или аналогичных несистемных программ.

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

Как показывает практика,лишь очень небольшое число дискет (менее 1%) имеет заводские дефектыизготовления, поэтому при массовом тиражировании коммерческих программприходится создавать такие дефекты искусственно. Для этого иногда используютсялазеры, а чаще – обыкновенная булавка. Однако следует иметь в виду, чтоцарапины и проколы на поверхности дискеты могут повредить считывающие головкинакопителя [1].

Недостатком описанногоспособа защиты являются относительно большие затраты времени на контроль всейдискеты и потеря работоспособности некоторой ее части. От этих недостатковможно избавится, если на дискете создать программным способом нестандартные дляДОС особенности [1]. Этими способностями могут быть:

— нестандартная длинасекторов на всей дискете или какой-либо одной ее дорожке;

— специальноерасположение (фактор чередования) секторов на дорожке;

— нестандартноеколичество дорожек.

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

Как известно, ДОС можетоперировать только с секторами длиной по 512 байт (исключением являетсясоздание утилитой VDISK виртуальных электронных дисков, размер секторов которыхможет отличаться от 512 байт). В то же время контроллеры ГД способны создаватьи использовать секторы другого размера – по 128, 256 или 1024 байт. Приобнаружении сектора нестандартного размера ДОС считает этот сектор сбойным, чтоможно использовать для защиты программы [5].

Далее, дорожки на дискетерасполагаются так, что самой внешней является нулевая дорожка, а самойвнутренней – дорожка с максимальным номером. Обычно ДОС использует одинаковоеколичество секторов на всех дорожках, поэтому угловой размер каждого секторапостоянен, а, следовательно, плотность записи информации растет с ростом номерадорожки. Количество секторов на дорожке и дорожек на дискете ДОС назначаетсятак, чтобы даже для самой внутренней дорожки эта плотность не превысиланекоторого значения, еще гарантирующего уверенную работу схем контроллера ГД.На практике оказывается, что подавляющее большинство современных контроллеровспособно обслуживать большее количество дорожек, чем принято в ДОС. В целяхзащиты от копирования программа может создать и использовать одну или несколькодополнительных дорожек, но не вносить их в список «видимых для ДОС», т.е. неизменять поле в загрузочном секторе, указывающее общее количество секторов надиске. Разумеется, возможен и другой вариант: можно «украсть» у ДОС несколькодорожек, уменьшив стандартное значение этого поля, однако нестандартная емкостьдискеты легко обнаруживается, что снижает эффективность защиты. Дополнительныедорожки могут отделяться от основной рабочей зоны дискеты неотформатированныминтервалом, что может затруднить их обнаружение специальными программамикопирования [1],[4].

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


2. Обоснование выбораиспользуемого метода

В данном курсовом проектереализовано два метода защиты программы от нелегального копирования. Это защитастационарной программы и мобильной. Для защиты стационарной программы былвыбран метод проверки даты создания ПЗУ. Этот метод был выбран благодаря тому,что дата создания ПЗУ является достаточно индивидуальной для каждого ПК, еслитолько они не были приобретены в партии, например для оснащения компьютерногокласса, но в таком случае защита программы от нелегального копированиястановится неактуальной. Для защиты мобильного варианта программы на дискетебыла создана дополнительная дорожка с секторами нестандартного размера. Этотвариант был выбран потому, что в данном случае на дискету не требуется наноситьфизических повреждений, что приводит к потере работоспособности некоторой еечасти. И эта защита может оказаться не ничуть не хуже, чем защита сиспользованием дефектов дискет.


3. Описание программы

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

Модуль рассчитан назащиту как мобильных, так и стационарных программ. Основной процедурой модуляявляется процедура ProtCheck, осуществляющая контроль копии. Легальностьмобильного варианта программы устанавливается за счет контроля скрытого секторана ключевой дискете, в случае стационарного варианта проверяется дата созданияПЗУ. Две другие процедуры модуля позволяют установить защиту файла на жесткомдиске (процедура SetOnHD) и удалить стационарный вариант программы (процедураRemoveFromHD).

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

Для создания легальнойкопии программы должна использоваться особая технология подготовки дискеты. Этаособенность в данном случае заключается в том, что на стандартной дискетедиаметром 3,5 дюйма, рассчитанной на емкость 1,44 Мб, создается дополнительнаядорожка из нестандартных 256-байтных секторов. Один из секторов этой дорожкииспользуется для записи ключевой информации. В процессе проверки легальностикопии программы процедура ProtCheck считывает этот сектор и контролирует егосодержимое. Для создания ключа используется программа Diskette. Эта программана дискете емкостью 1,44 Мб создает 81-ю дорожку с 18-ю секторами размером по256 байт, причем для нее используется обратный фактор чередования, т. е.секторы на дорожке размещаются в последовательности 18,17,16,…,2,1. Для этогоона корректирует таблицу параметров дискеты, которую берет или в ПЗУ или в ОЗУпо определенному адресу [4], [5]. Программа сохраняет копию старой таблицыпараметров дискеты и после завершения работы восстанавливает ее. В первыйсектор новой дорожки записывается произвольная информация и число установок нажесткий диск защищаемой программы, (это число установок вводится пользователемпри создании ключевой дискеты). Затем сектор читается и проверяется правильностьоперации записи-чтения. В конце программы измеряется время доступа к новойдорожке и стандартной дорожке. Для чтения и записи сектора используетсяпрерывание $13. В случае ошибки чтения или записи сектора, программа выводитсообщение об ошибке и восстанавливает старую таблицу параметров дискеты.

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

Процедура ProtCheckвызывается из защищаемой программы всякий раз, когда требуется установитьлегальность копии. Ее заголовок имеет следующий вид:

Procedure ProtCheck(var Norma,Alarm;var Res:Integer)

В теле процедурыпараметры-переменные Norma и Alarm трактуются как параметры процедурного типа

type

ProcType = Procedure;

т. е. являются адресамидвух процедур без параметров. Процедура Alarm вызывается в случае, если программаобнаружила признаки нелегального копирования, а Norma – если эти признакиотсутствуют. В переменной Res возвращается результат работы ProtCheck: 0 – есливыполнялась процедура Norma (легальная копия), 1 — выполнялась Alarm(нелегальная копия), 2 – не выполнялась ни та, ни другая процедура, так какпрограмма не обнаружила дискету в приводе ГД и не смогла проверить легальностькопии.

Процедура ProtCheckначинает работу с проверки поля Hard в глобальной типизированной константе Key.Это поле используется для анализа стационарности программы: если поле имеетзначение 0, реализуется контроль мобильного варианта, в противном случае –стационарного варианта (установка поля Hard и всей константы Key осуществляетсяс помощью функции SetOnHD, см. ниже).

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

1-й байт – ключ дляшифровки содержимого сектора с помощью операции XOR;

17-й байт – количествоуже созданных стационарных копий;

200-й байт – максимальноеколичество стационарных копий (если 255 — количество копий не ограничено);

256-й байт – контрольнаясумма со 2-го по 255-й байт.

Если поле Hard константыKey содержит нулевое значение, осуществляется контроль стационарного варианта.В этом случае поле Dat содержит эталон даты создания ПЗУ, а поле Hardиспользуется как ключ для шифровки этого поля с помощью операции XOR.

Если контрольстационарного варианта дает отрицательный результат (нелегальная копия),автоматически осуществляется анализ мобильного варианта (контроль дискеты).Таким образом, любая копия программы гарантированно работает, если враспоряжении пользователя есть ключевая дискета. Однако после правильнойустановки программы на жесткий диск с помощью процедуры SetOnHD программа можетработать и без этой дискеты до тех пор, пока она не будет перенесена на новыйкомпьютер, дата создания ПЗУ которого отличается от эталонной.

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

Function SetOnHD: Integer;

Перед использованиемфункции SetOnHD необходимо любыми стандартными для ДОС средствами скопироватьпрограмму в один из каталогов жесткого диска. Эта функция вызывается в такой«нелегальной» копии, перед этим в любой привод ГД необходимо вставить ключевуюдискету со снятой защитой от записи. Результат, возвращаемый функцией, имеетследующий смысл:

1 – в привод ГД невставлена дискета;

2 – в привод вставленадискета не эталонного типа (не 1,44 Мб или нет скрытого сектора);

3 – дискета защищена отзаписи или при записи на нее возникла ошибка;

4 – данный вариантпрограммы не скопирован предварительно на жесткий диск;

5 – ошибка доступа кжесткому диску (программа не может прочитать собственный файл или не можетзаписать в него новое значение константы Key);

6 – исчерпан лимитстационарных копий;

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

еще рефераты
Еще работы по информатике, программированию