ReferatWorld.ru
» » » Защита программы от нелегального копирования
Вернуться назад

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

Содержание
Введение
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].
Наконец, программа может использовать нестандартный фактор чередования секторов. Этот фактор влияет на время чтения/записи группы смежных секторов. Если какую-либо дорожку отформатировать с намеренно неоптимальным фактором чередования, время чтения этой дорожки может оказаться заметно больше, чем при чтении любой другой дорожки – это еще один способ защиты.

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать полную версию
Курсовые работы по информатике Содержание Введение 1 Описание существующих методов Проверка типа ПК и версии ДОС Проверка даты изготовления и контрольной суммы ПЗУ Проверка места
Оценок: 385 (Средняя 5 из 5)

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

© 2017 - 2022 ReferatWorld.ru