Диски под замком: Принцип работы современных систем защиты 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Диски под замком: Принцип работы современных систем защиты



ОГЛАВЛЕНИЕ

1. Введение……………………………………………………………………………….…........3

2. Пиратство……………………………………………………………………………………...5

3. Виды и характеристики современных средств защиты…………………………………….7

4. Устойчивость к взлому……………………………………………………………………….8

5. Лицензирование……………………………………………………………………………...10

6. Метод авторизации через Интернет………………………………………………………..19

Диски под замком: Принцип работы современных систем защиты

1. Способы взлома………………………………………………………………………………20

2. Системы защиты компакт-дисков: готовые решения……………………………………...21

3. Cactus Data Shield…………………………………………………………………………….22

4. CD-Cops………………………………………………………………………………………23

5. DiscGuard……………………………………………………………………………………..24

6. LaserLock……………………………………………………………………………………..25

7. LockBlocks……………………………………………………………………………………26

8. MusicGuard…………………………………………………………………………………...27

9. ProtectCD……………………………………………………………………………………..27

10. SafeCast……………………………………………………………………………………….28

11. SafeDisc……………………………………………………………………………………….28

12. SecuROM……………………………………………………………………………………..28

13. 8.Коммерческий аспект………………………………………………………………………….29

14. Простейшие способы защиты компакт-дисков от копирования………………………..29

15. Дополнительные способы противодействия……………………………………………...30

16. Ключевые носители………………………………………………………………………...36

17. Ключ в виде USB-брелока…………………………………………………………………..37

18. Назначение eToken PRO

19. Литература……………………………………………………………………………………40

 

 

 

Введение

 

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

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

 

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

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

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

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

Технологические методы защиты ПО от НСК тесно связаны с вопросами защиты информации от НСД и реализуются посредством использования различных программно- аппаратных средств. Хотя НСД не всегда направлен на копирование информации, большинство методов защиты ПО от НСД можно эффективно применять и для защиты его от НСК.

Несмотря на все усилия различных организаций, в последние годы продолжается рост компьютерного пиратства. В среднем доля пиратского ПО в глобальном масштабе составляет 40%, то есть каждые четыре из десяти копий программы оказываются в каком-то смысле украденными у производителя и лишают его прибыли. По расчетам BSA в 2002 году убытки софтверной отрасли от пиратства составили порядка 13 миллиардов долларов.

 

Виды технических средств защиты

Технические средства защиты можно разделить на:

 

· программные,

· аппаратные и

· программно-аппаратные средства.

 

Программными являются средства защиты, реализованные программным образом.

Это наиболее доступные средства.

Относительно программной защиты необходимо принять во внимание следующее.

 Любая программная защита может быть раскрыта в конечное время.

 

Известный специалист по программной защите от копирования А.Щербаков разъясняет: «Верность этого утверждения следует из того, что команды программы, выполняющей защиту, достоверно распознаются компьютером и в момент исполнения присутствуют в открытом виде как машинные команды. Следовательно, достаточно восстановить последовательность этих команд, чтобы понять работу защиты. А таких инструкций, очевидно, может быть лишь конечное число [4]

Аппаратными называются средства защиты, использующие специальное аппаратное оборудование.

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

К программно-аппаратным средствам относятся средства, комбинирующие программную и аппаратную защиту.

Это наиболее оптимальные средства защиты. Они обладают преимуществами как аппаратных, так и программных средств.

 

 

Пиратство

 

Россия находится на пятом месте в списке стран с наивысшими показателями пиратства, и доля пиратского ПО в нашей стране составляет 89% (!). Для западных компаний это хоть и приносит ощутимые убытки, но не является критичным для их бизнеса. Для российских же компаний такая распространённость пиратства может оказаться подводной скалой, о которую разобьются все инвестиционные планы.

 

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

 

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

 

