Что такое крякнуть программу. Что такое «кряк» и последствия его установки

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

Для начала немного теории. Само название «КрЭк» (а в разговорном «КрЯк») переводится как «Трещина», а в разговорном английском как «Кража со взломом». Перевод говорит сам за себя(Прим. Автора - для чайников: крЭкинг - это взлом шароварного(платного, от слова «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 .

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

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

Инструкция

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

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

Перейдите на сайт http://www.underground.xost.ru/service/cracks.htm . Он позволяет найти лекарство для программы или игры на нескольких сайтах, содержащих кряки. Введите название программы или игры, которую вы хотите взломать в поле определенной системы и нажмите кнопку «найти». Или просто скопируйте название из одного поля в другое. Перейдите на сайт кряка, нажмите ссылку «Скачать» (Download). Также можно использовать для поиска кряков специализиованные сайты. Вот список подобных сайтов: lomalka.ru, freeserials.com, crackportal.com. Огромный список с сайтами, на которых можно найти кряк к программе, содержится на данном форуме: http://www.friends-forum.com/forum/showthread.php?t=3886 .

Перейдите на сайт http://www.serials.ws/ . В поле поиска введите название и версию нужной вам программы, и нажмите кнопку “search”. Также на сайте есть топ популярных запросов по крякам, среди которых вы можете найти и скачать кряк, который нужен вам. Слева в меню выберите первую букву названия программы и нажмите по ссылке, тогда вам будет представлен алфавитный перечень программ, для которых вы можете скачать кряк.

Обратите внимание

Часто кряки содержат в себе троянские программы и вирусы, поэтому всегда проверяйте скачанное антивирусом.

Источники:

  • найти crack

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

Вам понадобится

  • - болванки для ключа;
  • - напильник;
  • - тиски;
  • - щипцы с мягкими губками.

Инструкция

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

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

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

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

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

Описанные этапы работ повторяйте до тех пор, пока не будет получен запирающий ключ.

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

Инструкция

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

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-систему, или же бесплатную ограниченную версию. Решать разработчикам.

Итак, начнем с теории. 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-файл и следовать инструкции. Помните, что некоторые кряки не работают как предназначено; в кряке может быть ошибка, или целевая защита программы могла бы быть уже обновлена. В таких случаях Вы, возможно, должны или получить старшую версию программы, или более новую / рабочую версию крэка.

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

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