Windows. Железо. Браузеры. Безопасность. Операционные системы

Как работает кряк. Как правильно использовать KeyGen и Activation программ. Серийный номер в текстовом файле

Здравствуй, дорогой читатель! Сегодня мы поговорим на столь интересную и
важную тему как КрЭк и методы защиты от него. Извините, что приходится писать старомодным литературным языком. Просто писать всё современным программерским сленгом я побоялся из-за возможного не прохода статьи в «свет». Поэтому даже смайлыков вы в ней почти не увидите. Ладно, поехали…

Для начала немного теории. Само название «КрЭк» (а в разговорном «КрЯк») переводится как «Трещина», а в разговорном английском как «Кража со взломом». Перевод говорит сам за себя(Прим. Автора - для чайников: крЭкинг - это взлом шароварного(платного, от слова «Shareware») софта(программного обеспечения), с целью получения полнофункциональной версии, разблокировки ограничений, обусловленных нелицензионной или незарегистрированной копией, а также продление/снятие триального (от слова Trial - испытательного) периода или просто убирание надоедающего окна, в котором при каждом запуске вам напоминают о регистрации). Само занятие крЭкинг появилось с появлением первого платного софта. Соответственно сразу нашлись люди(так сказать Робин-Гуды), которым очень не понравилось, что за какое-то программное обеспечение разработчики начали ещё и брать деньги. Они не просто ради практики начали ломать софт, а и свободно распространять свои «КрЯки» в интернете, наверно чтобы принести всеобщую радость халявы в мир (или чтобы дать разработчикам понять, что они смело могут полностью отказаться от всех своих защит, потому что не было ещё не сломанной защиты). Ладно, перейдём к делу…

Чтобы изучить теорию защиты от взлома ПО нужно изучить все тонкости самого взлома. Так что мы сначала начнём именно с него. Возьмём пару программ и походу разберёмся как, что и куда. Вот. В альтернативу всем остальным статьям по крЯкингу я возьму не зарубежный софт, а наш советский, то бишь софт стран бывшего СССР. Кстати, т.к. в России/Украине больше крЭкеров, чем в остальных странах, то в основном наши умельцы действительно очень хорошо защищают свой софт. Но, как известно, из всех правил всегда существуют исключения. Всё. К делу…

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

Я взял действительно нужную программу «Зодчий», которая представляет собой менеджер базы данных СНиПов(строительные нормы и правила) и ГОСТов для архитекторов. В доказательство, что она настолько полезна, я поискал в интернете на неё уже сделанный крЯк. И очень удивился, когда не нашёл ни одного бесплатного крЯка, а самый дешёвый из них стоил порядка 312грн. Что всё равно гораздо дешевле чем лицензия(уж поверьте). Кстати, не спешите качать с Интернета все подряд крЯки на интересующий вас софт, т.к. кроме угрозы «нахватать» вирусов существуют ещё и просто «лохотроны»(пустышки), в которых вам взамен на в будущем высланный вам код вы обязуетесь пополнить крЯкеру телефонный счёт или ещё что-то на подобии этого. Не ведитесь.