На рис. 1 показаны графики получения прибыли от продаж незащищённого и защищённого продуктов. Как видно из графиков, если продукт плохо защищён, то его достаточно быстро "вскрывают", и на рынке появляется дешёвая пиратская версия, которая не позволяет лицензионной версии завоевать свою долю рынка, и продажи легального продукта быстро падают. Если же продукт хорошо защищён, то у пиратов уходит достаточно много времени на вскрытие защиты и продукт успевает достичь требуемого уровня продаж и достаточно долго удерживаться на рынке.

 

 

Рис. 1 - Динамическая зависимость прибыли от степени защищённости продукта

 

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

 

Итак, допустим, заказчик изначально имеет несколько программных продуктов, рассчитанных на разные сегменты рынка. Известно, что систем защит существует множество, и не все из них могут удовлетворять заказчика по соотношению цена\качество.

 

В таблице 1 приведены все исходные данные по программным продуктам.

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

 

Таблица 1. Характеристика программ для ЭВМ.

Программа для ЭВМ, Ценовая категория ($, тыс.)

 

Объем продаж

Тип лицензии

Сегмент рынка

Объект защиты
LSHead 0.5-2       100-1000

Раб. место

USA, Индивидуальный

EXE, DLL plug-in к 3D-MAX, Maya % с тиража, время
LSHead Pro       10-30 10-100

Раб.место, время

USA, Корпоративный

 EXE, DLL plug-in к 3D-MAX, Maya  Сайт, время
LSHead SDK       10-30 10-20

Раб.место, время

USA, Корпоративный

LIB  
LSHead WWW 3-10   10-100

Раб.место

USA, Корпоративный

ActiveX  
PsyTest 0.4-2       100-1000 PsyTest      0.4-2       100-1000

Раб.место

РФ, Корпоративный

EXE  

Game 1-20     100-1000

Раб.место РФ, частный сектор

EXE

 

           

 

Итак, мы имеем 6 программных продуктов, для которых необходимо подобрать защиту.

Кратко опишем каждый из продуктов

 

Таблица 2. Описание программных продуктов Заказчика

Продукт Краткое описание
LSHead Дополнительный модуль расширения к трехмерным программам, предназначенный для отображения мимики лица персонажей в реальном масштабе времени
LSHead Pro Дополнительный модуль расширения к трехмерным программам, предназначенный для отображения мимики лица персонажей в реальном масштабе времени. Профессиональный вариант.
LSHead SDK Набор библиотек и документов для компаний-разработчиков игрового ПО, которые хотят использовать технологию мимики персонажей в своих играх
LSHead WWW  
PsyTest Программа психологического тестирования
Game Условно-игровая программа с элементами квеста и аркады

 

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

 

Рассмотрим основные требования, которые можно предъявить к современной системе защиты:

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

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

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

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

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

 

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

 

Должна быть основана на оригинальных принципах защиты от взлома. Показателем критерия может служить тот факт, что защита еще не взломана, либо взломана, но всеми возможными способами;

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

Не препятствует свободному копированию защищенных данных (должна запрещать только несанкционированный запуск, то есть копируется копировщиком, но не исполняется);

 

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

Защита должна быть подобрана с учетом традиций данного сегмента рынка ПО.

 

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

 

Соответственно, защита НЕ ДОЛЖНА вызывать отторжения у конечного пользователя своей экстравагантностью.

Стоимость защиты для разработчика и покупателя должна соотноситься со стоимостью программы.

 

Устойчивость к взлому

 

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

 

В следующем разделе описаны основные методы взлома и противодействия, а пока рассмотрим ещё несколько аспектов, относящихся к средствам защиты.

Аппаратные ключи

 

Часто для реализации нераспространения продукта при его эксплуатации используются в электронные ключи (HASP) или Sentinel.

 

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

 

Современные электронные ключи подключаются практически ко всем портам компьютера: от LPT до USB, а также слотам ISA и PCI, при возникновении такой необходимости.

Основой ключей HASP является специализированная заказная микросхема (микроконтроллер) - ASIC (Application Specific Integrated Circuit), имеющая уникальный для каждого ключа алгоритм работы.

 

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

 

Большинство моделей ключей HASP имеют энергонезависимую программно-перезаписываемую память (так называемую EEPROM). В зависимости от реализации HASP память может быть от одного до четырех килобитов).

 

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

