eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
обновлён 2 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: yashechka (+3 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Основной форум —› Универсальный UnWrapper для игр
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 9.5 (гость)
Статус: Участник

Создано: 9 апреля 2008 20:53 · Поправил: geograph New!
Цитата · Личное сообщение · #1

Универсальный UnWrapper для игр.

В последнее время очень популярными стали небольшие логические игры от Reflexive, Alawar, LoloGames, NevoSoft и др. Объясняется это, на мой взгляд, тем, что игрушки эти относительно небольшие, что позволяет скачивать их большому количеству пользователей, порой даже интересные, а так же они являются хорошим способом убить время, сидя дома, а особенно на работе И, конечно, компании не просто так распространяют свои игры, а хотят за это денег (пусть и небольших, но порой быстрее найти кряк для игры, чем возится с ее покупкой). Вам предлагают заплатить за игру и получить серийный номер, иначе вы не сможете играть больше отведенного триального времени. В играх от Reflexive это 60 минут, от Alawar – 30 минут.
Сегодня мы попробуем взломать некоторые из этих игрушек, а также написать для них универсальный кряк. Практически все эти игры используют для защиты, так называемый wrapper. Под эти словом подразумевается программа, которая из себя запускает одну или несколько других программ. В данном случае, имеется файл игры (.rwg – в Reflexive, .wrp или .wrp.exe – в Alawar), который специально поврежден и при обычном запуске выдает ошибку или просто не запускается. Wrapper запускает этот файл и уже в памяти восстанавливает байты необходимые для работоспособности файла. Для того, чтобы убрать этот wrapper совсем, оставив только саму игру, нам нужно узнать куда и какие байты записываются.

Reflexive.

Начнем с игр от Reflexive. В примере будет использована игра Astrobatics, но вы можете взять любую другую (т.к. принцип один и тот же) или вообще ничего не брать, а просто посмотреть, что у меня получилось ;)
И так берем отладчик (я взял OllyDbg) и запускаем из под него Astrobatics.exe. Ставим бряк на CreateProcess, т.к. именно эта функция используется для запуска файла игры:

bp CreateProcessA

Нажимаем F9 (Debug>Run) появляется окно для запуска игры, где показано сколько нам осталось играть. Кстати забыл сказать, что для успешного взлома у Вас должна остаться хотя бы минута времени , если время совсем не осталось до придется пропатчить wrapper, про это я расскажу чуть позже.
И так нажимаем “Play Game” и оказываемся в отладчике. Нажимаем Ctrl-F9 (Debug>Execute till return) пока не окажемся в основном модуле (в строке заголовка должно быть написано “module Astrobat”). Тут видим, что открывается процесс (OpenProcess) и из него читаются данные (ReadProcessMemory). Трейсим программу по F8 до ReadMemory попутно запоминаем/записываем адрес буфера (Buffer), куда читаются данные, и размер буфера (BytesToRead). У меня Buffer = 0A30910, а BytesToRead = 3C. Теперь откроем буфер в дампе:

d 0A30910

Сейчас можно выделить это дело от 0A30910 до 0A30910+3C и куда-нибудь скопировать, чтобы потом по этим данным найти место в файле куда пишутся данные, но это делать не обязательно, т.к. адрес в файле можно было увидеть выше (pBaseAddress) хотя и его запоминать не обязательно, т.к. данные записываются с точки входа (EntryPoint).
Дальше по коду идет расшифровка прочитанных байт. Это все можно пропустить и поставить бряк на функцию записи в процесс (WriteProcessMemory), которая находится чуть ниже. Теперь жмем F9 (Debug>Run), проходим WriteProcessMemory и видим в нашем буфере (0A30910) уже расшифрованные данные, те самые, которые мы должны записать в файл. Выделяем их в дампе от 0A30910 до 0A30910+3C и копируем (Binary>Binary Copy). Теперь можно используя любой HEX-редактор открыть наш .RWG-файл, начиная с точки входа записать эти данные. А можно прямо здесь, используя OllyDbg: после того как скопировали буфер, открываем в отладчике .RWG-файл, после загрузки курсор должен стоять на точке входа, если в настройках не указано иное. У меня он равен 491AB4, переходим по этому адресу в дампе:

d 491AB4