Ладно, вернёмся к нашему делу. По нажатии на кнопку «Зарегистрировать» появляется поле с уже введённой половиной пароля и предложение ввести вторую половинку. Давайте попробуем ввести неправильный (вдруг программа и так запустится). К сожалению прога по нажатию на Enter тут же закрылась. «Что ж тут делать?», спросите вы. А я вам отвечу. В данном случае есть 7 подходов. Перечислим каждый из них:

  • Можно открыть редактор ресурсов (ResHacker, Restorator), попробовать найти там диалог Регистрации, удалить и посмотреть не будет ли тупо прога его пропускать передавая управление главной форме.
  • Можно найти адрес команды, которая открывает именно окно регистрации и попробовать заNOPпить(заменить её ассемблерной командой nop (no operator), то есть пустой командой) её. Что в принципе тоже может привести к пропуску.
  • По текстовой ссылке найти заголовок главной формы, примерно вычислить адрес точки входа на неё и используя адрес, который мы получили в прошлом пункте(прямо перед окном регистрации), перескочить с него на адрес главной формы. Это можно осуществить командами «прыжков» jcc . Они делятся на безусловные переходы(прыжки) jmp (от англ. jump «прыжок») и условные ( je,jne …). Детальное описание к ним вы можете получить в самоучителе по ассемблеру.
  • Так же найдя адрес команды, открывающей окно регистрации (методом поиска по тексту, трассировки и отладки с использованием брЭйкпоинтов (breakpoint – точка остановки)) можно идти вручную «вверх» по течению программы(то есть полностью проследить ход её развития в обратном направлении) до тех пор, пока мы не найдём сравнение/опрос данных о регистрации. То есть при запуске программа ведь тоже «смотрит» зарегистрирована ли она или нет. И переключить эту «развилку». Тогда без всяких паролей программа будет «думать», что она зарегистрирована.
  • Узнать сам пароль. Это возможно(но далеко не всегда) сделать прогонкой проги и постоянным наблюдением за регистрами процессора, оперативной памятью и стэком (от англ. stack – «кипа»). Но в большинстве случаев пароль шифруется или просто обрабатывается так, что отладчик его не может увидеть.
  • Ну и самый распространённый метод – это метод переключения «развилки» проверки правильности пароля. То есть перехват выполнения кода(или просто поиск по заголовкам элементов управления) в том месте, где прога именно сравнивает введенный пароль с правильным паролем. Если мы эту развилку переключим на обратную, то можно будет ввести любой пароль (соответственно кроме правильного).
  • Ну и самый крайний метод. Это перехват выхода программы и его отмена. То есть в нашем случае по нажатии на Enter с неправильно введённым паролем программа даёт команду выхода. Что нам мешает перехватить её, узнать откуда она была вызвана и «произвести» отмену её вызова. Недостатком остаётся то, что придётся постоянно вводить любой пароль для работы с программой.

Вот. Чтобы осуществить крЯк хоть одним из этих методов нужно посмотреть не сжата ли программа внешним упаковщиком. Программы часто сжимают в основном из-за защиты, из-за сохранения авторских прав и просто из-за улучшения компактности программы. Самые распространённые пакеры (от англ. pack – «упаковывать»): UPX, AsPack(и AsProtect), PECompact, WinUPack, Telock, NeoLite, Yoda, PE-Shield, Armadillo… Они сжимают как и все(или не часть) ресурсы так и сам код программы, что приводит к невозможности её дизассемблирования (декомпиляции в исходный код ассемблера), отладки(трассировки) и даже редактированию ресурсов. Поэтому перед крЯком обязательно нужно проверить подопытную прогу на «сжатость».

Есть немало программ узнающих чем именно сжата программа и много анпакеров(то есть распаковщиков). Я предпочитаю 2 самых, по моему мнению, лучших из них. Это: PEiD и PE-scan . У каждого из них своя «изюминка»: PEiD может даже показать на каком языке программирования написана прога, а в PE-scan даже встроены некоторые стандартные распаковщики.

Как видим наш «Зодчий» (его исполняемый файл имеет имя ARM_ARH.EXE) ничем не сжат. А PEiD даже показывает нам, что он написан на языке Borland Delphi. Также они оба могут показать наглядную информацию о структуре файла, в которую вам вникать вовсе не обязательно. Т.к. наш файл ничем не сжат мы можем смело приступать ко всему остальному.

Давайте попробуем начать с самого простого, с проверки шифруется ли пароль. Для этого нам понадобится дЭбаггер(от анлг. Debugger – «отладчик»). Я поклонник «OllyDBG». Так как считаю, что эра SoftICE’а уже в прошлом(но он ещё актуален для отладки драйверов). Открываем в нём наш ARM_ARH.EXE, ждём пока Оля («Olly») проанализирует весь код и начинаем отладку. Жмём F9 (Run) , наш Зодчий запускается без exception’ов (от англ. exception – «исключение»). Это означает, что на него «не поставили» никакой анти-отладочной защиты.