управлять доступом к различным программным модулям и пакетам программ;

назначать каждому пользователю защищенных программ уникальный номер;

сдавать программы в аренду и распространять их демо-версии с ограничением количества запусков;

хранить в ключе пароли, фрагменты кода программы, значения переменных и другую важную информацию.

 

У каждого ключа HASP с памятью имеется уникальный опознавательный номер, или идентификатор (ID-number), доступный для считывания защищёнными программами. Идентификаторы позволяют различать пользователей программы. Проверяя в программе идентификатор HASP, пользователь имеет возможность предпринимать те или иные действия в зависимости от наличия конкретного ключа. Идентификатор присваивается электронному ключу в процессе изготовления, что делает невозможным его замену, но гарантирует надежную защиту от повтора. С использованием идентификатора можно шифровать содержимое памяти и использовать возможность ее дистанционного перепрограммирования.

 

Система HASP позволяет защищать программное обеспечение двумя различными способами: автоматически (стандартно) и вручную (через специальный API).

Предоставление SDK со стороны разработчиков защиты

 

SDK (Software Developer Kit, комплект разработчика ПО) позволяет детально ознакомиться с продуктом. Для этого в состав SDK включены полная техническая документация, описание утилит и средств разработки.

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

Также SDK включает в себя оборудование (hardware) для построения тестовых проектов (например, SDK HASP, который содержит демонстрационные ключи HASP).

 

Достаточно часто встречающееся приложение к системам защиты. SDK позволит на самых ранних этапах разработки приложения внедрить защиту в приложение. Как известно, защита, которая встраивается в приложение на последнем этапе, достаточно легко нейтрализуется. Нейтрализовать же защиту, встроенную в само приложение достаточно трудно. Примером подобной защиты может служить IBM Rational ClearCase, защита которого настолько "размазана" по продукту, что пирату просто не реально за сколько-нибудь приемлемый промежуток времени провести его анализ и нейтрализовать саму защиту.

Что же происходит при использовании SDK? Как правило, SDK определяет защищенность отдельных областей кода или данных приложения, а также места проверки легальности запуска (например, обращение к ключу/диску). Ниже рассказывается про атаку методом дампинга, противодействовать которому можно только когда приложение НИКОГДА не остается в памяти компьютера в полностью развернутом виде.

SDK позволит разработчикам программного продукта определить какие части приложения будут видны всегда (например, участки кода, направленные на максимальную производительность), а какие необходимо прятать. Тем не менее, SDK тоже бывают разные. Следует оценивать стоимость комплекта, наличие поддержки, и, самое главное, - простоту изучения. Последний критерий достаточно спорный, так как эффективность SDK может быть напрямую связана со сложностью изучения.

 

 

 

Лицензирование

 

Суть любой из систем лицензирования заключается в том, что после установки программного обеспечения на локальный компьютер пользователю необходимо получить от производителя ключ, который был бы тем или иным образом привязан к компьютеру (в основном), хотя это может быть и банальный пароль, и вовсе необязательно этот ключ привязан к компьютеру. Системы лицензирования бывают как "одна лицензия - один компьютер" так и "одна лицензия - один пользователь". Как правило, для этих целей используют механизм заполнения анкеты на сайте производителя (для идентификации пользователей) + пересылку (на тот же сайт) специального идентификатора компьютера, на основе которого и выполняется генерация ключа. Как правило, в ключе, в зашифрованном виде, содержится информация о пользователе, продукте, числе лицензий и другой информации.

 

Ярким представителем системы лицензирования является Globertrotter FlexLM. Система лицензирования, которую используют многие компании, работающие на корпоративном рынке. Данной системой пользуются такие крупные компании как Rational, AliasWavefront и многие другие.

 

FlexLM (и ряд других компаний) предлагает два типа лицензий: Floating и NodeLocked.

 

