|
|
|
|
|
Для того чтобы заставить программу работать так, как она работала бы с ключом, можно или внести исправления в программу, или эмулировать наличие ключа. Модификация программы, как правило, возможна лишь в тех случаях, когда ответы, полученные от ключа, просто проверяются, но не являются математически необходимыми для обеспечения работоспособности программы. Но это значит, что ключ, по большому счету, не требуется для достижения полной функциональности. Такое случается, когда программа не использует всех возможностей ключа или когда возможности ключа очень ограничены. При эмуляции никакого воздействия на программу не происходит, т. е., например, не нарушается контрольная сумма исполняемых модулей. И полный эмулятор, если его удается построить, просто повторяет все поведение реального ключа.
|
|
|
|
|
|
|
|
|
Про StarForce (SF), систему защиты программного обеспечения, распространяемого на дисках CD-ROM, от несанкционированного тиражирования, пока написано не очень много. В основном это информация рекламного характера, исходящая от разработчиков, но попадаются высказывания и тех, кто эту защиту пытался обойти. На официальном интернет-сайте приводится следующее описание характеристик системы защиты StarForce Professional: • SF Professional не позволит запустить программный продукт, если компакт-диск идентифицирован как скопированный. Вне зависимости от того, где и как была сделана копия диска (в домашних условиях или на заводском оборудовании), система определит, что данный диск — нелегальный; • компакт-диски, защищенные SF Professional, не копируются такими программами, как CloneCD, CDRWin, BlindWrite и им подобными. Защищенны приложения не запускаются на эмуляторах компактдисков, к которым относятся Daemon Tools, Virtual CD-ROM и т. п.; • используя комплект разработчика на этапе создания программного кода, можно значительно усилить защиту приложения против самых эффективных методов взлома; • для встраивания защиты SF Professional не требуется специального технологического оборудования, нужен только компьютер и доступ на один из серверов StarForce; • компакт-диски, защищенные SF Professional, максимально совместимы с разнообразными моделями существующих устройств CD/DVD-ROM. Это обусловлено тем, что в SF Professional используется уникальный метод определения подлинности диска без вмешательства в его физическую структуру; • система защиты использует алфавитно-цифровой 24-значный ключ, который вводится пользователем защищенного программного приложения в процессе эксплуатации только один раз — в момент первого запуска. Ключ будет работать исключительно с дисками данной партии программного обеспечения.
|
|
|
|
|
|
|
|
|
Несмотря на внешнюю несхожесть дискет и компакт-дисков, очень многие методы создания некопируемых магнитных носителей были успешно пере- несены на оптические диски. Разумеется, большинство используемых компакт-дисков не допускает перезаписи, а те, что допускают, не позволяют изменять информацию в произвольном месте — можно только дописать новые данные или стереть все, что было записано ранее. Поэтому на компакт-дисках не делают защиты со счетчиком установок. Однако существует множество способов создать диски, которые не копируются стандартными средствами или для которых существует надежный способ отличить копию от оригинала. Рассмотрим наиболее распространенные из них. Прежде всего, стоит отметить, что получать доступ к содержимому компактдиска можно на нескольких уровнях.
|
|
|
|
|
|
|
|
|
У каждого из описанных ранее методов проверки правильности кодов есть свои достоинства и недостатки. Так "черный ящик" сравнительно прост в реализации и позволяет использовать короткие коды, привязанные к имени пользователя. Но почти всегда при использовании этого подхода возможно создание генератора ключей. Методы, основанные на стойкой криптографии, весьма сложны для самостоятельной реализации и очень часто требуют длинной кодовой строки. Кроме того, многие алгоритмы покрываются действующими патентами. Только табличные методы дают возможность полностью блокировать скомпрометированные регистрационные коды, но не позволяют привязывать код к имени пользователя. Кроме того, если число пользователей слишком ве- лико, таблицы могут занимать значительный объем. В общем, при выборе оптимального метода генерации ключей в каждом Конкретном случае стоит руководствоваться свойствами продукта, характеристиками потенциального рынка и т. д. Но одного "самого хорошего" Метода, годящегося на все случаи жизни, не было, нет и никогда не будет.
|
|
|
|
|
|
|
|
|
Все методы проверки правильности кодов можно, условно, разделить на три категории: • алгоритмические, основанные на принципе "черного ящика"; • алгоритмические, основанные на математически сложной задаче; • табличные. Любые алгоритмические методы позволяют связать код с именем пользователя или информацией о его компьютере, тем самым усложнив получение нескольких копий программы, выглядящих как легальные. При использовании "черного ящика" разработчик старается запутать алгоритм проверки, чтобы его было труднее понять и обратить. Такой подход, наверное, используется чаще всех остальных вместе взятых. Причем его применяют не только неопытные разработчики. Так, например, именно в надежде на то, что противник не сможет разобраться, что к чему, изначально строилась система лицензирования FLEXlm, разрабатываемая компанией Globetrotter, а теперь принадлежащая Macrovision. Но противник, зачастую, оказывается одареннее, упорнее и лучше подготовлен в своей профессиональной области, чем разработчик защиты. Возможно, именно поэтому на очень многие продукты, защищенные FLEXlm, в Интернете нетрудно найти поддельные лицензии. А начиная с версии 7.2, FLEXlm поддерживает лицензии на основе эллиптических кривых, поделка которых сводится к решению сложной математической задачи.
|
|
|
|
|
|
|
|
|
Программа должна содержать некоторый механизм, позволяющий проверить, является ли введенный пользователем серийный номер (или регистра-] ционный/активационный код) правильным, а возможность вычислять правильные коды должна всегда оставаться только в руках разработчика. Для того чтобы противник, исправив несколько байт, не смог заставить программу работать так, как будто она была корректно зарегистрирована активирована, необходимо те фрагменты кода или данных, доступ к которым разрешен только легальным пользователям, зашифровать стойким алгоритмом, а ключ шифрования вычислять, используя регистрационный код. Тогда без знания регистрационного кода получить полноценную версию программы не удастся. Подобную функциональность обеспечивают, например, программы ASProtect (ASPack Software) и EXECryptor (Soft-Complete Development).
|
|
|
|
|
|
|
|
|
Программа должна содержать некоторый механизм, позволяющий проверить, является ли введенный пользователем серийный номер (или регистра-] ционный/активационный код) правильным, а возможность вычислять правильные коды должна всегда оставаться только в руках разработчика. Для того чтобы противник, исправив несколько байт, не смог заставитпрограмму работать так, как будто она была корректно зарегистрирована активирована, необходимо те фрагменты кода или данных, доступ к которым разрешен только легальным пользователям, зашифровать стойким алгоритмом, а ключ шифрования вычислять, используя регистрационный код. Тогда без знания регистрационного кода получить полноценную версию программы не удастся. Подобную функциональность обеспечивают, например, программы ASProtect (ASPack Software) и EXECryptor (Soft-Complete Development).
|
|
|
|
|
|
|
|
|
За время существования персональных компьютеров на процессорах семейства х86 (начиная от IBM PC XT на процессоре Intel 8086) успело смениться несколько форматов двоичных файлов, предназначенных для хранения откомпилированного кода программы. В операционной системе DOS (Disk Operating System) поддерживалось два основных формата исполняемых файлов: СОМ и ЕХЕ. СОМ-файлы загружались в оперативную память без каких-либо дополнительных настроек, и их размер не должен был превышать 64 Кбайта. ЕХЕ-файлы не имели таких жестких ограничений на размер и состояли из заголовка, включающего всю необходимую информацию для правильной загрузки программы в память, и собственно кода программы. Заголовок DOS-овских ЕХЕ-файлов начинался с символов 'MZ' или 'ZM', и до сих пор его так и называют — MZ Header (MZ-заголовок). Буквы MZ являются инициалами Марка Збыковски (Mark Zbikowski), являвшегося разработчиком данного формата. Сейчас все исполняемые файлы содержат MZ-заголовок, за которым может следовать информация о другом формате. С появлением 16-битовой версии Windows возникла потребность в расширенном формате исполняемых файлов. В Windows была реализована поддержка динамически подсоединяемых библиотек (dynamic-link library. DLL), поэтому новый формат должен был обеспечить возможность хранения, в частности, таблиц экспортируемых (находящихся в DLL и доступных Другим модулям) и импортируемых (находящихся во внешних библиотеках) функций. Кроме этого в Windows широко используются ресурсы — двоичные данные, содержащие иконки, курсоры, описания диалогов и т. д., которые желательно хранить внутри исполняемых файлов. Все актуальные на тот Момент требования были учтены при разработке формата, получившего название New Executable (NE, новый исполняемый файл). Заголовок такого файла начинается с символов 'NE'.
|
|
|
|
|
|
|
|
|
Коммерческие программы обычно защищают от несанкционированного тиражирования. Наличие доступа только к носителю информации с дистрибутивом (набором инсталляционных файлов) программного продукта не должно давать возможности установить работоспособную копию программы. То есть данных дистрибутива, который можно скопировать или незаметно взять на несколько дней, не должно хватать для создания работоспособной копии программы. Подобные ограничения могут быть реализованы разными способами. Например, очень многие коммерческие программы при инсталляции требуют ввести серийный номер, напечатанный на коробке или указанный в одном из прилагаемых к программному продукту документов (у Microsoft — в сертификате аутентичности). Также часто возникает потребность ограничить число пользователей, одновременно работающих с программой. То есть человек, который приобрел лицензию на одно рабочее место, не должен иметь возможности создать 2 рабочих места, функционирующих одновременно. Это достигается за счет использования аппаратных ключей, менеджеров лицензий и процедуры активации. Для некоторых программных продуктов (в частности игр) часто используется привязка к носителю информации, например компакт-диску. То есть для запуска игры требуется наличие в приводе оригинального компакт-диска, который защищен от копирования стандартными средствами.
|
|
|
|
|
|
|
|
|
Существует довольно много различных моделей распространения программного обеспечения. Рассмотрим характерные особенности некоторых их них. Эта модель распространения программного обеспечения подразумевает отсутствие оплаты за использование программ. Очень часто по такому принципу распространяются небольшие утилиты, которые, по мнению авторов, могут оказаться полезными широкому кругу пользователей, но не будут иметь спроса, если назначить плату за их использование. Разумеется, существуют программисты, создающие бесплатные приложения из любви к искусству или нелюбви к излишней коммерциализации современных информационных технологий. Часто несколько добровольцев организуют команду, разрабатывающую и поддерживающую достаточно сложную программную систему. Многие бесплатные программы распространяются в исходных текстах. Но надо отдавать себе отчет в том, что программы в исходных текстах и бесплатные программы — это совсем не одно и то же. Коммерческие продукты тоже могут поставляться в исходных текстах.
|
|
|
|
|
|
|