Вводим вместо 2-ой половины пасса(пароля) что угодно и скрестив пальцы молимся, что сейчас отловим требуемый пароль. Жмём на Enter, перед нами «предстаёт» окно Olly, в статусной панели которого мы можем прочитать, что возник экзэпшн по адресу 0EEDFADE. В принципе это нам и надо. Теперь «шарим» взглядом по дампу памяти(правое нижнее окно). Тут мы видим всё, что произошло с программой с момента её запуска(переход по адресам, загрузка модулей, строк, вызов функций и возврат из них). Но, к сожалению, пароля мы тут так и не нашли. Но не расстраивайтесь, не всё уж так плохо.

Попробуем такую теорию, а что если полный пароль загружается только тогда, когда мы вводим пароль заново полностью, а не только 2-ю половину. Для этого жмём радио-кнопку «Повторно на этой ПЭВМ» и перед нами появляется абсолютно пустой TEdit(поле для ввода). Вводим снова что попало и жмём Enter. Опять таки вылетает exception с тем же адресом. Ошибка, скорее всего, обусловлена запросом программы на выход. Снова «проматываем» весь дамп в поисках паролей. И… натыкаемся на очень любопытные строки:

0012F0D0 |00FA2E18 ASCII "75ZS8H"

0012F0D4 |00FA2E04 ASCII "A3R6NR"

0012F0D8 |00FA2DC8 ASCII "75ZS8H2238859"

0012F0DC |00F9F170 ASCII "A3R6NR306767043" //если помните, это уже введён-

0012F0E0 |00F9F18C ASCII "A3R6NR306767043-?" ная половина нашего пароля.

0012F0E4 |00F9F128 ASCII "033005"

Хм. Не трудно увидеть, что ASCII-строка "75ZS8H2238859" очень смахивает(по длине) на вторую половину. Стоит попробовать. И… Поздравляю, у нас всё вышло! Скриншот можете посмотреть ниже.

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