Floating - плавающий тип лицензий. Данный вид лицензий устанавливается на сервер и оговаривает число одновременно работающих машин в сети. То есть, имея 10 лицензий, с продуктом могут только 10 машин одновременно, но продукт можно инсталлировать на сколь угодно рабочих мест. Данный тип защиты позволяет продукту распространяться, но запускать его одновременно можно только на ограниченном числе машин. Защита наиболее эффективна на корпоративном рынке, где работает много специалистов. Налицо экономическая выгода, основывающаяся на том, что не все пользователи одновременно работают с одними и теми же программами. В случае корпоративного применения возможна экономия от 80% до 50% от общего числа необходимых лицензий.

 

NodeLocked - фиксированный тип лицензий. Данный способ защиты позволяет работать только на одной машине. Способ хорошо подходит для индивидуальных пользователей, которым необходимо работать только с одной рабочей машины. Как правило, стоимость Floating лицензии выше, чем NodeLocked в силу вышеуказанных причин. Также лицензии делятся на две категории: постоянные и временные.

 

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

 

Постоянные - снимают все ограничения по срокам, но привязываются к конкретной машине.

 

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

Для идентификации машины используется множество способов. Вот основные способы привязок:

· к серийному номеру жесткого диска;

· к MAC-адресу сетевой катрты;

· к контрольной сумме BIOS;

· к различным характеристикам системы.

 

Эмулирование CD

 

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

 

Противодействием может служить работа с устройствами чтения/записи на низком уровне, когда невозможно перехватить вызовы к оборудованию. Здесь нужно еще внести одно пояснение: для того, чтобы защищенному приложению обратиться к CD, и проверить его на наличие специальной метки, необходимо воспользоваться одной из функций чтения/записи, которые предоставляет Windows. Хакерами уже наработан ряд механизмов, позволяющих перехватывать стандартные обращения к функциям Windows, а раз можно перехватить обращение, значит можно имитировать чтение, целиком заменяя стандартные вызовы на собственные. Как говорилось выше, противодействием данному способу взлома может быть только обращение к накопителю не через стандартные вызовы.

 

Взлом программного модуля

 

Это следующий уровень взлома. В том случае если не удалось скопировать приложение (также не удалось пропустить диск/HASP через эмулятор), а способ его защиты также неизвестен, то хакер переходит на следующий уровень взлома - на исследование логики самой программы, с той целью, чтобы, проанализировав весь код приложения, выделить блок защиты и деактивировать его.

 

Взлом программ осуществляется двумя основными способами. Это отладка (или пошаговое исполнение) и дизассемблирование.

 

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

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

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

Теперь рассмотрим основные методы взлома и противодействия ему.

Отладка

 

Отладчиков существует великое множество: от отладчиков, являющихся частью среды разработки, до сторонних эмулирующих отладчиков, которые полностью "погружают" отлаживаемое приложение в аналитическую среду, давая разработчику (или хакеру) полную статистику о том, что и как делает приложение. С другой же стороны, подобный отладчик настолько четко имитирует среду, что приложение, исполняясь под ним, считает, что работает с системой напрямую (типичный пример подобного отладчика - NuMega SoftIce).

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

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

Использование многопоточности. Тоже эффективный способ защиты, использующий возможности Windows по параллельному исполнению функций. Любое приложение может идти как линейно, то есть инструкция за инструкцией, и легко читаться отладчиком, а может разбиваться на несколько потоков, исполняемых одновременно, естественно, в этом случае, нет никакого разговора о линейности кода, а раз нет линейности, то анализ здесь трудноосуществим. Как правило, создание 5-6 и более потоков существенно усложняет жизнь хакеру. А если потоки еще и шифруются, то хакер надолго завязнет, пытаясь вскрыть приложение.

Подавление изменения операционной среды. Программа сама несколько раз перенастраивает среду окружения, либо вообще отказывается работать в измененной среде. Не все отладчики способны на 100% имитировать среду системы, и если "подопытное" приложение будет менять настройки среды, то рано или поздно "неправильный" отладчик может дать сбой. Противодействие постановке контрольных точек. Специальный механизм, поддерживаемы микропроцессором, при помощи которого можно исследовать не всю программу сначала, а, например, только начиная с середины. Для этого в середине программы ставят специальный вызов (контрольную точку - Breakpoint), который передает управление отладчику. Недостаток способа кроется в том, что для осуществления прерывания в код исследуемого приложения надо внести изменение. А если приложение время от времени проверяет себя на наличие контрольных точек, то сделать подобное будет весьма и весьма непросто.

 

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

