Анализ рынка средств защиты программного обеспечения от несанкционированного копирования.
Новичков Александр
"…Использование программ для ЭВМ или базы данных третьими лицами
(пользователями) осуществляется на основании договора с правообладателем…"
-фрагмент закона об интеллектуальной собственности
Введение
В эпиграф к статье вынесена выдержка из закона об авторском праве и смежных правах от 9 июля 1993 года. В законе есть достаточное количество статей стоящих на страже авторства на программное обеспечение или на базы данных, вот только нарушаются они сплошь и рядом как в России, так и за ее пределами: процветает нелегальное копирование продукции, взлом программного обеспечения и откровенное воровство баз данных. К всеобщему горю Россия остается одним из главных потребителей пиратской продукции, поскольку в стране имеется солидный спрос на продукцию софтверных компаний, а уровень доходов населения не позволяет покупать лицензии по общемировым ценам. Отсюда и бешенный спрос на пиратскую продукцию, которая появляется невзирая на системы защиты от копирования, которые производители устанавливают на свои разработки. Вскрывается все, ну или почти все! Причин масса, это и слабое Российское законодательство, вернее законодательство хорошее, только вот его исполнение плохое. Также причиной пиратства является ценовая недоступность легальных копий продукта, в силу высокой стоимости – стоимость по мировым ценам, а зарплата в России далеко не мировая.
Ну, вот еще один защитник запада нашелся – подумает читатель и будет не прав! Несостоятельность Российских законов приводит к тому, что все отечественные компании, которые умеют делать софт на должном уровне ничего, или почти ничего не делают для внутреннего, Российского рынка, уходя в различные совместные предприятия, работая на западные рынки ПО. Здесь на лицо то, что принято называть утечкой мозгов, по крайней мере в софтверной области. Россия, имея все что нужно для производства ПО мирового уровня практически ничего не делает для внутреннего рынка, поскольку получить с него доход весьма и весьма сложно.
Остаются на месте только крупные компании, которые уже сделали себе имя, и имеющие стабильное количество легальных пользователей (пример тому бухгалтерские и правовые программы). Кстати, на заре 90х годов практически каждая из данных компаний разрабатывала свою систему защиты от копирования с той или иной степенью надежности. Также в середине 90х годов многими компаниями применялась тактика физического воздействия на торговцев продукцией, но и эта мера не возымела должного эффекта.
Итак, что мы имеем?
1 – невозможность компаниями-разработчиками ПО выпускать релизы для внутреннего рынка, в силу вышеописанных причин,
2 – не имеем полноценного законодательства, которое не только декларирует права, но и ревностно отслеживает их исполнение (рейды по злачным местам раз в год – не в счет).
Так мы плавно подошли к одному возможному выводу – раз законодательства пока нет, значит необходимо своими силами защищать программное обеспечение при помощи тех программных средств, которые будут противодействовать пиратам заполонять рынок контрафактной продукцией. Может здесь и получится нечто полезное, ведь получилось же некоторым компаниям-производителям игр сделать так, что их официальная продукция пользуется высоким спросом, даже несмотря на то, что наравне с легальной продукцией продается и пиратская.
Добиться удалось это и Российским и западным компаниям. Российским удалось защитить свои продукты мудреными защитами, а западные смогли предоставить он-лайн сервисы, при наличии которых пользователь расширяет возможности продукта (если говорить об играх, то это, как правило, доступ к серверам для многопользовательской игры). Значит не все так плохо! И бороться за рынок ПО можно, правда пока дополнительными средствами и мудреными защитами!
Статья, которую Вы держите в руках является попыткой автора посмотреть на рынок специальных программных средств для охраны авторского права, которые запрещают нелегальное копирование или изменение программное обеспечения. Автор попытался найти компании, которые предоставляют свои продукты для защиты. В основе положены два критерия выбора средств защиты: они должны быть или очень известными или еще не вскрытыми… Как выяснилось в процессе анализа, известность фирмы не означает, что ее продукция окажется сверхнадежной.
Теперь, непосредственно о защите. Давайте попробуем выдвинуть ряд критероиев, которые можно предъявить к подобной системе защиты, чтобы она смогла стать популярной:
Защита должна быть с большим запасом прочности. Учитывать высокий уровень пиратов вообще, и Российских в частности, способная противостоять их натиску долгое время;
Не использовать для защиты дорогие дополнительные аппаратные приспособления, которые только повышают стоимость защиты, а стало быть, и конечного продукта;
Не привязываться к аппаратной конфигурации компьютера, поскольку персональный компьютер не есть вещь в себе, и его отдельные компоненты могут и должны быть заменяемыми по мере старения;
Должна быть основана на оригинальных принципах защиты от взлома. Показателем критерия может служить тот факт, что защита еще не взломана, либо взломана, но всеми возможными способами;
Не препятствует свободному копированию защищенных данных (должна запрещать только несанкционированный запуск, то есть копируется копировщиком, но не исполняется);
Несущественно удорожает стоимость конечного продукта.
Взлом и защита: противоборство брони и снаряда в электронном мире…
Во время использования MS-DOS (ныне почти покойной) наработана масса способов, позволяющих относительно надежно идентифицировать легальность запуска того или иного приложения. Существует масса приемов того, как можно обманывать отладчики и дизассемблеры, противодействуя, тем самым, анализу логики защищаемого приложения. С появлением на сцене Windows, жизнь хакеров слегка упростилась, а защитников усложнилась, в силу специфики реализации данной системы. Появились умные отладчики (один SoftIce чего стоит), интеллектуальные дизассемблеры и прочее, и прочее… Становится трудным находить новые приемы привязки защиты к различным физическим меткам и электронным ключам. А трудности связаны с тем, что все приемы, помогающие ставить не копируемые метки, и противодействовать отладчикам, уже давно и хорошо известны обеим "воюющим" сторонам.
Хотя, иногда появляются и изюминки, благодаря которым война "защитников" переходит на новый виток развития, и война разгорается с еще большей силой и на новом технологическом витке.
Давайте, перед, собственно, анализом имеющихся средств защит программного обеспечения, попробуем понять, как они работают. Еще хочется отметить, что данная статья не есть пособие для пишущих и ломающих защиты, для этого есть специальные издания и более профессиональные авторы, которые заняты не написанием статей, а работой над новыми методами защиты и взлома.
Начнем со структурного введения, и поделим, на составляющие, само слово "защита". Представим его в виде двух подсистем:
первая – представляет собой тот или иной способ постановки любой метки на носителе, которую было бы невозможно, или весьма затруднительно перенести (скопировать) или воспроизвести программными методами (эмулировать);
вторая – это встраиваемый в защищаемое приложение модуль, который проверяет наличие заранее установленной метки.
Основой любой защиты можно считать ее способность к идентификации носителя, с которым она попала к пользователю. И не просто к идентификации, а к способности отличить данный носитель от нелегальной копии. Причем, уровень защиты на данном этапе должен быть такими, чтобы та условная метка или характеристика, которая была присуща данному носителю, не воспроизводилась любыми средствами битового копирования. Эффективность данного этапа определяет стойкость защиты к элементарному взлому, когда пользователю достаточно запустить CloneCD, и не о чем больше не думать.
Если защите удалось найти способ получения не копируемых дисков (StarForce, CD-Cops, TAGES), то надо обезопасить себя от следующей напасти – от эмуляторов устройств. Многие пираты прибегают к тактике эмуляции характеристик диск, создавая виртуальные драйверы устройств, позволяющих обманывать систему защиты. К сожалению, практически все средства защиты от копирования, рассматриваемые в данной статье, уже взломаны подобным образом (см. врезки).
Если еще раз вернуться к механизму получения уникальных идентификаторов диска, то получится, что способов есть здесь не так уж и много. Это нанесение лазерных меток на определенной части диска и получение уникальных характеристик, присущих носителю. И все это без нанесения физических меток. Подобное пока удалось сделать только защитам StarForce, CD-Cops и TAGES, что разительно отличает их от конкурентов. Во-первых, не надо иметь сложное оборудование для нанесения меток, ведь, как мы знаем, любое удорожание производственного цикла бьет по карманам покупателей, повышая стоимость продукта. И здесь еще один вывод: чем выше стоимость продукта, тем пристальней взоры к нему со стороны пиратов, тем скорее защита будет взломана, а способ взлома растиражирован.
Похоже, приходится констатировать тот факт, что физические привязки останутся в прошлом, а на смену им придут подобного рада способы защиты. И еще заметьте (см. табл.), защиты StarForce, CD-Cops и TAGES не взламываются побитовыми копировщиками и эмуляторами, поскольку физические характеристики носителей хакеры еще не научились воспроизводить программно (эмуляторы), и их невозможно копировать (копировщики).
То есть на данном этапе можно констатировать, что имеется ряд защит, которые используют передовые способы идентификации носителей, и противодействия копированию. Как говорится, этот критерий абсолютно необходим, но необходим он вкупе с хорошо защищенной от взлома программной частью, которая и отвечает за идентификацию носителя. Отсутствие надежной защиты от программного взлома делает защиту очень и очень уязвимой. Хотя, справедливости ради, надо сказать, что если есть хорошая программная защита, но нет аппаратно не копируемой метки, то и это не есть правильно. Такая защита только половина того, что нужно, НО! Здесь кроется одно "НО", компания, разработавшая хотя бы один действительно надежный способ противодействия, со временем может разработать дополнительный механизм противодействия. Особенно хочется отметить, что в данном случае более важной можно считать технологию получения не копируемых меток или иных методов дальнейший идентификации носителя. Так как сложнее осуществить именно эту часть защиты.
Следующий по очереди, но не по важности, атрибут защиты это резидентная программная часть, способная на 100% идентифицировать метку или характеристику носителя, с которого она была запущена.
Если рассмотреть способ защиты модуля от взлома, то получается такая картина: третья компания разрабатывает программный продукт, скажем, один файл в формате EXE, и передает его создателям защиты. Последние специальным образом встраивают специальный код идентификации в данный EXE модуль, ставят не копируемую метку. Цель хакера на этом этапе: либо полностью удалить защитный модуль, либо найти тот участок в коде защиты, который отвечает за идентификацию, и изменить только его (поменять условие проверки). Цель защиты – противодействовать всем методам взлома, причем продвинутая защита должна защищать не только себя, но и модули того файла, к которому ее присоединили. Последнее возможно в том случае если защита имеет открытый расширенный SDK (Software Development Kit), который позволяет разработчикам приложений встраивать защиту в свой модуль уже на этапе разработки собственного приложения. Такая система может существенно усложнить жизнь хакерам.
Для вскрытия программной защиты хакер может выбрать следующее (развернуто об атаках смотрите во врезке):
Получить код программы любым известным дизассемблером.
Проанализировать ход исполнения программы специальным отладчиком.
Получить слепок программы в памяти, которая исполнилась после проверки защитой диск (дампер).
Поставить набор контрольных точек в заданных местах, чтобы не анализировать весь код, а только его части, с указанных адресов.
Приведенные способы атак показывают, что хакер будет предпринимать, и что должна уметь делать любая защита, чтобы этого не допустить.
С этим сектором все очень плохо. Практически все защиты уже взломаны, невзирая на ухищрения, предпринимаемыми компаниями-защитниками. Тут действуют несколько золотых правил: во-первых, то, что сделал один человек, то другой может завсегда сломать, а, во-вторых, тираж и популярность продукта стимулируют хакеров на очень активные действия. Так что надеяться на 100% надежную защиту от взлома – только находиться в иллюзиях! Зато можно, разработав эффективную систему защиты, максимально усложнить жизнь пиратам, а себе гарантировать возврат инвестиций. Говоря простым языком, если защита вскрывается 4-5 месяцев, то компания может продать достаточное количество копий своего продукта, чтобы покрыть все расходы и получить прибыль. А если новая версия продукта выходит через 7-8 месяцев, то коммерческий успех можно повторять до бесконечности. Но это возможно в тех случаях, когда продукт пользуется большим спросом, а защита постоянно модифицируется.
Обратите внимание на врезки и на таблицу, в которой проводилось сравнение основных систем защит, как иностранных, так и одной отечественной.
Особенно обидно за продукты CD-Cops и TAGES, которые стойко противостоит первой волне взлома (копированию), и совсем не держат натиски отладчиков, дамперов и дизассемблеров. Скорее всего это связано с тем, что компании молодые и у них просто не было времени, чтобы полностью доработать защиту. Думаю, что разработчики учтут недоработки программных модулей в следующих версиях.
В наиболее выгодном свете здесь представлена только защита StarForce, которая использует ряд интересных решений, делающих ее взлом практически невозможной, или, лучше так: трудноосуществимой. Из информации, которую удалось получить из официальных источников, разработчики StarForce применили способ динамического шифрование кода (см. врезку), даже не столько шифрования, в общем понимании этого слова, а в том, что для этих целей разработана специальная виртуальная машина со своим языком программирования.
Этот подход позволяет не просто шифровать блоки кода, а транслировать на другой язык программирования, образуя тем самым виртуальную машину (см. врезку).
Есть еще один способ усиления защиты, это предоставление разработчикам ПО так называемых SDK, при помощи которых, разработчики могут эффективно использовать элементы защиты на этапе разработки ПО. Это жизненно необходимо, так как один из самых эффективных методов защиты, это не просто проверка информации, отдельным модулем, а неявное размазывание самой системы на весь программный продукт. Когда при помощи определенных механизмов нарушается целостность и правильность исполнения программного продукта. Если помните, то еще во времена DOS, был "крякнутый" пакет программы анимации 3-D Studio 4.0, который никак не хотел работать правильно (результат подобной защиты). Достичь подобного эффекта размазывания защиты можно как своими силами, так и силами компании, реализующей защиту. Последнее, более приемлемо и нужно, поскольку только так можно получить комплексный подход в защите. Поэтому услуга предоставления SDK далее рассматривается как особенно важная для построения барьеров на пути хакерам.
Как ужа неверное отметил читатель, то из всех средств защит, вынесенных во врезки, автор упоминает только три: StarForce, CD-Cops и TAGES. Уж не пристрастность ли это? Отвечаю: нет, нет и еще раз нет!!!
Посмотрите на таблицу и на описание продуктов. В моем представлении, внимания заслуживают только лишь те системы, которые не вскрыты вообще (StarForce), либо вскрыты лишь частично. Последнее обстоятельство дает шанс компании со временем построить надежную защиту (CD-Cops). Те же слова хочется сказать в адрес программы TAGES, которая также эффективно борется с копированием, но пока имеет слабую защиту самого кода приложения.
И отрадно смотреть, что уникальные комплексные подходы в защите показывают небольшие компании, лишь недавно вышедшие на рынок защиты ПО. А горестно смотреть на таких монстров как Macrovision и Sony, которые кроме известности ничего не имеют. Хотя, компании подобного размаха очень инерционны, но и они в итоге могут удивить.
Что ж, посмотрим, как будет развиваться рынок далее… Кто победит… информационный "снаряд" или информационная "броня"?
В работе над данной статьей помогли:
Личный опыт автора в написании защит, полученный им в начале 90х, а также следующие сайты в Интернет:
Официальные сайты компаний-производителей защит (см. во врезке).
Сайт http://www.cdmediaworld.com/, на котором рассмотрены все существующие защиты, и не просто рассмотрены, а разобраны!
CD-COPS
Тип защиты: Измерение физических характеристик без нанесения особых меток на носитель(!)
Способ преодоления защиты: "Кряк"
Аппаратная совместимость (cd/dvd разных производителей): Средняя (совместима только с популярными приводами)
Наличие особой аппаратуры для защиты серии: НЕ требуется
Предоставление SDK для производителей: ДА
Защита мелких партий (CD/R/RW): НЕТ
Фирма – производитель: Link Data Security
Сайт производителя: http://www.linkdata.com/
Коммерческие продукты, использующие данный вид защиты:
Interactive English / De Agostini
Nationalencyklopedin
Agostini Atlas 99
Agostini Basetera
BMM
DK Kort
Lademanns’99
Особенности защиты:
Данная программа пользуется самой эффективной системой защитой от копирования, основанной не на нанесении физических меток, а на способе измерения специфических характеристик CD\DVD-ROM. По словам производителя, система анализирует физический угол между прошлым и текущими логическими блоками на компакт-диске.
Слабое место защиты – это сам код, анализирующий углы. Фирме пока не удалось найти эффективного способа противодействия дизассемблерам и отладчикам.
StarForce
Тип защиты: Измерение физических характеристик без нанесения особых меток на носитель(!)
Способ преодоления защиты: Способ не найден
Аппаратная совместимость (cd/dvd разных производителей): Высокая
Наличие особой аппаратуры для защиты серии: НЕ требуется
Предоставление SDK для производителей: ДА
Защита мелких партий (CD/R/RW): ДА
Фирма – производитель: ProtectionTechnology
Сайт производителя: www.star-force.ru
Коммерческие продукты, использующие данный вид защиты:
1С (игры), Нивал, Softmax Co, Q-puncture Inc, Scholastic, Hypnosys World, руссобит-м (игры)
Особенности защиты:
Данная программа так же, как и CD-COPS, пользуется самой эффективной системой защитой от копирования, основанной на способе измерения специфических характеристик CD\DVD-ROM. Поскольку защита не вскрыта, то не известен и способ, которым производителям удается идентифицировать различные диски. Заявленная 100% совместимость с любой аппаратурой и 100% идентификация дисков подтверждается независимыми сайтами.
Увы, слабое место в защите найти не удалось. Защита эффективно противодействует отладчикам и дизассемблерам. Эффективность защиты подтверждает тот факт, что за год существования не нашелся способ ее нейтрализации. Дополнительный лоск защите придает возможность защиты мелких партий дисков (CD-R\RW) и наличие SDK, при помощи которого разработчики игр могут шифровать отдельные сегменты своих детищ.
LaserLock
Тип защиты: Физическое нанесение метки на носитель
Способ преодоления защиты: Копирование (BlindRead), "кряк", эмуляция (D-Tools)
Аппаратная совместимость (cd/dvd разных производителей): Низкая
Наличие особой аппаратуры для защиты серии: ДА, требуется
Предоставление SDK для производителей: ДА
Защита мелких партий (CD/R/RW): НЕТ
Фирма – производитель: MLS LaserLock International
Сайт производителя: http://www.laserlock.com/
Коммерческие продукты, использующие данный вид защиты:
Asghard, Fallout 2, Icewind Dale, Jagged Alliance 2, Messiah, Metro Police, Outcast, Shogo, SpecOps
Особенности защиты:
Использует уникальную маркировку. Каждое приложение на CD имеет уникальную блокировку параметра, который отвечает конечную защиту от копирования.
Много слов, а мало дела. Продукт уже вскрыт всеми возможными методами. Разработчики системы явно не успевают вносить изменения в код защиты для противодействия уловкам пиратов.
SafeDisk
Тип защиты: Физическое нанесение метки на носитель
Способ преодоления защиты: Копирование (CloneCD), "кряк", эмуляция (D-Tools)
Аппаратная совместимость (cd/dvd разных производителей): Хорошая
Наличие особой аппаратуры для защиты серии: ДА, требуется
Предоставление SDK для производителей: ДА
Защита мелких партий (CD/R/RW): НЕТ
Фирма – производитель: Macrovision Corporation
Сайт производителя: http://www.macrovision.com/
Коммерческие продукты, использующие данный вид защиты:
Практически все игры после 01-01-2001
Особенности защиты:
Здесь также применяется метод нанесения физических меток, для чего требуется дополнительное оборудование. Производитель утверждает о большой эффективности системы, не раскрывая методов, которые применяются в защите. Только пиравтов это не остановило. Все программы, защищенные данной системой уже вскрыты. Способов противодействия защите также найдено несколько. Невзирая на предоставление SDK компаниям-производителям игр не удалось обеспечить надежного противодействия.
SecuRom
Тип защиты: Физическое нанесение метки на носитель
Способ преодоления защиты: "Кряк", эмуляция (D-Tools)
Аппаратная совместимость (cd/dvd разных производителей): Низкая
Наличие особой аппаратуры для защиты серии: ДА, требуется
Предоставление SDK для производителей: НЕТ
Защита мелких партий (CD/R/RW): НЕТ
Фирма – производитель: Sony
Сайт производителя: http://www.securom.com/
http://www.sony.com/
Коммерческие продукты, использующие данный вид защиты:
Diablo 2, SimCity 3000, Decent FreeSpace, FIFA 99, Panzer Commander, S.A.G.A: Rage of the Vikings
Особенности защиты:
Используются все те же метки. Достаточно интересным отличием данной защиты является то, что они действительно некопируемые. По крайней мере до сих пор не найдено программ, способных побитово копировать защищенные диски. В остальном же так же как и со многими системами – есть методы обхода защиты, и это невзирая на громкое имя корпорации, производящей защиту. Справедливости ради стоит отметить, что над совершенствованием защиты ведутся постоянные работы. Кто знает, может им и удастся стать абсолютно непроницаемыми. Некопируемая метка уже есть.
TAGES
Тип защиты: Измерение физических характеристик без нанесения особых меток на носитель(!)
Способ преодоления защиты: Эмуляция, "Кряк"
Аппаратная совместимость (cd/dvd разных производителей): Хорошая
Наличие особой аппаратуры для защиты серии: НЕ требуется
Предоставление SDK для производителей: НЕТ
Защита мелких партий (CD/R/RW): НЕТ
Фирма – производитель: Thomson & MPO
Сайт производителя: http://www.licensing.thomson-csf.com/buy/cdcopy.html
Коммерческие продукты, использующие данный вид защиты:
Moto Racer 3
Особенности защиты:
Защита основана на достаточно оригинальном методе многократного чтения одного и того же сектора с последующим сравнением результатов. Вполне возможно, что здесь происходит анализ физических характеристик носителя. Слабое место защиты ее программный модуль, который уже вскрыт.
——————————————————————————–
Сравнение различных защит.
Данная таблица позволят в наглядном виде не только получить основные параметры всех защитных систем, но и провести анализ их свойств. Сильной защитой можно назвать ту, которая совсем не вскрыта (пока не вскрыта). Перспективной можно считать ту, которая вскрыта, но вскрыта каким-то одним способом. Такая защита имеет перспективу стать трудно вскрываемой, если ее разработчики смогут усилить тот или иной слабый блок. И слабой будем считать ту защиту, которая взломана всеми тремя известными способами, что говорит о чрезвычайно низкой защитной функции. Наименование защиты Фирма-производитель\страна Способ защиты Необходимость в специальной аппаратуре для защиты Защита небольших партий на CD-R\RW Способы взлома
Cd-Cops Link Data Security Анализ физических характеристик CD. Без установки меток НЕТ НЕТ Существует несколько "кряков"*
LaserLock MLS LaserLock International Нанесение не копируемых меток ДА НЕТ Эмуляция**, побитовое копирование***, "кряк"
StarForce ProtectionTechnology (Россия) Анализ физических характеристик CD. Без установки меток НЕТ ДА Защита пока не вскрыта****
SafeDisk Macrovision Corporation Нанесение не копируемых меток ДА НЕТ Эмуляция, побитовое копирование, "кряк"
SecuRom Sony Нанесение не копируемых меток ДА НЕТ Эмуляция, побитовое копирование, "кряк"
TAGES Thomson & MPO Анализ физических характеристик CD. Без установки меток НЕТ НЕТ Эмуляция, "кряк"
*Под термином "кряк" здесь понимается внешняя программа, способная дезавуировать защиту. При данном способе в код защищенной программы вносятся изменения.
**Данный вид программ эмулирует лазерные метки. При данном подходе в код вскрываемой программы не вносится изменений
***Наиболее распространенный способ копирования, смысл которого состоит в использовании специальных побитовых копировщиков, наподобие CloneCD. Данный тип защиты может работать как сам по себе, так и вместе с "кряком".
****справедливости ради стоит отметить, что прецедент вскрытия есть, но стал он возможен только благодаря тому, что пираты получили доступ к незащищенному коду приложения, после чего был сделан кряк.
Краткий справочник по методам взлома и способам защиты от них
(1) Взлом копированием и эмулированием
Побитовое копирование
Суть атаки заключается в том, что пользователь (не всегда злоумышленник) пытается скопировать имеющийся у него диск с целью создания копии (для личного использования или для тиража).
Для осуществления подобной атаки могут использоваться различные программы, зачастую входящие в поставку устройств CD-R/RW. Это и официальный Easy CD Creator, и полуофициальные (полухакерские) CloneCD и BlindRead…
Защита должна уметь противодействовать данному виду взлома, так как с него обычно и начинается взлом, поскольку копировщиков способных скопировать диски с примитивной защитой великое множество.
Способы обороны: существуют два способа противодействия взлому. Первый заключается в том, что на диск записывается определенная метка, которая не копируется обычными средствами (например, создается нестабильный сегмент, который не читается носителем, а раз не читается, то и скопированным быть также не может). К сожалению, данный способ не всегда устойчив, поскольку уже есть программы "продвинутого" копирования (те же CloneCD и BlindRead), которые способны пропускать подобные места (замещать нестабильные области произвольными данными) и проводить копирование до конца. Второй способ основывается на том, что ничего никуда записывать не надо, а надо лишь определенным образом запоминать физические характеристики диска, которые просто невозможно воспроизвести любым копированием, точнее диск сам по себе копируется, но уже с другой физической структурой. Соответственно, пользователь может спокойно клонировать диски, но ключевым будет тот, который был официально куплен.
Эмулирование
Данный подход позволяет формировать виртуальные драйверы устройств и имитировать обращение к диску. Это уже чистой воды взлом, поскольку для нормальной работы вскрытого приложения в систему инсталлируется специальный драйвер, который имитирует обращение к не копируемой метке на диске и возвращает вскрытой программе именно те данные, которые она ожидает "увидеть". Подобный способ довольно часто применяется на первых порах, когда хакеру известен способ получения некопируемой метки на диске, но ему не очень хочется разбираться с программой методом дизассемблирования.
Противодействием может служить работа с устройствами записи\чтения на низком уровне, когда невозможно перехватить вызовы к оборудованию. Здесь нужно еще внести одно пояснение: для того, чтобы защищенному приложению обратиться к CD, и проверить его на наличие не копируемой метки, необходимо воспользоваться одной из функций чтения\записи, которые предоставляет сама Windows. Хакерами уже наработан ряд механизмов, позволяющих перехватывать стандартные обращения к функциям Windows, а раз можно перехватить сообщение, значит целиком можно имитировать чтение, целиком заменяя стандартные вызовы на собственные. Как говорилось выше, противодействием данному способу взлома может быть только обращение к накопителю не через стандартные вызовы.
(2) Взлом программного модуля
Это следующий уровень взлома. В том случае если не удалось скопировать приложение, а способ его защиты также неизвестен, то хакер переходит на следующий уровень взлома – на исследование логики самой программы, с той целью, чтобы, проанализировав весь код приложения, выделить блок защиты и деактивировать его.
Взлом программ осуществляется двумя основными способами. Это отладка и дизассемблирование.
Отладка – это специальный режим, создаваемый специальным приложением – отладчиком, который позволяет по шагам исполнять любое приложение, передавая ему всю среду и делая все так, как будто приложение работает только с системой, а сам отладчик невидим. Механизмами отладки пользуются все, а не только хакеры, поскольку это единственный способ для разработчика узнать, почему его детище работает неправильно. Естественно, что любую благую идею можно использовать и во зло. Чем и пользуются хакеры, анализируя код приложения в поиске модуля защиты.
Это так называемый, пошаговый режим исполнения, или, иными словами интерактивный. А есть еще и второй – дизассемблирование – это способ преобразования исполняемых модулей в язык программирования, понятный человеку – Ассемблер. В этом случае хакер получает распечатку того, что делает приложение. Правда распечатка может быть очень и очень длинной, но никто и не говорил, что защиты снимать легко.
Хакеры активно пользуются обоими механизмами взлома, поскольку иногда приложение проще пройти по шагам, а иногда проще получить листинг и проанализировать его.
Давайте теперь рассмотрим основные методы взлома и противодействия ему
Отладчики
Отладчиков существует великое множество: от отладчиков, являющихся частью среды разработки, до сторонних эмулирующих отладчиков, которые полностью "погружают" отлаживаемое приложение в аналитическую среду, давая разработчику (или хакеру) полную статистику о том что и как делает приложение. С другой же стороны, подобный отладчик настолько четко имитирует среду, что приложение, исполняясь под ним, считает, что работает с системой напрямую (типичный пример подобного отладчика – SoftIce).
Противодействие
Способов противодействия существует великое множество. Это именно способы противодействия поскольку основная их задача сделать работу отладчика либо совсем невозможной, либо максимально трудоемкой. Опишем основные способы противодействия:
Замусоривание кода программы. Способ, при котором в программу вносятся специальные функции и вызовы, которые выполняют сложные действия, обращаются к накопителям, но по факту ничего не делают. Типичный способ обмана. Хакера нужно отвлечь, создав ответвление, которое и будет привлекать внимание сложными вызовами и содержать в себе сложные и большие вычисления. Хакер рано или поздно поймет, что его обманывают, но время будет потеряно.
Использование мультипоточности. Тоже эффективный способ защиты, использующий возможности Windows по параллельному исполнению функций. Любое приложение может идти как линейно, то есть инструкция за инструкцией, и легко читаться отладчиком, а может разбивать на несколько потоков, исполняемых одновременно, естественно, в этом случае, нет никакого разговора о линейности кода, а раз нет линейности, то анализ здесь трудноосуществим. Как правило, создание 5-6 и более потоков существенно усложняет жизнь хакеру. А если потоки еще и шифруются, то хакер надолго завязнет, пытаясь вскрыть приложение.
Подавление изменения операционной среды – программа сама несколько раз перенастраивает среду окружения, либо вообще отказывается работать в измененной среде. Не все отладчики способны на 100% имитировать среду системы, и если "подопытное" приложение будет менять настройки среды, то рано или поздно "неправильный" отладчик может дать сбой
Противодействие постановке контрольных точек. Специальный механизм, поддерживаемы микропроцессором, при помощи которого, можно исследовать не всь программу, начиная с начал, а, например, только начиная с середины. Для этого в середине программы ставят специальный вызов (точка вызова – BreakPoint), который передает управление отладчику. Недостаток способа кроется в том, что для осуществления прерывания в код исследуемого приложения надо внести изменение. А если приложение время от времени проверяет себя на наличие контрольных точек, то сделать подобное будет весьма и весьма непросто.
Изменений определенных регистров процессора, на которые отладчики неадекватно реагируют. Также как и со средой. Отладчик тоже программа и тоже пользуется и операционной системой и процессором, который один на всех. Так если менять определенные регистры микропроцессора, которые отладчик не может эмулировать, то можно существенно "подорвать" его здоровье.
Дизассемблеры и дамперы
Про дизассемблер сказано было выше, а вот про дампер можно добавить то, что это практически тот же дизассемблер, только транслирует он не файл, находящийся на диске в Ассемблерный код, а содержимое оперативной памяти на тот момент, когда приложение начало нормально исполняться (то есть, пройдены все защиты). Это один из коварных средств взлома, при котором хакеру не надо бороться с механизмами противодействующими отладке, он лишь ждет, когда приложение закончит все проверки на легальность запуска, проверяя метки на диске, и начинает нормальную работу. В этот момент дампер и снимает "чистенький" код без примесей. К всеобщей радости не все защиты могут просто так себя раскрыть! И об этом ниже:
Шифрование. Самый простой и эффективный способ противодействия. Подразумевает, что определенная часть кода никогда не появляется в свободном виде. Код дешифруется только перед передачей ему управления. То есть вся программа или ее часть находится в зашифрованном виде, а расшифровывается только перед тем как исполниться. Соответственно, чтобы проанализировать ее код надо воспользоваться отладчиком, а его работу можно очень и очень осложнить (см. выше)!
Шифрование и дешифрование (динамическое изменение кода). Более продвинутый способ шифрования, который не просто дешифрует часть кода при исполнении, но и шифрует его обратно, как только он был исполнен. При такой защите хакеру придется проводить все время с отладчиком, и взлом защиты затянется на очень и очень долгое время.
Использование виртуальных машин. Еще одна модернизация шифрования. Способ заключается в том, чтобы не просто шифровать и дешифровать целые фрагменты кода целиком, а делать это покомандно, подобно тому, как действет отладчик или виртуальная машина: взять код, преобразовать в машинный и передать на исполнение, и так пока весь модуль не будет исполнен. Этот способ гораздо эффективнее предыдущих, так как функции приложения вообще никогда не бывают открытыми для хакера. Естественно, что его трудно реализовать, но реализовав, можно оградить себя от посягательств любых хакеров. Но в этом способе кроется недостаток – производительность, ведь на подобное транслирование требуется много времени, и, соответственно, способ хорош для защиты только для критических участков кода.
Дополнительные способы противодействия
Здесь уже идет чистое описание всяких возможностей по противодействию. Даются общие вводные, ведь защита может быть эффективной только тогда, когда каждый ее модуль написан на совесть с использованием различных ухищрений. То есть все рецепты, о которых говорилось выше, должны в той или иной форме присутствовать в любой системе.
Использовать для хранения данных защиты системные ресурсы Windows: дополнительную память, выделяемую для параметров окон и локальные хранилища потоков. Суть способа состоит в нестандартном использовании стандартных областей, скажем, хранить ключи, пароли… и т.п., совсем не там, где их будут искать при взломе в первую очередь.
Использовать операции сравнения нестандартными способами, во избежание их явного присутствия. Для сравнения есть определенные инструкции микропроцессора, о которых знают и разработчики и хакеры. А если попытаться использовать нестандартные виды сравнения, то можно слегка запутать хакера, ожидающего стандартного ответа.
Избегать обращений к переменным, относящимся к защите напрямую. То есть использовать любые косвенные способы доступа к специальным областям.
Использовать метод "зеркалирования" событий, то есть применять нестандартные действия на стандартные вызовы. Об этом говорилось выше.
Использовать для шифрования надежные, проверенные временем алгоритмы и т. д.
Здесь перечислены только основные подходы, даже не основные, а общеизвестные. А об оригинальных разработках мы узнаем позже, как только хакеры смогут взломать очередную уникальную защиту.