Мануал по кряку игр с нуля

Мануал по кряку игр с нуля

overbafer1

Всех приветствую!

Вводную часть по кряку можно посмотреть здесь (клик).

Сегодня будет подробный гайд по кряку игр с полного нуля.

Вы узнаете, как исследовать файлы, производить ревёрс-инженеринг, обходить защиту и тому подобное.




Основные термины:

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

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


Наша цель:

Нашей целью будет игра, которая закриптована, и чтобы она запустилась - нужно ввести правильный пароль:

Крипт был произведён с помощью Game Protector.


Порядок действий:

  1. Узнать, зашифрована ли программа или нет.
  2. Узнать, на каком языке она написана.
  3. Выполнить соответствующие действия на основе первых двух пунктов.

Начнём с первых двух пунктов:

Нам понадобится PEiD:


Расписывать данный шаг я не буду, так как можно обойтись и без него.

А вообще, некоторые разработчики пользуются методом обхода таких программ, так что не следует на них сильно пологаться.

PEiD способен узнать, зашифрована ли программа и на каком языке она написана одновременно.


Отойдём от темы:

Можно сразу перейти к дебаггеру, но я бы хотел рассказать об ещё одном способе обхода защиты программ - через Process Hacker.

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

Например с помощью неё можно обойти родительский контроль. Смотрите об этом здесь (клик).


ВАЖНО!:

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


Используем дебаггер:

Чтобы запустить сеанс отладки (то есть выбрать программу, которую вы хотите отладить (проанализировать)), мы будем использовать OllyDBG.


Программу желательно запускать от имени администратора!

File -> Open и выбираем программу:


Нажимаем ПКМ по коду и переходим к поиску:

Search for -> All referenced text strings


И ищем строки с информацией об ошибке при вводе пароля:


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

Делаем двойной щелчок ЛКМ по найденной строчке, и программа показывает нам это в коде таким образом:


Тут действуем по ситуации.

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

Для обхода Game Protector нам достаточно поставить брекпоинт на найденной строчке в коде с сообщением о неправильно введённом пароле и запустить программу. Далее исследуем выведенную информацию в программе и найдём пароль.


Ставим брекпоинт нажатием ЛКМ по строчке в столбце Dissassembly:


Брекпоинт - преднамеренная остановка работы программы, после чего вызывается отладчик.


Открываем программу (F9 или Debug -> Run):


Вводим рандомный пароль:


Как видим, у нас не появилось в этот раз сообщение о неправильно введённом пароле. Это потому что процесс заморожен.

Смотрим в программе информацию в правом нижнем углу:


О чудо, пароль у нас!

Паролем оказалось слово "overbafer1".

Теперь мы можем вводить его для запуска программы или убрать крипт через Game Protector.


Задача посложнее:

Допустим, у нас есть файл, но разработчик постарался защитить программу от изменения.

Например, как здесь:


Скачать данный файл для теста можно здесь (клик).


Запускаем дизассемблер IDA и выбираем программу:


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


 Пподождем, пока IDA проанализирует наш файл.

После этого выберем File -> Produce file -> Create MAP file.



и сохраним МAР-файл в той же папке, где находится файл CRAKME-2.EXE.

После этого в окне отладчика OllyDbg выберем команду Plugins -> GODUP Plugins -> Map Loader -> Load labels -> Наш МАР-файл:


Функции сразу преобразились:


Смотрим список используемых программой функций:


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


Выбираем экспортируемые программой функции для работы со строками:


Попробуем поставить брекпойнт на MessageBoxA:


Нажимаем в OllyDbg клавишу F9 (или Debug -> Run) и вводим любые символы:


Адрес возврата указывает на 401E1A. Давайте посмотрим, что за код находится по этому адресу. Для этого ПКМ в верхней ячейке стека - Follow in Disassembler:


Над двумя MessageBoxA видим интересную строку:


На первый взгляд, функция сравнивает две строки текста. А зачем программа что-то сравнивает? Она берет введенную нами строку и сравнивает ее с зашифрованной в программе. Если есть совпадение, значит, появится сообщение о том, что пароль верный, а если нет — о том, что неверный. Установим брекпойнт по адресу 00401DC6 и перезапустим программу. Вводим в окне программы символы пароля и попадаем на наш брекпойнт:


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


В ЕAХ - введенные нами символы, а в EDX - символы, с которыми сравниваются наши. Это значит, что символы из регистра EDX и есть правильный пароль.


Вводим пароль и смотрим результат:

Готово!


Источник.

• Наш мерч: Магазин

• Youtube: overbafer1

• Второй Youtube: IGOR OVER

•🤖 https://overbafer1.ru/ - Эксклюзивный бот для разведки и поиска информации в сети.

• Канал по крипте: CryptOVER

Report Page