Так перейдём к более сложному крЯку. Возьмём очень популярный на сегодняшний день плЭер: Light Alloy. Его сделала наша советская компания-разработчик Softella (http://www.softella.com/).

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

На заголовке окна LA красуется неприятная надпись UNREGISTERED. А сама регистрация проходит в таком виде:

Ну что ж, как вы уже догадались, нам следует искать «развилку» проверки пароля. Начнём. Сначала проверим не запакован ли чем-то наш LA.exe. Отправляем в PEiD и… видим, что он нагло сжат самым популярным пакером UPX.

Чтобы распаковать его лезьте в нЭт по линке и качайте распаковщик UPX’а или скачайте его вместе с GUI (графический интерфейс), мой называется UPX X-Shell 1.02 (http://www.urixsoft.nm.ru/). Откройте его в нём и нажмите кнопку «Распаковать». Если на статусной панели появится надпись «… БЕЗ ОШИБОК», значит всё в порядке.

Теперь вы увидите, что размер LA.exe увеличился с 894КБ аж до 2,75МБ и рядом с файлом появилась резервная копия LA.ex~ со старым размером. Отлично, распаковали.

Теперь к делу. Загружаем наш плЭер в Олли и запускаем(F9 ). Сразу же вылетает экзэпшн. Это первая противоотладочная защита. Но она легко пропускается Олли по нажатию Shift+F9.

Теперь ищём текстовые ссылки (string rпосле eferences), которые соответствуют смыслу. Для этого в главном окне отладки с ярлыком «С» и заголовком «CPU – main thread, module LA» нажмите правую кнопку мыши ->Search for->All referenced text strings и проматывайте в поисках чего-нибудь. Я напал на такую строку: ASCII "Registration is successful. Please restart application."

Двойной клик и мы переносимся именно на тот адрес команда которого подгружает этот текст. По логике, развилка должна быть выше. Идём вверх и видим команду сравнения test и прыжок сразу же неё.

Слово short означает – короткий, то есть недалёкий прыжок. Видим что он осуществляется (это показывает маленькая галочка слева от шестнадцатеричного представления команды) и что он перепрыгивает в этом же файле(LA) на адрес 0050417А. Сама команда je означат jump if equal, то есть прыжок при равности. С адреса 0050417А идут команды присвоения/помещения mov и помещение в регистр общего предназначения edx строки о неправильности кода.

Это означает, что в будущем она по любому вызовется, скорее всего в процедуре которая вызывается командой call (от англ. call – «вызывать») по адресу 00504186. Вот. Тогда пробуем «переключить» стрелку (условный прыжок). То есть мы прыгнем на сообщение «Access code is not valid» уже тогда, когда мы введём именно правильный пароль. А при вводе любого другого пароля программа продолжит своё выполнение вниз по коду и дойдёт до требуемого «Registration is successful». Это самый стандартный и самый простой метод крЯкинга.

Сначала завершим предыдущую сессию отладки нажав Ctrl+F2. Щёлкаем дважды по строке с нашим прыжком (адрес 0050415D) и переименовываем je в jne (jump if not equal). И снова жмём Run (F9).

Увы… Как это ни странно LA показывает всё то же сообщение о неправильности пароля. А это значит, что программа там даже и не проходит… А это просто программистский обман.

Ну что ж, мы не сдаёмся. Стрелки « > », слева от кода команд, означают, что на команду по этому адресу возможен переход программы с какого-то удалённого адреса. То есть на меченый стрелкой адрес совершается прыжок или вызов процедуры.

Тогда давайте попробуем поставить брЭйк(breakpoint) на команду с адресом 0050418B. Для этого нужно «подсветить» мышкой или клавой эту команду и нажать F2. Адрес подсветится выделяющимся цветом. Жмём Ctrl+F2 и снова F9.

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

Находим ближайшие(впрочем и единственные в этой подпроцедуре, в которой мы находимся) условные переходы:

00504096 |. 0F84 86000000 je LA.00504122

005040E3 75 2A jnz short LA.0050410F

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

Теперь чисто для теста мы меняем его с je на jne и трассируем методом Step over (покомандная отладка программы без входа в подпроцедуру) . Когда доходим до нашего второго jump’а мы видим, что он тоже «собирается» прыгнуть (Jump is taken). А если он прыгнет мы снова попадём на «… code is invalid». То есть мы столкнулись с двойной перепроверкой пароля.

Это показывает на наличие большего числа извилин у разработчиков чем одна. Хм, но нам то что. Смело меняем jnz (всё равно, что jne ) на обратный ему je и наслаждаемся результатом:

Теперь надо сохранить наши изменения в исполняемый файл. Для этого жмём правую->Copy to executable-> All modifications. Откроется окно «D», нажмите «закрыть» его. И вам предложат сохранить его. Введите что- то на подобии LA(cracked).exe.

Теперь давайте проверим на работоспособность нашу сохранённую программу. Запускаем и опа… Программа «выбивает» две ошибки. Но ведь в отладчике у нас всё работало. А это значит, что разработчики поставили ещё и двойную проверку подлинности пароля при запуске. Для этого они и просили перезапустить программу. Под видом, что она так не может обновиться.

Ну ладно. Загружаем уже LA(cracked) в Олли. Запускаем. Натыкаемся на два exception’а, пропускаем их через щифт и… перед нами красуется всё то же окно с надписью «UNREGISTERED».

Хм… А ведь почему бы не «оттолкнуться» именно от него. Рыщем в текстовых ссылках и находим:

005558A1 |. B9 6C5B5500 mov ecx,LA_c.00555B6C ; ASCII " - UNREGISTERED"

БрЭйк можно не ставить, т.к. программа точно проходит тут(эта ссылка только одна) . Идём вверх в поисках возможных полезных развилок, которых по идее должно быть две…

0055584E |. 75 70 jnz short LA_c.005558C0

0055586D |. 75 51 jnz short LA_c.005558C0

В данном случае маленькие галочки(которые обозначают эквивалентность) показывают нам, что прыжок не состоится. А значит программа «спустится» до «UNREGISTERED». Следовательно нам надо совершить эти прыжки. Меняем их на je , сохраняем изменения и запускаем уже сохранённый файл.

Всё супер. Перед нами предстаёт окошко Light Alloy’я без всяких UNREGISTERED. Отличная работа!

Так. Следующие примеры я буду описывать немного быстрее. Всё-таки вы ж уже тоже опытные…

Возьмём ещё одну советскую прогу SlyControl. Это программа для дистанционного управления компьютером со всевозможных устройств (WinLIRC, Tekram M205, FlyRC2…). Русским, или людям знающим русский язык эту программу можно регистрировать каждый месяц (кстати, куда вводить полный код я так и не нашёл), но мы ж максималисты. КрЯкнем её…

За что мы зацепимся? Хм. Отладчик распознаёт только латинские буквы. Поищем в текстовых ссылках мыло(e-mail) разработчика… Нету.

О, кнопка xUSSR. Ищем… Есть! То, что надо. Но их есть две. Ставим брЭйк на обе.

004165D7 . BA A26C4A00 mov edx,SlyCtrl2.004A6CA2 ; ASCII "xUSSR"

00416FED . BA 2C6E4A00 mov edx,SlyCtrl2.004A6E2C ; ASCII "xUSSR"

В принципе, программа полнофункциональна, остаётся только лишить её этого NUG’а(сообщения, напоминающего о регистрации). Трассируем… Пропускаем пару экзэпшнов и «натыкаемся» на первый брЭйк(для интереса можете убедиться в том, что прога не будет проходить через второй брЭйк). Но окно регистрации ещё не появилось. Так что трассируем дальше, что бы найти именно его вызов. И доходим до:

00413D6D FF92 E8000000 call dword ptr ds: ; jmp.&vcl60.@Forms@...

00413D73 . 8B0D 7CEC4A00 mov ecx,dword ptr ds:; SlyCtrl2._RegForm

В данном случае лучше пойти вверх и переключить «развилку», чем просто заполнить вызов Рег.Формы NOP’ами. Да и на главной форме красуется надпись:

Так что идём вверх… И видим одну очень примечательную структурку:

Ведь это спокойно может быть сравнение. Изменяем. К нашей с вами радости не появляется ни какого NUG’а, а заголовок формы очень изменился в лучшую сторону:

Вот так вот мы поломали пару советских программ.

А теперь я хочу вам показать как делаются NO-CD. То есть крЯки игр с целью их запуска без диска и обеспечения их полнофункциональности. Возьмём уже далеко не советскую игру «Heroes of Might and Magic V» версии 1.0 от издателя 1С. Установим. Запустим:

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

Программа ничем не сжата и написана на «Micorsoft Visual C++ 7.0 Method2 ». Загружаем её в Олли и… из-за здорового размера (11,26Мб) Олли переглючивает и он виснет на 97,7 процентах анализа файла.

Может через пол дня он и догрузится, но я со своим PIV 640 3,2GHz решил, что 10 минут хватило, чтобы понять, что он уже не загрузится.

Тогда решаемся использовать более примитивный софт для крЯка, такой как W32Dasm и HIEW. Когда-то я «сидел» только на них. Dasm(disassembler) тужится, но буквально через 3 минуты всё-таки полностью загружает и анализирует наш H5_Game.exe.

Нажимаем Ctrl+L (Load) вместо F9 (Олли) и видим снова окошко с предупреждением о вставке диска. Переключаемся на Дасм, жмём Паузу (кнопкой или пробелом) и видим, что управление не передалось сразу Дасму.

Ну ничего, жмём на повтор и видим как Дасм нам сразу показал адрес MessageBox’а, в котором мы только что нажали «Повтор»:

Походу тут конструкция cmp/jne ответственна за наш выбор нажатия кнопок («Повтор» или «Отмена»), но сам факт, что диалог уже вызван присутствует. Значит идём вверх и натыкаемся на такие строки:

Прыжки jbe и jne можете проверить, но ничего не получится. Это значит что сюда программа «прыгает» из другого участка проги. А с какого нам показывают две строчки: Referenced by a… Jump at Addresses:

и 3 адреса прыжков, с которых может быть совершён прыжок сюда, к нашему MessageBox’у.

Ищем их в асм-листинге(можно промоткой, а можно через «Перейти» Shift+F12) и ставим на все 3 прыжка брЭйки. Буквы «(C)» и «(U)» означают «Conditional»(от англ. условный) и «Unconditional»(безусловный).

:00401181 0F8598000000 jne 0040121F

:004011AB 7472 je 0040121F

:004011F8 7525 jne 0040121F

Пробуем его поменять. ГыгЫ) Не вышло?! ;-) Правильно, потому что W32Dasm не предназначен для динамического редактирования декомпилированного файла.

