Как пользоваться кряками для программ. Как правильно использовать KeyGen и Activation программ. Физический взлом программы

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

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

Я не буду углубляться в детали и использовать сложные инструменты для взлома. Всё будет расписано «для чайников», т.е. все инструменты будут простыми, легкодоступными и бесплатными. А основным будет Reflector , декомпилятор программ под.NET

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


Для начала краткий ликбез по структуре.NET программы, для тех кто не знаком с разработкой под данный Framework: весь код, написанный на любом.NET языке (C#, Visual Basic, F#, Delphi.NET) компилируется в особый Intermediate Language, называемый обычно IL или MSIL . Это что-то типа ассемблера, только весьма умного и обладающего весьма мощными инструкциями. И это, в принципе, такой же равноправный язык как и C#, только синтаксис похуже (а возможности больше). Кроме того, в программе на.NET активно используются метаданные, т.е. вся информация о классах, метода, пропертях, атрибутах и всём остальном сохранена в исполняемом файле.
Т.е. на самом деле, декомпиляция программы не очень верное понятие в данном случае. Она и так вся в открытом виде лежит, а инструменты в виде Reflector"а занимаются тем, что приводят конструкции MSIL к соответствующим конструкциям C# или другого языка, повышая читабельность кода.

Перейдём, собственно, к взлому.

0. Обнуление триала

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

Посмотрим на нашего подопытного рефлектором:
Немного погуляв по коду, находим интересную строчку в конструкторе MainForm


Открываем редактор реестра, идём в HKEY_CURRENT_USER\Software\Ultrapico\Expresso и видим следующие ключи:


Удаляем их и получаем ещё 60 дней работы.

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

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

1. Написание keygen"а

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

Открываем рефлектор и ищем код на предмет классов содержащих License или Registration, видим:

При вводе имени и кода по имени вычисляется некий хеш, который и сравнивается с кодом.


Данный хеш использует DES и всякие префиксы


Байты конвертятся в строку с помощью данного метода.

Теперь всё выяснилось, открываем IDE и копируем все необходимые куски кода (или сами реализовываем). Осталось только выяснить, какие значения у Prefix, Suffix и параметры реализации MyDES. Я их приводить не буду, это уже технические детали.

В результате генерируем ключ на любое имя и видим:


Бинго!

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

2. Использование враппера

Проверка корректности лицензии, достаточно хлопотное дело, и небыстрое. Поэтому разработчики программ обычно проверяют лицензию один раз, и дальше используют полученный флажок - валидна/невалидна (как вариант насколько валидна, если допускается несколько типов лицензии, отличающихся возможностями). Тут можно на этом сыграть, использовав следующий алгоритм:
  1. Указать программе, что лицензия уже проверена
  2. Указать программе, что лицензия корректна
Как это сделать? Я уже упоминал о наличии метаданных в исполняемых файлах в начале, этим и воспользуемся. Посмотрим как запускается программа и как проверяется лицензия:


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

Воспользуемся этим:
Сделаем новый проект, добавим Reference на Expresso.exe и запустим его через себя:


Смотрим, что получилось:


Ну кто бы сомневался.

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

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

Но все эти защиты приведут к тому, что злоумышленник будет использовать

3. Физический взлом программы

Тут уже всё серьёзно. Программа целиком декомилируется в MSIL а из него уже собирается обратно (помните, я писал, что MSIL это такой же язык как и C#?). Для декомпиляции нам понадобится утилита из SDK под названием ildasm , а для компиляции компилятор из.NET Framework ilasm .

Запускаем ildasm, открываем Expresso.exe и сохраняем дамп в.il файл. Находим уже рассмотренный метод IsRegistered и добавляем немножко своего кода (без меток):

Потом берём ilasm и собираем всё назад (не забыв подключить ресурсы).

Что делает данный код: устанавливает нужное имя для регистрации (не обязательно), и возвращает статус, что всё хорошо.
Чтобы было понятнее, так это выглядит в рефлекторе, в C#

Т.е. вполне очевидно, что теперь всё будет хорошо:

Немного про код в MSIL: это стековая машина, у которой нет регистров, все операции имеют вид: засунуть в стек нужное количество параметров, выполнить функцию, которая заберёт нужное количество параметров и положит результат. Ну и обратно: установить значение переменной тем, что лежит в стеке. Чтобы лучше понять работу всего этого рекомендую простой приём: пишите маленькую программу на привычном языке, компилируете, смотрите что получилось в MSILe и разбираетесь в конструкциях языка.
При этом некоторые вещи в MSIL можно сделать очень красиво, например поменять две переменные местами - 4 симпатичных строчки (на C# меньше, но некрасиво).

Чем жертвует злоумышленник: подписью программы, теперь она уже не автора, а его. В некоторых случаях это проблема, если в программе используется множество библиотек. Тогда злобному хакеру придётся разбирать их все и собирать их заново, но если он с этим справится, то у него будет «своя» версия программы подписанная его ключом.

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

Заключение

Думаю я рассказал, как просто всё можно разломать на.NET, если создатель не приложил усилий для защиты своей программы. А вы уж решайте, стоит ли делать защиту и тратить на это время и ресурсы. А может просто сделать web-систему, или же бесплатную ограниченную версию. Решать разработчикам.

KeyGen - наверное самая распространенная программа на дисках Optimum 2006 , однако для ее использования нет Help"a. Конечно, эта утилита очень проста, но на всякий случай рекомендую прочитать памятку по ее использованию, а за одно и правильной активации с использованием серийного номера и генерируемого инсталляционного кода:

  1. Начните установку нужной вам программы. При запросе серийного номера запустить файл keygen.exe из директории Crack . Если требуется - указываем желаемое имя пользователя программы и/или страну (например: RU). Затем генерируем серийный номер .
  2. Полученный серийный номер нужно ввести в поле Серийный номер в программе и продолжить установку не закрывая генератор ключа .
  3. После установки запустите программу и выберите Активировать программу сейчас, затем по факсу или телефону (любой вариант кроме on-line соединения с их сервером). В интернет выходить НЕ надо ни в коем случае. В дальнейшем в настройках программы желательно отключить проверку "наличия обновлений".
  4. На основе введенного вами серийного номера и неких параметров компьютера программа сформирует инсталляционный ID для отправки "по телефону или факсу". Введите полученный инсталляционный ID в генератор, и нажмите Generate . Полученный Activation Code введите в поле Активационный код в программе.

    Важно : при генерации кода активации в должен быть указан все тот же серийный номер. Если по каким-либо причинам keygen пришлось закрыть во время установки, то скопируйте серийный номер обратно в нужное поле, добавьте инсталляционный ID и сгенерируйте код активации .

    Примечание : почему нельзя при активировании программы выбирать он-лайн соединение и почему нужно отключать проверку обновлений или новых версий?...
    На официальных сайтах многих программ хранятся списки "правильных" серийных номеров и зарегистрированных пользователей. Вас там нет. А при проверке обновления на сервер будет послан все тот же серийный номер и сделана проверка кода активации. В результате ваша копия будет заблокирована и вам придется в лучшем случае просто переустановить программу, а в худшем (если при удалении сохранятся некоторые ключи в реестре) - придется переустановить Windows чтобы после установки программа перестала ругаться.

Журналы по радиоэлектронике за 2006 год - полный DVD-диск с обновлениями (номерами журналов за прошлый год). Как всегда - без предоплаты, но зато с подарками для постоянных заказчиков! Компакт-диск с "Большим справочником рабиолюбителя 2006" -

$ Disclamer:
Все материалы на этих дисках предоставляются бесплатно. Вы платите только за работу по формированию и запись дисков, расходные материалы, упаковку и услуги почтовой доставки. Владельцы этого сайта - частные лица. Мы не занимаемся коммерческой деятельностью и уважаем Авторские права... Заказывая наши диски вы обязуетесь использовать их содержимое только для ознакомления и тестирования (в соответствии с Законом "О правах Потребителя") и в установленный срок приобрести легальные копии программ... Использование нелицензионного програмного обеспечения в корыстных целях - ЗАПРЕЩЕНО и преследуется по закону!

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

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

Я не буду углубляться в детали и использовать сложные инструменты для взлома. Всё будет расписано «для чайников», т.е. все инструменты будут простыми, легкодоступными и бесплатными. А основным будет Reflector , декомпилятор программ под.NET

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


Для начала краткий ликбез по структуре.NET программы, для тех кто не знаком с разработкой под данный Framework: весь код, написанный на любом.NET языке (C#, Visual Basic, F#, Delphi.NET) компилируется в особый Intermediate Language, называемый обычно IL или MSIL . Это что-то типа ассемблера, только весьма умного и обладающего весьма мощными инструкциями. И это, в принципе, такой же равноправный язык как и C#, только синтаксис похуже (а возможности больше). Кроме того, в программе на.NET активно используются метаданные, т.е. вся информация о классах, метода, пропертях, атрибутах и всём остальном сохранена в исполняемом файле.
Т.е. на самом деле, декомпиляция программы не очень верное понятие в данном случае. Она и так вся в открытом виде лежит, а инструменты в виде Reflector"а занимаются тем, что приводят конструкции MSIL к соответствующим конструкциям C# или другого языка, повышая читабельность кода.

Перейдём, собственно, к взлому.

0. Обнуление триала

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

Посмотрим на нашего подопытного рефлектором:
Немного погуляв по коду, находим интересную строчку в конструкторе MainForm


Открываем редактор реестра, идём в HKEY_CURRENT_USER\Software\Ultrapico\Expresso и видим следующие ключи:


Удаляем их и получаем ещё 60 дней работы.

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

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

1. Написание keygen"а

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

Открываем рефлектор и ищем код на предмет классов содержащих License или Registration, видим:

При вводе имени и кода по имени вычисляется некий хеш, который и сравнивается с кодом.


Данный хеш использует DES и всякие префиксы


Байты конвертятся в строку с помощью данного метода.

Теперь всё выяснилось, открываем IDE и копируем все необходимые куски кода (или сами реализовываем). Осталось только выяснить, какие значения у Prefix, Suffix и параметры реализации MyDES. Я их приводить не буду, это уже технические детали.

В результате генерируем ключ на любое имя и видим:


Бинго!

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

2. Использование враппера

Проверка корректности лицензии, достаточно хлопотное дело, и небыстрое. Поэтому разработчики программ обычно проверяют лицензию один раз, и дальше используют полученный флажок - валидна/невалидна (как вариант насколько валидна, если допускается несколько типов лицензии, отличающихся возможностями). Тут можно на этом сыграть, использовав следующий алгоритм:
  1. Указать программе, что лицензия уже проверена
  2. Указать программе, что лицензия корректна
Как это сделать? Я уже упоминал о наличии метаданных в исполняемых файлах в начале, этим и воспользуемся. Посмотрим как запускается программа и как проверяется лицензия:


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

Воспользуемся этим:
Сделаем новый проект, добавим Reference на Expresso.exe и запустим его через себя:


Смотрим, что получилось:


Ну кто бы сомневался.

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

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

Но все эти защиты приведут к тому, что злоумышленник будет использовать

3. Физический взлом программы

Тут уже всё серьёзно. Программа целиком декомилируется в MSIL а из него уже собирается обратно (помните, я писал, что MSIL это такой же язык как и C#?). Для декомпиляции нам понадобится утилита из SDK под названием ildasm , а для компиляции компилятор из.NET Framework ilasm .

Запускаем ildasm, открываем Expresso.exe и сохраняем дамп в.il файл. Находим уже рассмотренный метод IsRegistered и добавляем немножко своего кода (без меток):

Потом берём ilasm и собираем всё назад (не забыв подключить ресурсы).

Что делает данный код: устанавливает нужное имя для регистрации (не обязательно), и возвращает статус, что всё хорошо.
Чтобы было понятнее, так это выглядит в рефлекторе, в C#

Т.е. вполне очевидно, что теперь всё будет хорошо:

Немного про код в MSIL: это стековая машина, у которой нет регистров, все операции имеют вид: засунуть в стек нужное количество параметров, выполнить функцию, которая заберёт нужное количество параметров и положит результат. Ну и обратно: установить значение переменной тем, что лежит в стеке. Чтобы лучше понять работу всего этого рекомендую простой приём: пишите маленькую программу на привычном языке, компилируете, смотрите что получилось в MSILe и разбираетесь в конструкциях языка.
При этом некоторые вещи в MSIL можно сделать очень красиво, например поменять две переменные местами - 4 симпатичных строчки (на C# меньше, но некрасиво).

Чем жертвует злоумышленник: подписью программы, теперь она уже не автора, а его. В некоторых случаях это проблема, если в программе используется множество библиотек. Тогда злобному хакеру придётся разбирать их все и собирать их заново, но если он с этим справится, то у него будет «своя» версия программы подписанная его ключом.

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

Заключение

Думаю я рассказал, как просто всё можно разломать на.NET, если создатель не приложил усилий для защиты своей программы. А вы уж решайте, стоит ли делать защиту и тратить на это время и ресурсы. А может просто сделать web-систему, или же бесплатную ограниченную версию. Решать разработчикам.

Автор - IrchaV . Это цитата этого сообщения

Как пользоваться keygen, crack, patch

Ни для кого не секрет, что в нашей стране 90% установленных программ на компьютерах не являются лицензионными. Программы уже взломаны, но чтобы их установить требуются некоторые навыки. В статье рассмотрены самые распространенные способы установки пиратских программ. Как пользоваться keygen? Как пользоваться crack? Что такое request code? Как пользоваться patch?

1. Инструкция по установке в текстовом файле

Первое, на что надо обратить внимание, есть ли в этой папке файл «readme.txt» или «прочти меня.txt» (могут быть и другие названия). Очень часто в нем написана инструкция по правильной установке программы. Если файл с инструкцией есть, то, смело, открываем его и следуем инструкции. Если файла нет, то ситуация немного усложняется.

2. Серийный номер в текстовом файле

Для подтверждения прав на программу иногда требуется серийный номер. Имея его, вы сможете установить программу бесплатно.

Серийный номер может потребоваться либо при установке программы, либо при первом запуске уже после установки. Пропустить этот шаг вы не сможете, дальше программа не пойдет, пока вы не введете серийный номер (рис.1).

Пример серийного номера: ADE-R119-F196-k9BA-17CD

В папке с программой (в той же папке что и установочный файл) может находиться файл с серийным номером. Чаще всего он называется «Серийный номер», «Serial number», «Ключ», «key», «crack». Открываем этот файл, копируем серийный номер и вставляем его в нужное место.

Последовательность действий:

  1. Открыть текстовый файл, скопировать серийный номер (Cntr+C)

3. Как пользоваться keygen

В папке с программой может находиться файл-программа (keygen, crack, ...).

Вот пример такой программы, если ее запустить (рис.2):

рис.2 Генератор серийных номеров

Нажимаем на кнопку «Generate» (рис.3)

рис.3 Генератор серийных номеров с ключом

Копируем серийный номер, вставляем в нужное место и все готово. Продолжаем установку, либо нажимаем "Ок" (возможно "Готово", "далее" ...), если установка уже завершена.

Последовательность действий:

  1. Начать установку программы, пока не потребует серийный номер
  2. Открыть файл Keygen
  3. Сгенерировать серийный номер и скопировать (Cntr+С)
  4. Вставить его в то место, где требуется (Cntr+V)

4.Получение доступа при помощи "Request code"

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

рис.4 Начало регистрации с "Request code"

Иногда нужно выбрать режим регистрации, например, выбрать «ввести серийный номер». На экране появляется окно для ввода серийного номера. (рис.5)

В данном случае:
- Get an activation code - получить код активации
- Enter an activation code - ввести код активации (нужный нам вариант)

Открываем из папки с установкой программы файл keygen.exe (crack.exe, ...) (рис.6).

Теперь нам нужно скопировать "Request code" из окна на рис.4 (рис.5) и вставить в окно на рис.6. Выделяем Request code и нажимаем Cntr+C (горячая клавиша копировать).
Вставляем в последнее окно скопированный код (Cntr+V).

Обратите внимание!!!
Код скопировался не полностью, а только первая строчка. Вторую строчку кода нужно скопировать отдельно, в окне на рис.6 нужно поставить пробел, скопировать и вставить оставшуюся часть "Request code". Должно получиться так (рис.7):

рис.7 Генератор после вставления "Request code"

После этого в программе на рис.7 нажимаем кнопку «Calculate» (иногда называется Generate). Должно получиться так (рис.8):

Копируем "Auth code" из программы рис.7 в окно на рис.5 и получаем так (рис.9):

Нажимаем Next или Ok. Нам должны сообщить, что регистрация прошла успешно. Теперь программой можно пользоваться бесплатно.

Такая ситуация встречается довольно часто. Главное не забывайте, что Request code состоит из двух строчек.

Последовательность действий:

  1. Установить программу
  2. Запустить программу
  3. Выбрать режим ввода серийного номера (Enter …)
  4. Открыть keygen
  5. Скопировать "Request code" из программы в "keygen" (обе строчки)
  6. В "keygen" нажать кнопку сгенерировать
  7. Скопировать код, полученный в "keygen"
  8. Вставить его в требуемое место в программе (Cntr+V)
  9. Нажать готово

5. Как пользоваться patch

Иногда для бесплатной установки программы нельзя просто сгенерировать серийный номер. В таких случаях используют специальные программы, которые изменяют файлы так, чтобы программа не требовала денег. В папке с установщиком программы должен находиться файл "Patch" (он может называться - patch, keygen, crack, ...). Это и есть программа, которую еще называют патч.

Первое, что мы должны сделать, это установить программу (ту, которую мы хотим сделать бесплатной). После установки открывать программу не надо.

Дальше, надо переписать patch (или другой файл-патч) в папку, в которую мы установили программу. Скорее всего это диск С, папка Program files, папка с название программы (C:/Program files/«название программы»).

Вот пример файла patch.exe (рис.10):

рис.10 Программа-патч

Чаще всего в этом файле только одна кнопка. В данном случае это кнопка Apply patch. В некоторых случаях она может называться Crack. Нажимаем на эту кнопку и программой можно пользоваться бесплатно.

Последовательность действий:

  1. Установить программу
  2. Скопировать Patch.exe в папку, куда установили программу
  3. Открыть Patch.exe
  4. Нажать единственную кнопку в программе "Patch"
  5. Запустить программу

6. Файлы, для установки программы бесплатно, отсутствуют

Может быть и такое, что программу вы скачали без пиратского «лекарства». То есть, без готовых серийных номеров, кейгенов или патчей. Тогда задача усложняется. Лучше конечно скачивать программы с готовыми «лекарствами». Но что если все-таки такая проблема встала?

Последовательность действий:

  1. Устанавливаем программу
  2. Узнаем полную версию программы. (Например, Daemon Tools Lite 4.35.6)
    Чаще всего в названии установочного файла присутствует полное название. Если программа уже установлена, то в пункте меню «Справка» есть строка «О программе». Там можно тоже узнать полную версию программы. Если не получилось найти полное название, вводите в поиск неполное.
  3. Если при установке или после требует серийный номер, то в поиске, например yandex.ru, вводим: серийный номер для «полное название программы» Если требуются другие виды регистрации, то в строке поиска, например yandex.ru, вводим: crack для «полное название программы»
  4. Перебираем всевозможные ссылки до тех пор, пока не скачаем подходящее лекарство или серийный номер
  5. автор статьи
  6. 2011 Игорь Баянчиков

Оригинал записи и комментарии на

Итак, начнем с теории. Crack (крэк, кряк) - программа, позволяющая осуществить взлом защиты программы, установленной разработчиками для ограничения функциональных возможностей. Как правило, кряк создается для массового использования, и создается программистами-энтузиастами без преследования выгоды. Существуют целые коллективы программистов, занимающихся взломом ПО, например «TEAM ROR», «Team EQUiNOX», «BEAN», «SSG» и другие. Для слова кряк используются следующие выражения: лекарство, таблетка, медицина, пилюля, аптека и т.п.. Вот самые типичные способы защитить программное обеспечение от "несанкционированного" использования:

Условно бесплатное ПО (shareware) - программы которые можно бесплатно скачать и использовать определенный промежуток времени по прошествию которого за программу придется заплатить, если Вы решили пользоваться ей дальше. Срок бесплатного пользования программой составляет, обычно, 30 дней.

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

Триал- версия (trial) - в принципе, полный аналог условно-бесплатного ПО (shareware) за исключением того, что часто в trial-версиях пользователю предоставляется не определенный бесплатный срок использования программы (30, 14 дней), а определенное количество запусков программы. Можно сказать, что программы типа trial и shareware это одно и тоже.

Защита от копирования (retail software) - Эта защита препятствует только тому, чтобы пользователи не делали копии и не устанавливали программное обеспечение на нескольких компьютерах, не покупая лицензию.

Защита на дисках (игры) - эта защита обычно используются в играх; Для запуска игры вы должны иметь оригинальный компакт-диск. Типичным кряком этой защиты является NoDVD или NoCD, реже - специальный драйвер.

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

Серийный номер, патч, генератор ключей и т.д., принято называть кряком или крэком (от англ. crack). Теперь мы расскажем о каждом подробнее.

Существует несколько основных типов кряков:

Серийные номера aka сериалы (serial numders, s/n). Это самый простой тип кряка - последовательный специальный текстовый код, позволяющий снять ограничения или демонстрационный период работы программы. Чаще всего способен работать на нескольких компьютерах, если не проверятся разработчиком через интернет. Чтобы зарегистрировать программу, использующую этот вид регистрации, нужно: Запустить программу и, обычно на вкладке О программе -> Ввести серийный номер или регистрация, вставить этот код.

Регистрационные файлы aka ключи (regfiles, keyfiles). По существу, рег-файлы очень похожи на серийники, обычно это специальный файл с расширением *reg. Если открыть кей-файл любым текстовым редактором, то можно увидеть серийный номер, если он, конечно не зашифрован. Чтобы активирвать программу, регистрирующуюся этим способом, обычно нужно запустить *reg файл и просто согласиться с изменениями реестра. Бывают исключения среди *reg файлов, это могут быть просто файлы, не относящиеся к реестру; их нужно скопировать в папку с программой, также есть вариант типа lisence.dat и им подобных случаев. Разработчикам программы довольно легко противостоять распространению кей-фалов, поскольку, в большинсве случаев, они могут просто заблокировать ключ, добавив его в черный список. Например, ключи Касперского Антивируса блокируются таким способом.

Генератор ключей aka кейген (keygenerator, keymaker, keygen) - небольшая программа, которая генерирует криптографический ключ для кодирования данных или псевдоподлинные CD-ключи или серийные/регистрационные/активационные номера для регистрации/активирования ПО. Генератор ключей сделать намного сложнее, чем любой другой кряк, поскольку крэкер должен не только полностью понять последовательный алгоритм генерации объектного кода, но также и быть в состоянии обновить его. За частую, создание keygen"а занимает несколько дней или даже неделю. Keygen использует те же алгоритмы, что и защита, поэтому его создание - это также результат взлома защиты, а точнее успешного исследования алгоритмов защиты с помощью отладчика либо дизассемблера. Так, можно скачать бесплатную демо (trial) версию и с помощью кейгена превратить ее в полнофункциональную, введя сгенерированный серийный номер.

Разработчики ПО пытаются предотвратить пиратство, используя активацию продукта, требующую от пользователя соединиться с интернетом или позвонить по телефонному номеру для дальнейшего использования ПО, как, например, Adobe . Новейшие кейгены также содержат метод обхода активации продукта. Также, существуют программы, которые сами генерируют специальный ключ, который нужно предоставить разработчику вместе с платой, чтобы получить ключ активации. К счастью, многие крэкеры умеют обходить такую защиту. Пример такой защиты можно увидеть в программах EzGenerator, Incomedia Website X5 Evolution и др.

Patch. Патч - самый широко распространенный тип кряков - маленькая программа, которая изменяет целевые программные файлы, чтобы удалить или изменить часть кода, который ответственен за ограничения защиты или регистрационный процесс. В результате исправление или заставляет программное обеспечение "думать", что оно регистрировано; или например, открывает недоступные в демо-вериях ключевые кнопки или закрытые функции или просто удаляет модуль защиты и т.п. Патч легко создать, сравнивая двоичный код регистрированной версии и trial-версии и исправляя различия между ними. Для регистрации программы необходимо скопировать патч в папку с установленной программой и пропатчить *.exe или *.dll-файл.

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

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

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

Cracked EXE. Cracked EXE - это взломанный EXE файл, в котором нейтрализован модуль защиты. Также встречаются случаи с Cracked DLL. Скопировав с заменой такой файл в папку с программой вы получите полнофункциональную версию программы. Иногда, *.exe бывают сломаны не до конца, и программа все еще требуют ввести серийный номер, то ее можно ‘добить’, введя любой набор символов, как правило это бывает 11111-11111-11111 или aaaaa- aaaaa- aaaaa.

NoCD/NoDVD. NoCD/NoDVD является аналогом Craсked EXE.

Лекарство - более обобщенная форма всех вышеперечисленных понятий.

Хорошо, теперь мы знаем о типах crack"в и что они делают. Как правильно использовать их?

Во-первых, проверьте загруженный кряк хорошим антивирусом, например NOD32, Kaspersky. Вообще, мы рекомендуем делать это с любым исполняемым файлом, загруженным из Интернета. Помните, что крэкеры никогда не заражают свои кряки вирусами; поскольку один известный крэкер сказал: "Я не собираюсь проводить недели работы, чтобы украсть Ваш пароль ICQ или форматировать Ваш жесткий диск". Тем не менее, советуем ВСЕГДА, проверять кряки антивирусом, перед применением.

Во-вторых, читайте NFO-файл , прилагаемый к кряку! В этом файле, обычно содержится краткая инструкция по применению лекарства, также бывают случаи с ‘Readme.txt’, эти файлы всегда следует читать, перед тем, так использовать кряк. чтение NFO/Readme сохранит Вас от многих проблем позже.

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

Если все прошло удачно, то, теперь, программа должна работать без ограничений!

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