Сейчас на форуме: subword, rtsgreg1989, zds (+9 невидимых) |
eXeL@B —› Основной форум —› Универсальный UnWrapper для игр |
<< . 1 . 2 . |
Посл.ответ | Сообщение |
|
Создано: 09 апреля 2008 20:53 · Поправил: geograph · Личное сообщение · #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 |
|
Создано: 17 апреля 2008 13:13 · Личное сообщение · #2 |
|
Создано: 17 апреля 2008 18:29 · Личное сообщение · #3 Beitz пишет: У меня не сработал анврапер от доктора карбона ни на Reflexive ни на Game House играх. Возможно, дело в том, что ты выставил маленькие тайминги. По крайней мере не Рефлексиве он работает четко, на Геймхаусе возможны сбои. Kiev78 пишет: Дай ссыль на скачку, штоб я долго не искал. Вот прямой линк gamecenter.oberon-media.com/exe/CaveDays-setup.exe?RefId=&origin=pcat_gm_pl&ext=CaveDays-setup.exe ----- Программист SkyNet |
|
Создано: 25 апреля 2008 15:27 · Личное сообщение · #4 |
|
Создано: 25 апреля 2008 17:13 · Поправил: Kiev78 · Личное сообщение · #5 |
|
Создано: 26 апреля 2008 12:10 · Личное сообщение · #6 Появился еще один универсальный анвраппер от [KLKS], написанный на C++. Поддерживаются следующие издатели: - Reflexive Arcade - Alawar Games - Playrix - GameHouse - PopCap В аттаче сырцы. 4ae2_26.04.2008_CRACKLAB.rU.tgz - Greyhound_Unpacker.rar ----- Программист SkyNet |
|
Создано: 28 апреля 2008 12:01 · Личное сообщение · #7 |
|
Создано: 03 мая 2008 16:34 · Личное сообщение · #8 Dr. Carbon конвертировал исходники своего анвраппера с асма на C++. В аттаче сырцы + exe-файл. 36c2_03.05.2008_CRACKLAB.rU.tgz - GameUnwrapper_&_C_sources.rar ----- Программист SkyNet |
|
Создано: 18 мая 2008 18:33 · Личное сообщение · #9 А зачем мучиться, если можно просто изменить значение в реестре. Например с вот этой прогой можно бесконечно играть в игры от Alawar 423d_18.05.2008_CRACKLAB.rU.tgz - ALAWAR_KILLER.exe |
|
Создано: 18 мая 2008 19:46 · Личное сообщение · #10 |
|
Создано: 18 мая 2008 20:24 · Личное сообщение · #11 |
|
Создано: 18 мая 2008 20:46 · Личное сообщение · #12 Leatherfase пишет: кто нибудь может подсказать с новой защитой игр Невософт,в какую сторону копать? там в самой защите xor-ится часть файла и в зависимости от id враппер разксоривает эту часть. Смотри в сторону SetFileAttributesA, дальше идет сама процедура разксоривания. Анвраппер rapidshare.com/files/112902271/UnWrapper.rar |
|
Создано: 18 мая 2008 20:52 · Личное сообщение · #13 |
<< . 1 . 2 . |
eXeL@B —› Основной форум —› Универсальный UnWrapper для игр |