Для этого открываем его в 16-ричном дизассемблерном редакторе HIEW. Я лично переименовываю файл в H5_Game(c).exe.hiew и выбираю HIEW в «открыть с помощью».

Когда открывается HIEW нажмите Enter 2 раза. Это переведёт его в режим дизассемблера.

Переходим на адрес нижнего прыжка. Для этого нажмите F5 и введите адрес с точкой: .004011F8 .

Нажимаем F3(правка) и если вы хорошо разбираетесь в 16-теричной системе счисления, то можете просто заменить 5 на 4 в 2-х байтах: 75 25. А если вам тяжело это помнить, то можете нажать ещё и F2 и править саму ассемблерную команду. Сохраняем(F9). Теперь копируем с переименовкой файл H5_Game(c).exe.hiew в H5_Game(c).exe и запускаем. Но перед нами снова появляется всё то же сообщение…

Снова просматриваем код. И видим, что прыжок:

:0040121D 7533 jne 00401252

Должен перепрыгивать через MessageBox. Значит он не осуществляется.

Так давайте переключим его. Снова в HIEW. С 7533 в 7433. Сохраняем(F9). Переименовываем. И запускаем. Гы. Игра начинает загружаться.

Теперь возьмём достаточно похожий случай. Игра:«FIFA2007» (Вы скажете: «Так она у меня и так без диска идёт!». Это значит, что у вас скорее всего новая версия с русскими комментаторами или ваша игра от другого издателя). Устанавливаем, запускаем:

