Blog. Just Blog

Исследование защиты игр Reflexive Arcade

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Исследование защиты игр Reflexive Arcade
Исследование защиты игр Reflexive Arcade

Еще несколько лет назад компания Reflexive Arcade являлась одним из крупнейших мировых дистрибьюторов компьютерных игр. У нее был свой сервер с дистрибутивами более 1500 оригинальных игр и сайт с описаниями каждой игры. Теперь они окончательно сдулись, зачистили сайт и передали все свои активы Amazon. Несмотря на это, на некоторых серверах и на торрентах еще можно встретить как оригинальные дистрибутивы от Reflexive, так и продукты ее дочерних подразделений. Разница только в логотипе, который появляется при начале установки. Но речь сейчас не о кризисе компаний, а об оригинальной защите своих игр, разработанной Reflexive Arcade. Да, я прекрасно знаю, что к ней уже создано множество кейгенов, патчей, расшифровщиков и прочих ломалок, но мне надо обкатать в боевых условиях мой новый инструментарий UnWrapper Helper, и эта защита в качестве примера подойдет как нельзя лучше.

Для опытов возьмем классную игрушку - Rainbow Web. Чтобы вам долго не искать дистрибутив, можете скачать его с файлообменника. Устанавливаем, смотрим что у нас получилось. В папке с программой из исполняемых файлов есть только RainbowWeb.exe, ничего не остается как его запустить.

Окно враппера
Окно враппера

Но это еще не игра, это окно враппера, на основе которого и реализована вся защита игр Reflexive Arcade. Нажимаем кнопку Play Game и запускаем игру. Когда она загрузится, надо переключиться обратно в Windows, например, через Alt-Tab. Теперь запустим Process Explorer и посмотрим, что у нас творится в памяти.

Дерево процессов
Дерево процессов

Процесс RainbowWeb.exe запустил два дочерних процесса, а именно RainbowWeb.RWG и RAW_003.wdt. Первый файл - это оригинальный файл игры, в котором часть секции кода намеренно испорчена, а расширение изменено с ".EXE" на ".RWG". Файл RAW_003.wdt - вспомогательный файл защиты, отвечающий за восстановление испорченных участков напрямую в памяти процесса. То есть у нас сейчас на диске находится оригинальный файл с испорченной секцией кода, а в памяти тот же файл, но с уже восстановленной секцией кода. Для снятия защиты достаточно взять правильную секцию кода из памяти и записать ее в файл на диске. Сперва попробуем сделать это в ручном режиме. Снимаем дамп процесса RainbowWeb.RWG при помощи программы PE Tools:

Делаем дамп памяти процесса
Делаем дамп памяти процесса

Сохраняем дамп под именем Dumped.exe, выходим из игры и закрываем окно враппера. Теперь все в той же PE Tools открываем дамп (Alt+1) на редактирование. В меню Sections сохраняем на диск секцию кода:

Сохраняем секцию кода из дампа
Сохраняем секцию кода из дампа

Дальше самое муторное - надо записать новую секцию в файл поверх старой. Открываем оригинальный файл в HiEW и выделяем секцию кода от ее начала до размера сохраненной секции дампа с точностью до байта.

Выделяем секцию кода
Выделяем секцию кода

После этого устанавливаем курсор на начало секции кода и загружаем блок из файла (сохраненная секция).

Загружаем блок из файла
Загружаем блок из файла

Теперь остается только переименовать файл RainbowWeb.RWG в RainbowWeb.exe, и можно играть без каких-либо ограничений. Защита снята. Но ручной метод трудоемкий, отнимает кучу времени и требует аккуратности в действиях. Теперь нам на помощь приходит новый инструмент - UnWrapper Helper, который автоматизирует ручные операции. Как вы уже знаете, есть статический и динамический варианты UnWrapper Helper, начнем со статического.

Обработка файла статическим UnWrapper Helper
Обработка файла статическим UnWrapper Helper

После ручного восстановления на диске должен оставаться файл дампа памяти игры, если нет, то сделайте его, как описано выше. В первой строке UnWrapper Helper выберите оригинальный файл RainbowWeb.RWG, во второй - файл дампа. Нажмите кнопку "Fix File" и после этого останется только переименовать файл RainbowWeb.RWG в RainbowWeb.exe. Результат тот же самый, но лишних движений стало значительно меньше, да и время сэкономлено.

Обработка файла динамическим UnWrapper Helper
Обработка файла динамическим UnWrapper Helper

Для динамической обработки потребуется сперва запустить игру, затем переключиться обратно в Windows. В выпадающем списке выберите процесс RainbowWeb.RWG, нажмите кнопку "Fix File". В папке с установленной игрой появится файл RainbowWeb_fixed.exe, это и есть оригинальный файл с восстановленной секцией кода. На этот раз мы обошлись вообще без всяких дампов и других инструментов, а снятие защиты заняло несколько секунд.

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

Поделиться ссылкой ВКонтакте
Просмотров: 9581 | Комментариев: 10

Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
Forest (26.04.2014 в 16:39):
спасибо вам огромное
Rice (26.07.2013 в 19:02):
Спасибо огромное!
У меня были все кряки, ко всем версиям игрушек. Но злой каспер их поклевал. И те кряки я не смог найти, ссылки за давностью лет вымерли.
А с помощью вашего чудесного средства открыл свою любимую и так до конца и не пройденную: Wik and the Fable of Souls. Кстати, рекомендую. Геймплей уникальный, не говоря, конечно, уже о графике.
Sergey_K (06.06.2012 в 23:34):
Спасибо, крякнул танчики alawar. Простенько с вашим UnWrapper Helper!
Victor (31.01.2012 в 08:45):
Шикарно, раньше востанавливал из дампа кей и прописывал в реестре - возился очень долго, а сейчас с помощью этой проги с алавара скачал "жертву" и запустил в первозданной красе родной екзешник за 3 секунды с помощью uw_helper_dynamic. Нет слов!!! Молодца! Все работает отлично.
ManHunter (04.11.2011 в 15:42):
Если даже с картинками непонятно, то лучше вообще реверсом никогда не заниматься.
AZMA (04.11.2011 в 15:19):
лучше сделать видео чтобы было понятно всем
DimitarSerg (31.10.2011 в 12:37):
Интересно. Спасибо.
ManHunter (27.10.2011 в 22:28):
Voffka, ну так на скриншотах я специально их и указал. Внимательные догадаются, а невнимательным оно и не надо.
AyTkACT (27.10.2011 в 20:09):
Ща погоняем инструмент.
з.ы. Таймкиллеры - зло.
Voffka (27.10.2011 в 18:49):
Надо было на алаваре или невософте показать (теоретически должно работать), т.к. это более актуально, а рефлексив (невософт) куда веселее в статике расшифровывать (т.е. не запуская игру вообще).

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.06 сек. / MySQL: 2 (0.0051 сек.) / Память: 4.5 Mb
Наверх