Главная » Статьи » Крэкинг |
Введение в крекинг
НачалоОгорчу тех кто думает, что заняться крекингом можно просто так без определённых знаний, навыков, упорства. Не получится просто взять скачать нужный для взлома софт и взломать программу. Не думай, что программа ломается за 5 минут (хотя если уже есть опыт, и защита программы на 1 то это возможно даже ещё и за более короткий промежуток времени). Итак, если ты загорелся желанием научится крекингу, готов прочитать уйму документов, потратить много времени то это статья для тебя. Для начала тебе нужно изучить основы ассемблера, даже не обязательно учиться писать на нём программы просто нужно знать значение функций и команд, нужно уметь читать код. Как ты думаешь сможешь ли ты читать книгу на испанском языке не зная его ?Из материала по асму советую почитать: рассылку Калашникова (http://www.Kalashnikoff.ru), "Ассемблер IBM PC" Юрова, из статей "Ассемблер для Cracker'ов" от Dr.Golova и "Cracking для карапузов" от Crack. Освоив материал, ты должен знать предназначение функций, немного разбираться в ассемблерском коде программы. Понять, что любая программа, написанная на любом языке программирования, передаётся для обработки процессору в ввиде машинного кода, для дальнейшей обработки и выполнения заложенных в неё функций. Машинный код для того, чтобы он был читабельным преобразуется в ассемблер. Его то мы и можем просмотреть, изменить с помощью специальных программ. Но изменения не возможны если программа упакована.Упаковка программы производится для того, чтобы уменьшить её размер и защитить от взлома (например, UPX, Aspack и многие другие). Разновидности и предназначение программ(OllyDBG) (kWdsm) (QUnpack) (hiew) (tpe) Весь этот софт можно скачивать по отдельности, но есть и комбинированный вариант, называется он CrackersKit (версия на время написания статьи: 1.1, вес: 7 мб) скачать его можно с cracklab.ru почти все вышеперечисленные программы там есть (или их аналоги).После того, как мы имеем начальные знания в этой области, и у нас имеется нужный для исследования софт разберёмся в Видах ПО: shareware - условно-бесплатное ПО freeware - бесплатное ПО adware - рекламно оплачиваемые программы commercialware - Платить! donation ware - плата при желании Цель - программы типа shareware, ad ware и commercial ware. Панель инструментов в Olly и DASMДумаю вы уже имеете хоть какой-то опыт работы с олли (если нет можете почитать статью Olly Debugger от А до Я cracklab.ru) Напомню функции отладчика, с которыми мы будем работать: Всегда на виду должны быть CPU (главное окно олли), Breakpoints и Patches. Окно CPU: Разберёмся в предназначении самых основных функций дасма. Для того, чтобы анализировать код защиты для начала его нужно найти. Способы поиска кода проверки (с помощью OllyDGB и kWdsm)Цель поиска - розыск и произвольное модифицирование кода, либо нахождение валиного серийного номера. Поиск кода проверки обязателен для взлома программы. Основное предназначение этого кода: 1 сверить валидность серийного номера (введенных данных в форме ввода СН) 2 перейти по адресу, если он верен/неверен 3 сообщить о не/корректной регистрации Основные способы нахождения кода проверки: 1 брейкпоинт (Intermodular call) 2 Referenced 3 поиск по средствам окна (дампа) памяти 4 поиск в стеке 5 поиск с помощю kWdsm Поставить брейкпоинт можно либо через _командную строку, например: bpx MessageBoxA bpx - команда точки прерывания MessageBoxA - функция, на которую устанавливается брейкпоинт о предназначениях функций можно узнать из СПРАВОЧНИА ПО WinAPI (cracklab.ru) Либо через _поиск межмодульных вызовов (Intermodular calls) например: находим функцию MessageBoxA кликаем правой кнопкой и выбираем Set breakpoint on every call MessageBoxA При таком виде поиска используется фраза которая выводится например при вводе некорректного серийного номера. Запускаем программу, вводим СН, программа ругается что СН не верен (например так: Wrong SN!Trying again) => для поиска и будет использоватся данная фраза, дальше идём в All referenced text string (котора во вкладке Search for) и ищем эту фразу. Пример взлома программ с разными типами защит1 форма введения СН 2 надпись в программе (например, Unregistered) Программы для исследования берём либо с журнальных болванок (ПЛ, хакер, игромания), либо с сайтов типа softodrom.ru, и др (ищем там шарованный софт (т.е вид shareware)и исследуем). Теоретический план взлома: Начнём непосредственно сам процесс поиска кода и его взлома, я покажу вам эти операции на примере EscapeClosePro Все нижеперечисленные действия рекомендую выполнять вместе со мной, так как это тяжело воспринимается только путём прочтения материала. Если ты пока не понимаешь как это у меня получилось потренируйся на крякмисах можно от фантома и крафта (ngh.void.ru/soft/d/crackme.rar; ngh.void.ru/soft/d/craft1.rar ) EscapeClosePro Метод защиты: СН, надпись Unregistered в окне программы Пакер/протектор: отсутствует (а узнали мы это благодаря PEiD, а если бы программы была запакована, то просто нужно было бы найти под неё анпакер) Стоимость: 100 руб :) Взлом путём поиска СН: Этот способ взлома характеризуется тем, что задача состоит в том чтобы найти код проверки это может быть путём установки брейкпоинта на нужную команду, либо просмотром ссылочной текстовой строки, либо просто просмотром дизассемблерного кода программы и поиска валидного серийного номера. имя vizor СН vizor программа остановилась на адресе 0040262E по этому адресу находится команда call с помощью этой команды выводится (в нашем случае) текст: Неправильный код!.Обратим внимание на окно дампа памяти (в главное окно CPU), попытаемся найти интересные вещи путём просто просмотра кода, скролим вверх и видим по адресу 0012F3D0 какие-то цифры больше 10 цифр на взгляд: 56C520AE713B563D5119 возникает подозрение на СН, тестим и облом. никто не запрещал использовать несколько (хоть все) способы поиска сразу Тепер устанавливаем брейкпоинт не на само сообщение, а на команду извлечения фразы (Неправильный код!) т.е на push.Снова заполняем формы ввода, ок, программа остановилась по адресу 00402620 (там где PUSH 0).Снова обращаем свой взор на дамп памяти и видим там: 0012F438 004088E8 ASCII "9B2BC2C55272E0C32B44" << подозрение на СНТестируем ещё 1 найденный нами СН на валидность.(имя vizor sn 9B2BC2C55272E0C32B44) и Спасибо за регистрацию! Смена вывода функции: Смена вывода функции в свою очередь характеризуется поиском кода проверки, произвольным изменением его на циклический т.е на такой который при любых введённых данных будет считать себя зарегистрированным. Опять же устанавливаем брейкпоинт на MessageBoxA как и раньше, вводим теже самые данные в поле имя, СН, останавливаемся там же. Только теперь движемся выше в поиска перехода (джампа, прыжка).По пути наверх анализируем все переходы. А вверх продвижение производится потому, как, если например функция вывода сообщения находится грубо говоря на адресе 5, то её тестирование происходит выше этого адреса, так как тестирование происходит всегда выше результата (понятие стека). Скроля выше видим: 004025CD > 85C0 TEST EAX,EAXАнализируя JNE 00402620 переход, обращаем внимание в первую очередь на адрес джампа т.е 00402620.Смотрим что находится по этому адресу, видим что вывод сообщения о том что программа незарегистрированна.Теперь если мы изменим переход JNE (jump if not equal т.е прыжок если не равно) на JE (jump if equal т.е прыжок если равно).Двойным кликом левой кнопки мыши нажимаем на: 004025D4 74 4A JNE SHORT EscapeCl.00402620и меняем JNE на JE.Теперь любой введенный СН программа считает за верный (конечно кроме настоящего СН:), а происходит это из-за того, что её вывод функции изменён таким образом, чтобы программа всегда возвращала положительный результат при любых введённых данных. Но это её не всё, не стоит торопиться и бежать патчить 1 вывод этой программы. Вспомним, какой ещё способ защиты использует программа? верно, простая на первый взгляд надпись Unregistered в окне программы. Просто после перезапуска программы, она смотрит была ли изменена это надпись на что-то другое и если это так то она считает себя зарегистрированной, но у нас такого небыло поэтому ещё не всё сделано двигаемся дальше. Устанавливаем брейкпоинт на уже достаточно поднадоевшую MessageBoxA. Начинаем рассуждать если программа незарегистрирована то у неё видно надпись Unregistered следовательно где-то в коде программы она должна быть.Начинаем поиск, но перед этим просто проскролим код и посмотрим его.. скролим вниз и видим: 0040265F . 85C0 TEST EAX,EAX << сравнение данных в регистрах"SetDlgItemTextA - функция заголовка или текста в окне" А вот и это сообщение. Начинаем анализ кода. Видим стандартную конструкцию проверки содержимого регистров и функцию джампа. JE 00402686 - JE - переход дальше по коду. Смотрим что находиться по адресу 00402686 а там находится сообщение о том, что программа RegiRegistered to: => если изменить JE на JNZ программа при людом раскладе считает себя зарегистрированной и пишет об этом в своём главном окне. Таким образом изменив эти 2 функции программа всегда будет зарегистрирована и всё это балгодаря всему 2-м байтам изменённым в коде. Патчинг: Патчинг программы производится непосредственно после взлома программы. Для того, чтобы пропатчить нашу подопытную программу нужно изменить: адрес функция и изменениеДля патчинга будем использовать hiew, о командах hiew'a можно узнать из моей статьи (ngh.void.ru/lec/crack.html). До того, как мы будем производить патчинг программы нужно создать папку (где поудобнее, можно в корне диска) и скопировать туда exe файл EscapeClosePro, на тот случай если мы что-то сделали не верно. После того, как мы его скопировали, запускаем hiew находим и открываем в ней наш файл (EscapeClosePro.exe).На этом месте я хотел бы немного рассказать об основных опциях hiew'a.В этом меню выбираем Decode. Главная панель hiew'a: Загружаем наш файл, EscapeClosePro.exe в hiew, ищем либо по фразе (F7), либо по адресу (F5).Я бы советовал искать по фразе, поэтому нажимаем F7 и вводим Registered to:, после нахождения этой фразы, вспомним какие выводы нам нужно патчить: 004025D4 JNE 00402620 JEПатчим.После пропатчивания, (помнишь я говорил нам нужно скопировать ехе файл программы и патчить его) дак вот после того, как мы его пропатчили переминуем его например в p.exe и скопируем НЕИЗМЕНЁНЫЙ файл программы, т.е теперь у нас в папке 2 файла, 1 пропатчиный, а другой дефлотовый програмный.Это нам нужно для того, чтобы сделать патч с помощю патчмейкера tpe: Для того, чтобы создать патч нужно в этом окне в форме Original file (оригинальный, т.е неизменённый/непропатченный) нужно выбрать непропатченный файл, а в окне Patched File соответственно пропатченный файл.После в главном окне tpe заполнить формы, кто создатель патча, и его сайт.И во вкладке File выбрать создание патча.После сохранить под нужным именем и всё патч готов! Надеюсь это статья помогла тебе в освоении основ крекерского искусства, ответили на некоторые твои вопросы.Дальше всё будет гораздо интереснее, больше практикуйтесь, читайте и у вас всё обязательно получится. p.s к этой статье есть приложение в виде ведео-роликов взлома программы EscapeClosePro различными способами.
By Rel4nium (ngh.void.ru) | |
Просмотров: 5165 | Рейтинг: 2.0/1 |
Всего комментариев: 0 | |