Посмотрим что мы сможем с этим сделать. Действуем как и в прошлый раз. PEiD нам говорит, что fifa07.exe ничем не сжат. Тут, по моему, само реально пойти самым распространённым методом отладки: ставить брЭйки на WinAPI функции, вызывающие диалог или показывающие окно. Ну, для этого их нужно знать. Вот пару самых распространённых: MessageBoxA, MessageBoxW, ShowWindow, ShowWindowEx .

Загружаем ФИФУ в Олли. Открываем, если не открыт по умолчанию, плагин «Command line » (Plugins->2. Command line). Пишем туда «bpx MessageBoxA », жмём Enter. И точно так же проделываем с MessageBoxW…

Если вы захотите выбрать брЭйк из всего списка API-функций, используемых в приложении, вы можете написать в плагин: «bpx “что угодно”». То есть не правильную API. Например: «bpx dfgsdfg ». И из списка через правую поставить брЭйк куда хотите ничего не вводя. Теперь в окне «(B) Breakpoints» появится список ваших поставленных брЭйков. В нём вы можете приостановить работу одного из брЭйков или удалить любой из них. Значит брЭйки мы поставили.

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

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

Local calls from 005EFD12, 005F0595, 005F066D, 005F0694, 005F0D6A, 005F0ED3

Это нам показывает, что наша подпрограмма вызывалась call ’ами с перечисленных адресов. Теперь остаётся поставить брЭйки на все эти call ’ы и поотменять вызов этой подпроцедуры. Для этого попереходим на каждый адрес вызова и понаставим брЭйки. Копируем первый адрес, жмём Ctrl+G , вставляем и жмём Enter. Олли сразу прыгнет на введённый адрес. Жмём F2 (брЭйк) и точно так же проделываем со всеми остальными call ’ами.

Теперь завершим прошлую отладку нажав Ctrl+F2 (Reset). И запустим снова (F9 ). Видим, что выскочил брЭйк по адресу 005F0D6A . Возможно, что будут ещё и после проверки, так что не следует ещё сильно радоваться. Пробуем заNOP ить этот call.