Дизассемблеры и дамперы

 

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

 

Шифрование. Самый простой и эффективный способ противодействия. Подразумевает, что определенная часть кода никогда не появляется в свободном виде. Код дешифруется только перед передачей ему управления. То есть вся программа или ее часть находится в зашифрованном виде, а расшифровывается только перед тем как исполниться. Соответственно, чтобы проанализировать ее код надо воспользоваться отладчиком, а его работу можно очень и очень осложнить (см. выше)!

Шифрование и дешифрование (динамическое изменение кода). Более продвинутый способ шифрования, который не просто дешифрует часть кода при исполнении, но и шифрует его обратно, как только он был исполнен. При такой защите хакеру придется проводить все время с отладчиком, и взлом защиты затянется на очень и очень долгое время.

 

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

 

CD-COPS

 

Тип защиты:   Измерение физических характеристик без нанесения особых меток на носитель
Способ преодоления защиты:                                "Кряк"
Аппаратная совместимость (cd/dvd-приводы разных производителей):                                                  Средняя (совместима только с популярными приводами)
Наличие особой аппаратуры для защиты серии: НЕ требуется
Предоставление SDK для производителей:          ДА
Защита мелких партий (CD/R/RW):                      НЕТ
Фирма - производитель:             Link Data Security (http://www.linkdata.com/)
Коммерческие продукты, использующие данный вид защиты:
Interactive English / De Agostini
National encyklopediа
Agostini Atlas 99
Agostini Basetera
BMM
DK Kort
Lademanns'99

Особенности защиты:

Данная программа пользуется самой эффективной системой защитой от копирования, основанной не на нанесении физических меток, а на способе измерения специфических характеристик CD\DVD-ROM. По словам производителя, система анализирует физический угол между прошлым и текущими логическими блоками на компакт-диске. Слабое место защиты - это сам код, анализирующий углы. Фирме пока не удалось найти эффективного способа противодействия дизассемблерам и отладчикам.

 

Производитель этого продукта, датская компания Link Data Security, была основана в 1982 году. Выпуском коммерческих продуктов, предназначенных для защиты информации от несанкционированного копирования, она занимается уже почти 20 лет: в 1984 году вышла первая версия программы Cop’s Copylock для DOS. В настоящее время Link Data Security предлагает полную линейку защитных систем для программ, работающих под управлением операционных систем DOS и Windows. Защищенные приложения могут распространяться на дискетах, компакт-дисках, DVD или через Интернет. В каждом случае применяется свой способ защиты.

 

CD-Cops умеет распознавать «родной» компакт-диск и в то же время четко отсекать копии, сделанные как на записываемых и перезаписываемых носителях, так и заводским способом. Работает этот продукт следующим образом. Применив защиту, вы производите партию дисков; при получении готовых CD, отпечатанных с одной и той же матрицы, необходимо запустить утилиту, которая считает один из дисков и выдаст код доступа (для разных партий дисков этот код будет разным). Этот код наносится на коробку либо непосредственно на диск. При установке программы пользователю необходимо ввести код, после чего программа будет установлена на его компьютер и сможет запускаться только при наличии оригинального диска в приводе CD-ROM. При этом не имеет значения, скопированы необходимые для работы приложения компоненты на жесткий диск или используются непосредственно с компакт-диска. При попытке подменить оригинальный диск на его копию приложение запускаться не будет.

 

Определить защищенный CD-Cops диск можно по наличию файла CDCOPS.DLL и файлов с расширениями.GZ_ и.W_X в папке, в которую установлено приложение.



Поделиться:


Последнее изменение этой страницы: 2020-03-14; просмотров: 140; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.178.133 (0.133 с.)