Недавно в инете появился текстовик с паролями на обновление к NOD32 3.0. Я даже успел его скачать и недельку попользоваться, но вчера ребята из компании Eset все-таки опомнились и прикрыли халяву...
Собственно это небольшое событие, размышления о нем и вообще о платном программном обеспечении и натолкнули на мысль написать что-то вроде статьи на эту тему.
The Path of the Defender
Для начала рассмотрю основные способы защиты программного обеспечения (ПО), и соответственно способы их обхода.
Name&Pass
Защита паролем всегда была самой простой, удобной и потому распространенной. В ПО это может называться как угодно, но суть та же: если не введешь некоторый код – программа не запустится или запустится с ограниченными функциями.
Код может называться как угодно: CD-Key, Licence Number, Activation Key итд итп.
Прописывать фиксированный код в тело программы – полный бред, хакеры мнгновенно его откопают и выложат в свободный доступ. Поэтому используется вычисление кода по некоторому придуманному разработчиками алгоритму. Практически всегда в вычислении кода участвуют какие-то внешние данные, чаще всего имя покупателя. Иногда используются специально вычисляемые идентификаторы компьютера, на который устанавливается программа.
Такой подход лишь слегка осложняет жизнь хакерам, так как алгоритм вычисления кода прописан в программе… А это значит, что его можно оттуда извлечь и генерировать сколько угодно кодов, которые программа с радостью примет. Для этого пишутся (чаще всего на ассемблере) маленькие программки, называемые
keygen’ами, в которые традиционно добавляется 8-битная музыка, уникальный интерфейс, графика (в том числе фрактальная и трехмерная), эффекты и другие понты.
Сам по себе алгоритм является всего лишь формулой и практически ничего не весит, вот создатели и балуются. В целом считаю явление очень даже положительное, некоторые кейгены – чуть ли не произведения искусства. (Лишь бы вирусов не добавляли, что, кстати, не исключено)
Пример: Установщики игр требуют ввести CD-Key, который напечатан на листочке внутри упаковки. Наиболее эффективна такая система, если к купленной игре предоставляется дополнительный контент либо доступ к серверам через Интернет. В таком случае CD-Key каждого диска заносится в базу и проверяется при обращении к сервисам. Хотя в саму игру обычно можно играть и с левым ключом.
Тема защиты дисков от копирования очень обширна, поэтому здесь я ее затрагиваю только косвенно.
Также подобная защита, всего одним кодом встречается при установке различных программных продуктов, например Microsoft Office.
Активация и верификация
Следующей ступенью является требование подтверждения, что код действительно куплен, а не взят у соседа, скачен с инета, сгенерирован кейгеном. Для этого программа либо сама подключается к Интернету и проверяет, либо просит сделать это «сознательного» пользователя. В крупных программных пакетах стараются учесть интересы всех пользователей и добавляют несколько возможностей по активации: Интернет, электронная почта, факс и телефон. В этом месте кроется парадокс: при выборе варианта активации через факс программа выдает опять же
код, который нужно отослать в офис и получить другой
код, ввести его в программу, она проверит по
алгоритму и согласится. В общем система бредовейшая, дописать в кейген функцию вычисления еще одного кода – не проблема ни разу.
Более хитрый способ – процесс генерации и проверки кода полностью проводить через Интернет. Такой способ характерен для антивирусов и других программ, которым жизненно необходимо постоянно обновляться через Интернет. В этом случае хакеры не смогут узнать алгоритм вычисления и не напишут кейген, зато напишут кряк, о которых подробнее расскажу ниже.
Уточка «Кря-Кря-Кря»
Если разработчики уж сильно намудрят с защитой и хакеры посчитают нецелесообразным ее обходить, то просто в тексте программы аккуратненько отключат все функции защиты или поменяют принцип их работы. Такой способ называется
Crack (по-русски «Кряк»). Программки-кряки в целом точно такие же как и кейгены, вот только не выдают готовый ключ, а вносят изменения в файлы программы. В этом случае мы опять же слабо защищены от бесплатных «подарков» в виде вирусов и другой пакости.
Особенно следовало бы бояться уже взломанных и выложенных в готовом виде версий программы.
Контрольная сумма
Для защиты от кряков существует проверка контрольной суммы: На основе всего файла программы вычисляется определенный код (да-да, опять код) и сравнивается с эталонным. Если не совпадает, то программа ругается матом и не запускается. При большом желании опять же обходится при помощи кряков: отключается или модифицируется сама функция проверки контрольной суммы.
Не Интернетом единым…
Единственной на практике реальной возможностью проверить законность копии программы является автоматическая проверка через Интернет. Тут дилемма: А если у пользователя нет Интернета? Программа не будет работать? А нафик пользователю неработающая программа?
Поэтому, при таком виде защиты программа может работать и без Интернета, на основе внутреннего вычисления ключа (опять же, лечим кейгеном). А если вдруг у нас есть Интернет? А тогда можно прописать в файрволе (Интернет без файрвола есть нонсенс и изврат) запрет для нашей программы на доступ к сайту, проводящему верификацию. Программа будет думать что Интернета нету и молча работать.
Я таким образом одно время обманывал AdMuncher.
Новая версия
Потрясающая по простоте и эффективности защита используется в совсем мелких программах: вместо защиты серийным ключом используется активация, при этом очень часто выпускаются новые версии с незначительными изменениями, а старые версии на сайте не хранятся. Причем обязательна в таком случае система автоматического обновления, а раз программка маленькая – пользователю будет не жалко ее обновить. Смысл в том, чтобы не давать хакерам время писать с каждой версией новый кряк. Для такой программы зачастую сложно найти рабочую и взломанную версию.
WareZ
Тут вступают в дело сервисы по обмену контентом, которых расплодилось в сети миллон (даже чаще всего не утруждаются дизайн менять), наиболее крупный и известный – nnm.ru. Они не хранят сами по себе ворованную музыку и взломанные программы, а хранят только ссылки на них, а сами файлы хранятся на файлообменных сервисах.
Допустим кто-то нашел определенную версию программы и нашел под нее хороший кряк, написал краткую инструкцию по установке и взлому, заархивировал и залил в инет. А ссылку выложил на сайт по обмену контентом.
Естественно, можно подцепить и заразу таким образом.
Summary
Все перечисленные методы защиты и обхода зачастую применяются в комбинациях – зависит от того, насколько много фантазии у разработчиков и насколько мало лени у хакеров.
Why?
А зачем все это нужно? Не проще ли покупать программы законно и не мучаться? Ответ: А вот не проще. Чтобы «снарядить» свой компьютер законно – понадобится скорее всего не один десяток тысяч рублей. А цена профессиональных графических, звуковых, инженерных и других пакетов может достигать многих тысяч долларов. Конечно есть почти всегда бесплатные аналоги, но они чаще всего недописанные, глючные,
непривычные и несовместимые, так что это явно для мазохистов.
Либо для тех, кто отвечает за установку ПО на какой-либо фирме. Сейчас очень ужесточились правила, проводятся проверки – можно даже в тюрьму загреметь. Так что у админов зачастую и выбора-то не остается. Возможно и до домашних компьютеров доползет эта нездоровая тенденция. В свете курса на отупение человечества – вполне возможно.
Меня вот всегда интересовало, как должны учиться студенты, особенно инженерных специальностей? MathCAD, Matlab, Visio, Компас, AutoCAD, ArchiCAD и другие – стоят столько, что нам и не снилось. А где должен брать их студент? А Университет?
Ну и конечно же нельзя забывать о исконно русской любви к халяве. «Зачем платить больше, если нет разницы?»
Release
Вот так и происходит вечная борьба между любителями халявы и производителями ПО. И тут, особенно в условиях России, возникает интересный баланс: Если производители слишком уж навороченную защиту придумают – пользователи перейдут на конкурирующий продукт. Производитель потеряет пользователя, который мог бы повзрослеть-остепениться и купить программу, мог бы посоветовать ее друзьям-родственникам-знакомым и так далее. А слишком мягкая защита вызовет полное пренебрежение к разработчикам, что тоже ничего положительного в себе не несет.
В самом начале я писал про список паролей к NOD32. Я думаю разработчики если не сами выкинули этот список в сеть, то уж точно знали о нем и какое-то время ничего не делали. Месяцок халявщики им попользовались и хватит – пусть ищут новую халяву.
Вот лично я уже «дорос» до того, чтобы покупать программы. Я морально готов купить лицензионную копию Windows; лицензию на антивирус (в данный момент предпочитаю NOD32) и файрвол (Outpost ни на что не променяю). Проблемка разве что в том, что денег на это нету. :D