И вуалля: ФИФА отлично запустилась и без диска. Теперь можно наслаждаться гордо крЯкнутой игрой;-)

Ну и последний пример возьмём чуть-чуть потяжелее. Игра называется: «Deer Hunter 2004». Знающие английский догадаются, что это охота на оленей. Игра старенькая, но очень реалистичная.

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

Поехали… Прога ничем не сжата и написана на MS Visual C++ 7.0. Отлично.

Проблема состоит в том, что нам надо найти проверку подлинности диска. Т.к. даже когда я вставляю купленный диск в свой CD-ROM игра всё равно его не находит или видит, что он не оригинальный. Ну ничего, мы ему покажем;-)

На этом скрине(сокр. от Screenshot) видно, что кнопки «Создать сервер» и «на охоту» погашены. А не погашена только та, которая отвечает за подключение к серверу.

Ладно, за дело. Загружаем DH2004.exe в Олли и ищем текстовые ссылки. Чтоб не мучаться и проматывать весь здоровенный список ссылок, можно нажать правую->Search for text->«И ввести фразу» и если ссылка не одна то жать правую->Search for next.

Я предпочёл искать по цитате «Do you want». Кроме того сразу же рядом валялись ссылки из тех же диалогов об отсутствии дисков:

0040D232 push DH2004.00561B08 ASCII "Do you want to play without the CD-ROM?You may only join local games."

0040D252 push DH2004.00561B50 ASCII "Deer Hunter 2004 CD-ROM not detected"

0040D257 push DH2004.00561ADC "Please Insert Deer Hunter 2004 CD-ROM!"

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

0040D226 |. 74 28 | je short DH2004.0040D250

Он перепрыгивает наш диалог, но вызывает похожий:

0040D21D |. EB 56 | jmp short DH2004.0040D275

0040D21B |. 74 02 | je short DH2004.0040D21F

Цикловые прыжки… И наконец-то:

0040D1E0 |. 0F84 8F000000 | je DH2004.0040D275

Как видим, он явно не короткий. Заменяем на jne , пробуем и… УРА:

Жмём «на охоту!» и наслаждаемся игрой. Сеть тоже работает, проверено.

Если вы хотите сделать хороший крЭк, который бы много не занимал и который удобней бы крЯкал игру (то есть не заменой исполняемого файла), то можно воспользоваться утилитой «PatchCreationWizard». Которая может создавать маленькие программки, которые будут изменять в исполняемом файле именно те байты, которые изменили вы при крЯке. Тогда вам только стоит будет указать где находится, файл, который вы собираетесь пропатчить и нажать «Patch».

Давайте создадим как бы полностью завершённый крЯк для нашего «Охотника». Надеюсь вы сами догадались сохранить все изме- нения в другой файл(у меня это по традиции DH2004(с).exe).

Теперь запускаем PatchCreationWizard, жмём Next, выбираем «Byte Patch», Next, в поле «Your Handle» пишем свой гордый ник или ещё какую-нибудь немаловажную информацию, в «Target Title» тоже чёта в этом роде, ну я там привык писать «КрЯк на…», а в поле «Target File» нужно вписать имя файла, который будем патчить.

Жмём Next, нажимаем кнопку «Browse» справа от поля «Original File» и, соответственно, указываем оригинальный не крЯкнутый файл(DH2004.exe в нашем случае); потом жмём по «Browse» справа от «Patched File» и выбираем крЯкнутый (DH2004(с).exe).

Жмём в последний раз Next и ждём пока сгенерится наш патч. Теперь в папке с игрой появился файл patch.exe. Запустим его. Он отлично пропатчивает игру.

Теперь, после установки игры, стоит просто кинуть его в папку с игрой, запустить и нажать «Patch». И игра будет успешно крЯкнута. КрЯк(патч) теперь будет занимать всего 5КБ(примерно), вместо объёма всей exe’шки(1,7МВ – Deer Hunter; 5,2MB – FIFA, 15MB – Heroes of M&M). Весомая разница.

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

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