Выделяем байты от 491AB4 до 491AB4+3C (размер данных) и вставляем то, что было скопировано (Binary>Binary Paste). Теперь нужно это дело сохранить – в контекстном меню дампа, выбираем “Copy to executable file” откроется наш файл, там в контекстном меню выбираем “Save File” и сохраняем его под новым именем например Astrobatics_new.exe. Теперь если все сделано верно, игра должна работать и тогда можно удалить старый .EXE и .RWG. Кстати, в отличие от официально зарегистрированной игры в нашей не открывается окошко после выхода ;)
Можно взломать проще пропатчив 2 байта в самом wrapper’е, там где проверка на регистрацию. Открываете оригинальный .EXE в любом HEX-редакторе и ищите последовательность байт:

84 C0 74 0E 8B CE

Что соответствует командам:

test eax,eax
je XXXXXXXX
mov ecx,esi

Заменяем это на

84 C0 90 90 8B CE

Т.е. убираем переход. Должно работать, правда теперь после закрытия игры Вы будете лицезреть окошко с благодарностями за регистрацию
Как реализовать данный unwrapper в программе Вы можете увидеть обратившись к исходникам в конце статьи.

Alawar.

Теперь возьмемся за игры от Alawar. Я буду ковырять игру «Маленькие бомберы возвращаются», принцип тот же самый, правда wrapper защищен ASProtect’ом и не поддается автораспаковщику Stripper. Ну что же, снимем дамп с запущенного игрового файла (.WRP или .WRP.EXE) и будем сравнивать с оригиналом. Начнем сравнение с точки входа, точка входа у дампа переместилась несколько ниже, чем у оригинала и содержит следующие команды:

push XXXXXXXX; у меня push 004C22F0
ret

Программа при запуске сразу же переходит по адресу XXXXXXXX, скорее всего, это оригинальная точка входа. Не будем добавлять переход в .WRP-файл, а просто изменим точку входа на адрес XXXXXXXX отняв ImageBase и посмотрим что получится (в моем случае 4C22F0-400000=C22F0). EntryPoint можно поменять например утилитой PETools. Вуаля, игровой файл запустился!!! (если конечно Вы все правильно сделали и принцип зашиты не поменялся). Вот и вся защита Теперь можно файл .WRP переименовать в .EXE, а старый .EXE удалить. Кстати, alawar’ские игрушки хранят информацию о том, сколько Вам осталось играть в реестре. В ветви [HKCU\Software\Aent Sys\pr\], содержатся разделы с названиями игр (только без гласных букв и на английском языке), например игра «Маленькие бомберы возвращаются» сохраняет время в разделе “lttlbmbrsrtrns”. Дальше идет подраздел из шести цифр (обычно «200711» или «200802», наверное, это год и месяц выпуска/изменения защиты), в котором содержится DWORD-параметр “Program”, он то и содержит оставшееся время в миллисекундах С самого начала он равен 1800000, т.е. 1800000/1000/60 = 30 минут. Допустим мы хотим поиграть месяц 30*24*60 = 43200 минут, 43200*60*1000 = 2592000000 ставим это десятичное значение и играем месяц ;). Максимально можно поставить шестнадцатеричное значение 0xFFFFFFFF, после этого будет написано 0 минут, но кнопка «Играть» будет активна.

NevoSoft.

Ну что же, теперь рассмотрим игры от NevoSoft, я взял “Legends of Pirates”. Здесь все довольно просто. Сама игра находится в папке “game” все остальное, то что снаружи, это файлы наг-скрина и «защиты». Файл игры называется game.dll и находится в папке “game”, если переименовать его в .EXE можно увидеть значок игры, а также увидеть что файл не запускается Теперь переименуем обратно и запустим игру. Посмотрим, что у нас в процессах. Помимо самой игры “legends_of_pirates.exe” в процессах появился файл “game\smssrv~1.dll”. Зайдем в папку “game” и скопируем этот файл с другим именем (если Вы не видите этот файл, скорее всего у Вас отключен просмотр скрытых файлов), например, “game.exe” и уберем из атрибутов файла свойство «Скрытый». Завершим основной процесс игры и попробуем запустить наш новый файл “game.exe” – он должен удачно запуститься. Как видите защита от NevoSoft просто копирует файл “game.dll”, ставит файлу атрибут «Скрытый» (для более лучшей «защищенности» ) и патчит его прямо на диске, а потом запускает.
Теперь можно удалить все файлы и папки, которые находятся рядом с папкой “game”, а содержимое папки “game” вынести наружу.

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