Ещё для запутывания крЯкеров делают не одно поля для ввода пароля, а 3-6. Это сбивает с толку потому что там столько же и сравнений. То есть нужно искать не одну «развилку», а целых 6, которые программисты могли запихнуть в совсем разные места. Но для опытного крЯкера это всё равно не представит большой проблемы.

Трюком является после ввода пароля или просить перезапуска или хотя бы закрывать диалог ввода пароля(без всяких «Ура! Пароль верен» или «К сожалению вы даже с 132 раза не угадали пароль» ;-)). КрЯкеру будет тяжело перехватить управление после ввода пароля, а уж тем более найти «развилку», т.к. ему не от чего будет оттолкнутся чтобы найти сравнение.

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

Ну почти самая лучшая защита это сжимать программы какими-то неизвестными пакерами, как например Armadillo. На которых анпакер найти ооочень тяжело или практически нереально. Но всё равно, зная(видя) алгоритм кодирования, «высшим умам» не составит труда написать обратный его ход.

А так же актуально использовать утилиты, которые скрывают/подделывают заголовок(header) файла, а именно ту часть, где прописано каким пакером он сжат. То есть в PEiD вы будете видеть, что файл ничем не сжат или «типа» сжат тем пакером, название которого вы прописали в этой программе.

Вот самые известные из них: DotFix FakeSigner, StealthPE, HidePE. Последние две это оба продукта одной и той же фирмы и делают одну и ту же функцию, просто были сделаны оба с целью заработать побольше денег.

Но самый лучший из них, на сегодняшнее время, конечно DotFix FakeSigner. Он включает и подделку header’а и анти-отладочную защиту. А для игр на сегодняшнее время лучшей защитой является «StarForce», который тоже ломают, но очень мало людей. Т.к. защита построена на снижения скорости привода и отражении лазера от специальной дорожки диска под определённым углом…

Ну вот на этом и всё. На сегодня хватит. В следующей статье я вам возможно расскажу про взлом StarForce’а и про лучший метод защиты софта – виртуальную машину.

Ну ладно. До свидания и до новых встреч на нашем свободном литературном пространстве. ;-) Пока! С вами был Uncr0wneD .

З.Ы. Данную статью нужно рассматривать только в ознакомительной форме. Автор не несёт никакой ответственности.

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

    Требуемые знания
  • Процесс установки программ
    Советую изучить до
  • Как скачать программу из интернета
  • Как качать через торрент

Изучаем содержимое папки с установочным файлом

Открываем папку с установочными файлами программы и изучаем ее содержимое. Возможно, в ней вы найдете папку crack, тогда открываем ее. Вот возможные варианты, что вы можете найти.

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. Перебираем всевозможные ссылки до тех пор, пока не скачаем подходящее лекарство или серийный номер

Заключение

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

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 Игорь Баянчиков

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

Все мы любим использовать хороший софт для своих целей. Например, для обработки графики, редактирования файлов PDF, запуска хороших игр и т. д. часто необходимо приобрести право использования. Но не у всех есть возможность (или желание) выкладывать свои кровные денежки для этой цели. И в этом случае хакеры пишут специальные программы, которые позволяют обойти процедуру оплаты. Такой софт называется в народе «кряком».

Не будем сейчас заострять внимание на том, что это неправильно и противозаконно, что использовать такое программное обеспечение нельзя. Ведь это и так очевидно, но тем не менее многие пользователи с радостью используют эту возможность. Сегодня просто расскажем вам о том, что такое «кряк», о возможных последствиях его использования.

Что это?

Итак, данный термин был заимствован из английского языка. Дословное значение crack - «ломать с треском». «Кряк»-программа при запуске попросту вносит некоторые изменения в код платного программного обеспечения, которое в результате этого перестает проверять, была ли совершена оплата за использование или нет. Следует отметить, что по аналогичному принципу работают и «патчи». Их отличие заключаются в том, что последние могут как «взламывать», так и исправлять различные ошибки и недоработки в программном обеспечении.

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

Мотивы написания

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

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

«Фаервол»

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

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

Антивирусное ПО лучше не отключать

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

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