Скомпилированный UnWrapper http://coder-club.in/download/unwrapper.rar
Исходники http://coder-club.in/download/unwrapper_src.rar

by Geograph
© 2008

Ранг: 1.0 (гость)
Статус: Участник

Создано: 17 апреля 2008 13:13 New!
Цитата · Личное сообщение · #2

У меня не сработал анврапер от доктора карбона ни на Reflexive ни на Game House играх.


Ранг: 340.0 (мудрец)
Статус: Участник
THETA

Создано: 17 апреля 2008 18:29 New!
Цитата · Личное сообщение · #3

Beitz пишет:
У меня не сработал анврапер от доктора карбона ни на Reflexive ни на Game House играх.

Возможно, дело в том, что ты выставил маленькие тайминги. По крайней мере не Рефлексиве он работает четко, на Геймхаусе возможны сбои.
Kiev78 пишет:
Дай ссыль на скачку, штоб я долго не искал.

Вот прямой линк
gamecenter.oberon-media.com/exe/CaveDays-setup.exe?RefId=&origin=pcat_gm_pl&ext=CaveDays-setup.exe

Ранг: 10.8 (новичок)
Статус: Участник

Создано: 25 апреля 2008 15:27 New!
Цитата · Личное сообщение · #4

Классная прогамма.Работает номально.Проверял на :
Reflexive
Alawar

Ранг: 67.4 (постоянный)
Статус: Участник

Создано: 25 апреля 2008 17:13 · Поправил: Kiev78 New!
Цитата · Личное сообщение · #5

---


Ранг: 340.0 (мудрец)
Статус: Участник
THETA

Создано: 26 апреля 2008 12:10 New!
Цитата · Личное сообщение · #6

Появился еще один универсальный анвраппер от [KLKS], написанный на C++.
Поддерживаются следующие издатели:
- Reflexive Arcade
- Alawar Games
- Playrix
- GameHouse
- PopCap
В аттаче сырцы.

{ Атач доступен только для участников форума } - Greyhound_Unpacker.rar


Ранг: 118.1 (ветеран)
Статус: Участник

Создано: 28 апреля 2008 12:01 New!
Цитата · Личное сообщение · #7

FrenFolio

А ЕХЕ нету?


Ранг: 340.0 (мудрец)
Статус: Участник
THETA

Создано: 3 мая 2008 16:34 New!
Цитата · Личное сообщение · #8

Dr. Carbon конвертировал исходники своего анвраппера с асма на C++. В аттаче сырцы + exe-файл.

{ Атач доступен только для участников форума } - GameUnwrapper_&_C_sources.rar

Ранг: 6.7 (гость)
Статус: Участник

Создано: 18 мая 2008 18:33 New!
Цитата · Личное сообщение · #9

А зачем мучиться, если можно просто изменить значение в реестре.
Например с вот этой прогой можно бесконечно играть в игры от Alawar

{ Атач доступен только для участников форума } - ALAWAR_KILLER.exe


Ранг: 340.0 (мудрец)
Статус: Участник
THETA

Создано: 18 мая 2008 19:46 New!
Цитата · Личное сообщение · #10

promix17 пишет:
Например с вот этой прогой можно бесконечно играть в игры от Alawar

С последними играми где-то от апреля этого года изменение этой ветки реестра работать не будет.

Ранг: 33.7 (посетитель)
Статус: Участник

Создано: 18 мая 2008 20:24 New!
Цитата · Личное сообщение · #11

кто нибудь может подсказать с новой защитой игр Невософт,в какую сторону копать?

Ранг: 617.3 (!)
Статус: Участник

Создано: 18 мая 2008 20:46 New!
Цитата · Личное сообщение · #12

Leatherfase пишет:
кто нибудь может подсказать с новой защитой игр Невософт,в какую сторону копать?


там в самой защите xor-ится часть файла и в зависимости от id враппер разксоривает эту часть.
Смотри в сторону SetFileAttributesA, дальше идет сама процедура разксоривания.
Анвраппер
rapidshare.com/files/112902271/UnWrapper.rar

Ранг: 33.7 (посетитель)
Статус: Участник

Создано: 18 мая 2008 20:52 New!
Цитата · Личное сообщение · #13

Vovan666,спасибо,пошел ковырять...
<< . 1 . 2 .
 eXeL@B —› Основной форум —› Универсальный UnWrapper для игр

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS