Поиск:

Защита игр от Alawar

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

Компания Alawar является ведущим дистрибьютором игр, произведенных сторонними разработчиками. Отчасти это оправдывает слабость защиты, поскольку программисты компании не имеют доступа к исходному коду публикуемых игр, и вынуждены довольствоваться внешней «навесной» защитой собственной разработки. Другое дело, что эта защита не представляет собой сколько-нибудь серьезного препятствия. Внешне она проявляется в том, что все игрушки имеют временное ограничение (от 20 минут до часа); по истечении этого времени игрушка отказывается запускаться, предлагая приобрести лицензию на ее использование («купить игру»).

Действующий в данное время механизм основан на использовании программы-оболочки (так называемый, «wrapper») производства Alawar, проверяющей наличие лицензии на игру и факт «легитимности» ее запуска. В случае, если все проверки проходят удачно, оболочка запускает непосредственно саму игру. Давайте рассмотрим все это на примере игры "Римская империя" (я зашел на страничку Alawar-a, и скачал первую попавшуюся):

10.jpg

После установки игрушка создает ярлык в Главном меню:

11.jpg

Видим, что он ссылается на файл Romopolis.exe в папке, в которую установилась игра. Следуем за «белым кроликом»:

12.jpg

По соседству с нашим Romopolis.exe можно заметить файл Romopolis.wrp.exe. Так вот, Romopolis.exe – это wrapper-оболочка от Alawar, производящая вышеупомянутые действия, а Romopolis.wrp.exe – исполнимый файл игры, который запускается оболочкой по окончании проверок. Не торопитесь его запускать, сейчас он работать не будет.

Существует два варианта защиты игрушки от Alawar, различающихся лишь деталями:

  • перенос точки входа (Program Entry Point) в оригинальном файле игры;
  • адрес точки входа остается неизменным, происходит лишь изменение произвольным образом данных по ее адресу.

Если говорить вкратце, то точка входа в PE-файле указывает, с какого места в секции кода начинается выполнение программы. Смотрим на инструкции в точке входа Romopolis.wrp.exe:

13.jpg

14.jpg

Совсем не похоже на типичный Entry Point для Delphi, в котором в действительности скомпилировано приложение. Обратите также внимание на самую первую инструкцию («RET»), которая служит для немедленного возврата в вызывающую функцию. То есть, в данном случае, при прямом запуске выполнение программы прекращается на первом же операнде после точки входа, и результатом будет выход в систему. «Почему же тогда программа может запускаться через оболочку Alawar?», - спросите вы. А вот почему: Alawar-овский wrapper сначала загружает Romopolis.wrp.exe в память, затем прописывает в коде переход на настоящую точку входа («защита первого рода», см. выше) или исправляет данные по адресу точки входа («защита второго рода»), и лишь потом передает ему управление. Дело остается за малым: чтобы для запуска Romopolis.wrp.exe обойтись без оболочки, нужно:

  • узнать верное значение точки входа (в случае использования первого варианта защиты);
  • узнать верные данные по адресу точки входа (в случае использования второго варианта защиты).

Для новичков, самым простым способом узнать тип защиты (и, соответственно, в зависимости от типа защиты – настоящее значение точки входа программы или данных по ее адресу), является «подглядывание» за wrapper-ом. Запускаем оболочку, жмем «Играть» и некоторое время ждем, пока игрушка полностью запустится…

15.jpg

..после чего сворачиваем окно по Alt+Tab, запускаем утилиту PETools, и видим в списке процессов наш Romopolis.wrp.exe:

16.jpg

Логично предположить, что его уже обработал Alawar-овский wrapper, и на данный момент исполняемый файл имеет все нужные нам параметры. Загружаем исполнимый образ файла из памяти («дампим» образ):

17.jpg

Нас интересует текущее значение Entry Point, щелкаем на «Optional Header», и правее поля «Entry Point» щелкаем на кнопке «D». Откроется окно дизассемблера:

18.jpg

В первую очередь, нас интересует код программы в точке входа. В данном случае, нет никаких подозрительных переходов, что могло бы свидетельствовать о переносе точки входа. Мы видим, что в теле программы, по сравнению с исходным файлом, изменился лишь первый операнд по адресу Program Entry Point. Таким образом, мы имеем дело с защитой «второго рода». Сравниваем данные по адресу точки входа в исходном и «сдампленном» файле (здесь они различаются только первым байтом), узнаем ее физическое смещение в файле (можно через PeID, см. выше – параметр «File Offset»). Записываем в исходный файл изменения:

19.jpg

Вот и все дела. Можете удалять оболочку Romopolis.exe (больше она нам не понадобится), переименовывать Romopolis.wrp.exe в Romopolis.exe и играть без ограничений.

В случае, если бы мы столкнулись с защитой «первого рода», различие было бы в том, что по адресу точки входа в «дампе» будет инструкция безусловного перехода на настоящую точку входа (вида «JMP [ADDRESS], RET»). Нужно было бы запомнить это значение и прописать его в качестве точки входа для оригинального файла Romopolis.wrp.exe, с помощью того же PETools.

Обсуждение

Денис Фатеев, 04/07/2009 14:57

В некоторых случаях разработчики Alawar пытаются манипулировать параметрами «Virtual Size» и характеристиками секций PE-файла. Излюбленным приемом является установка заведомо большого размера секции (для создания проблем при дампе), или сброса флага «executable» с секции кода. Но это бывает редко, в основном – никаких сюрпризов.

Driver, 11/09/2009 08:01

Спасипки…первая удачно сломанная игрулька есть и на моем счету теперь)))

WLD, 15/02/2010 10:05

Зачем так сложно? Очень удобно, когда игра после триал-таймаут просит перезапуск. Обычно более 1 часа играть не требуется, иначе весь день потратишь :) Итак, используем встроенный таймоут. Если вы уже потратили данные вам 30-60 минут, удаляем в регистре ключик HKEY_CURRENT_USER\Software\Alawar\Play , под ним папки с цифрами относятся к тем играм, что у вас уже стоят. Запускаем все игры, но не играем, а сразу закрываем. Создаются ключи с ограничением по времени от производителя, теперь по всем подпапкам меняем разрешения : снимаем наследование разрешений от родителя, ставим только чтение по всем, кто в списке, ставим галку заменить наследуемые разрешения. Теперь, при каждом запуске у вас будет ограничение по времени, напр. 30 минут. Игра продолжается с того места где вы остановились по предыдущему таймауту. В моём случае в игру играют ребёнок да жена, а я совсем не хочу сидеть голодный и злой. 3 таймаута им хватает, что-бы остановиться :)

Денис Фатеев, 15/02/2010 10:58

Хаха, и это по-вашему, проще? Открой игру, закрой игру, посмотри в реестре.. =)

Пусть вас не смутит объем моей заметки выше и технические подробности, приведенные в ней; они интересны только исследователям программ. Защита в игрушках типовая, поэтому ломаются они пакетным образом, 5 минут на каждую («запустил, свернул, посмотрел значение, закрыл программу и исправил на нужное»). Пока вы откроете реестр, найдете ветку и выставите разрешения – я уже получу «отученную от проверок» игрушку.

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

Doctor, 28/02/2010 11:25

Ура! Всё получилось! Пробовал на игрушке «Авиа-бандит». Честно говоря ковырялся полтора дня, но это с учётом того, что в программировании не бум-бум и пока разобрался что-где. Кстати в «Авиа-бандите» пришлось заменить два байта, а я сначала менял один, как в примере выше.

До этого момента я долго искал в интернете инструкцию по обходу защиты Алавара, но все имеющиеся объяснения были типа «измените значение там-то на такое-то» и примеры с циферками и буковками (утрирую,но смысл думаю понятен), а как добратся до этих значений толком не написано (блин, ну не все-же кругом программисты).

Так вот, здесь я нашел на данный момент самое полное описание процесса, плюс программки прилагаются (правда hex-радактора нет, но у меня уже был :)).

Короче, БОЛЬШУЩЕЕ СПАСИБО автору за подачу материала в готовом для употребления виде !!! :-)

Дмитрий, 21/03/2010 09:30

Здравствуйте Денис. Честно говоря в программировании не бум-бум, можно ли описать более подробно для новых игр от Nevosoft?

Денис Фатеев, 22/03/2010 07:42

Мне не приходилось сталкиваться с ними раньше (т.е., конкретно исследовать на возможность взлома), поэтому даже не представляю, что там за защита. Гляну, – если разберусь, то обязательно напишу.

Денис Фатеев, 31/08/2010 18:37

P.S. Кстати, написал про Nevosoft две недели назад. Всё не мог выбрать время – но лучше поздно, чем никогда.

Денис Фатеев, 22/03/2010 08:11

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

Наверное, в связи с этим, на почту мне приходят такие вопросы: «почему бы не написать универсальную отучалку, выложить её здесь и не пудрить народу мозги дизассемблерами и hex-редакторами?» Отвечаю: я не буду этим заниматься, по крайней мере, по двум причинам:

  • Написание кряков считается уголовным деянием. В этой статье описаны лишь уязвимости в защите; если вы хотите использовать их на практике или даже написать свою отучалку – это ваше личное дело (смотрите дисклаймер);
  • Алгоритмы защиты (и соответственно, отучалок) быстро меняются. Вместо одного байта по EP теперь нужно править два и т.п. Зная базовый алгоритм, не составит труда разобраться в изменениях, а вот с автоматическим распаковщиком такое не пройдет (он должен быть достаточно интеллектуальным).
Александр, 25/03/2010 21:22

Всем добрый вечер.Установил Авиа-бандит, к ней прилагался генератор ключа СМС, ввел код, счетчик времени исчез как будто все нормально, поблагодарили за регистрацию, но игра не запускается, перегружался, чистил реестр, переустанавливал,но одно и тоже.При новой установке уже не требует ключ, сразу предлагает играть, но опять же не хочет запускаться.

Денис Фатеев, 26/03/2010 03:15

Два варианта: или у Вас сама игрушка не идёт (системные требования, несовместимость с оборудованием или ОС); или Ваш генератор ключей не рабочий. Иногда игрушки пытаются обмануть: принимают заведомо неверный код как правильный, но продолжают работать в демо-режиме.

Александр, 26/03/2010 05:31

ОС Windows 7, все остальные игры этого производителя идут.Дело в том, что это даже не демо-режим, потому что в деле я ее еще не видел (она не запускается, но есть две кнопки «Играть сейчас» и «Выход»)и некуда вставить новый ключик.Как это порешить?

Денис Фатеев, 26/03/2010 07:15

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

Александр, 26/03/2010 17:56

А есть какой-то способ зарядить в нее новый ключик?

Денис Фатеев, 26/03/2010 18:52

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

Тем, кому интересны технические детали, дополнительная информация: точное имя ветки реестра (используемая wrapper-ом для хранения данных о таймауте и прочее) можно узнать, обработав wrapper игрушки каким-нибудь распаковщиком ASProtect и заглянув в RCDATA редактором ресурсов (Restorator, Resource Hacker, PE Explorer). Там можно увидеть характерную строку, содержащую имя ветки реестра (и еще много чего интересного, в том числе и байты, которые надо править по EP). Вместо распаковщика, можно снять дамп с запущенной оболочки, если не используется защита ресурсов (я не проверял), после этого перестроить секцию ресурсов и далее смотреть редактором ресурсов.

Сергей, 16/05/2010 20:41

Добрый день. Денис. Приведенный Вами способ годится практически для всех программ, но вот для Веселой фермы 3 не подошел, пишет «Критическая ошибка в игре…». И еще. Нельзя ли поподробнее осветить действия при этом «Alawar пытаются манипулировать параметрами «Virtual Size» и характеристиками секций PE-файла. Излюбленным приемом является установка заведомо большого размера секции (для создания проблем при дампе), или сброса флага «executable» с секции кода.» Ну и еще. Занимались ли Вы изучением защиты TurboGames? Ничего не смог найти по ней.

Денис Фатеев, 17/05/2010 06:38

С «Весёлой фермой» действительно не всё так просто – полгода назад я смотрел вторую «ферму» и сейчас уже не помню деталей (то ли там, помимо навесной защиты, используются возможности ASProtect, то ли вовсе ASProtect вместо навесной защиты – не помню, поэтому врать не буду).

Насчет размера секций – на него стоит обратить внимание, если вы не можете сделать дамп с запущенного экземпляра или дизассемблировать по точке входа (для секции указано большое значение «VirtualSize» и дампер «повисает»). Насчет флага «executable» тоже все просто – убедитесь, что у секции, в которой находится точка входа, стоят атрибуты на выполнение («Characteristics»).

Что касается TurboGames – нет, не изучал. Думаю в ближайшее время написать про «NevoSoft», там тоже типовая защита. После этого, возможно, гляну.

Андрей, 17/05/2010 17:18

а если там в начале стоит не jump а call как быть в таком случае?

Денис Фатеев, 18/05/2010 12:11

Может, там вовсе не используется перенос точки входа (по «JMP [ADDRESS]») и всего лишь использована замена нескольких байтов по EP (как показано в статье). А может, это вовсе не защита wrapper-ом и разработчики применили какой-то другой способ.

Андрей, 26/05/2010 03:38

Да, вы правы, просто 2 байта и все. Спасибо -)

Сергей, 17/05/2010 19:05

Спасибо за ответы, Денис.

Навыерное это был 3 Ферма, со 2 кажется не было проблем, как и с остальными. Впрочем слышал, что сообщение «Критическая ошибка в игре…» появлялось не в начала, а в середине игр, но у меня такого не было.

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

Денис Фатеев, 18/05/2010 12:15

> NevoSoft внес изменение в распространение программ, теперь они устанавливаются через клиент

Это обстоятельство никак не отразилось на защите и алгоритм, увы, остался прежним.

Arab-Emir, 13/11/2010 11:50

Ваш алгоритм взлома подойдёт для большинства игр от Alawar?;-)

Денис Фатеев, 13/11/2010 12:02

Гарантий нет. Ведь защита может меняться.

Ксюша, 01/12/2010 01:49

Вот еcли бы еще последний этап росписали как менять, что менять и на что менять,а то не розберусь…

Денис Фатеев, 01/12/2010 05:45

Ксюша, всё это расписано выше :-) Я не знаю, как ещё подробнее можно описать. Пишите мне на почту, если вам нужны детальные объяснения по какому-либо моменту. Сразу скажу, чтобы понять здесь логику всех действий, нужно немного разбираться в программировании, немного почитать про реверсинг.

Григорий, 04/01/2011 23:17

PEiD: http://s010.radikal.ru/i312/1101/0a/667e80448f3c.jpg PETools: http://i043.radikal.ru/1101/b2/e724f1c5e247.jpg

«Нужно было бы запомнить это значение и прописать его в качестве точки входа для оригинального файла Romopolis.wrp.exe, с помощью того же PETools.»

Можно подробнее. Спасибо.

Денис Фатеев, 05/01/2011 03:51

Сложно сказать, не видя, куда ведёт первый переход.
Для начала, просто попробуйте в оригинальном файле восстановить первые 15 байтов по EP, руководствуясь дампом.

Сергей, 31/03/2011 19:52

0054CB4C E8 3C9A0000 call 0055658D ; Dumped.0055658D

0054CB51 E9 17FEFFFF jmp 0054C96D ; Dumped.0054C96D

вот что мне показал дамп , точка входа 0054CB4C. Прыжок идет на 0054CB51, но прописав точку входа с адресса 0054CB51 игра не запустилась. Как я понял это защита «первого рода». что я сделал не так?

Денис Фатеев, 01/04/2011 02:02

Здесь не нужно менять EP. Просто пропишите в оригинальном файле по EP данные из дампа, один или несколько байт там должны различаться. Если не поможет, то это не wrapper или защита изменилась (в этом случае, пришлите ссылку на игру, гляну).

сергей, 01/04/2011 19:14

защита не изменилась через дебагер разобрался что к чему

Сергей, 02/04/2011 13:15

И что же к чему? Приведённая вами игра легко ломается и без отладчика с помощью дампа и замены нескольких байтов, иногда в разных секциях. Но вот для игры «Папины дочки едут на море» (http://www.alawar.ru/game/papas-daughters-2/ ) этого мало. Вылетает завершается без сообщений об ошибках после запуска.

Игра же «Эхо печали» (http://www.alawar.ru/game/echoes-of-sorrow/ ) вообще вылетает с ошибкой, хотя все изменения внесены.

Денис Фатеев, 02/04/2011 18:04

Сергей, а можно поподробнее про замену в нескольких секциях? Мне такое не попадалось и я уже давно не смотрел, как там «Алавар», так что немного не в теме..

сергей, 02/04/2011 17:37

А какие проблемы вызвало «эхо печали» ??? «папины дочки» сейчас посмотрю.

Сергей, 02/04/2011 18:02

Улетает в несуществующие адреса. Просто правки второй секции не достаточно.

Сергей, 02/04/2011 18:40

да что то поменяли тогда нули в реестре счетчик

Сергей, 02/04/2011 19:15

Правка реестра не желательна. Требуется рабочий exe-файл. И вообще методика взлома для игр Alawar с последней защитой. Есть и еще проблема. Если править только байты у точки входа, то некоторые игры нормально грузятся и играются, но при выходе дайют ошибку. Потмоу требуется замена сразу в двух местах. Такова игра Королевство семи печатей м mail (на Alawar пока нет).

Сергей, 02/04/2011 19:43

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

Сергей Сальцев, 03/04/2011 16:59

Денис, привожу пример. Секция правда одна, но бывают и разные. К сожалению не помню в каких играх. Игра – Королевство семи печатей (http://games.mail.ru/shareware/2503/download ) от Alawar.

Если сравнить дамп и *.wrp то видно, что в первой секции заменяется 64 байта.

см. 540 (секция .text)

 
C3904B95B8B0639269972E6A3F86FBB7DF186A913C270E843A088A3A1474C75
9091857E517B4F5756A668AC96DF3DD6A4343138D7EC7101FBFBB4E47F7725249

на

5589E583EC18C7042402000000FF15D0985A00E8C8FEFFFF908DB4260000000
05589E583EC18C7042401000000FF15D0985A00E8A8FEFFFF908DB42600000000

Если так и оставить, то игра запустится, но при выходе выдаст ошибку по адресу 295E

Опять сравниваем 295E-1000=195E

см. 191B (секция .text) 64 байта

84DD074646CCA739CB772B6E064FB15FD13262D189D2E19EFD7AAD0FF7CD156
52328FE9110F0AC2C4128DB6846B2992FF6890730BC6243B04597E1412CC471DB

на

893C24E849A50D00E9E3FEFFFF833D68775A00000F85850000008B47088D50F
F89570885C00F8F9BFEFFFF8D45E689442404893C24E817A50D00E987FEFFFFC7

Вот теперь нет никаких ошибок.

Сергей, 03/04/2011 19:21

что-то не на всех катит. эту тему еще вчера заметил

Сергей Сальцев, 03/04/2011 19:41

В новой защите 64 байта от точки входа заменяются всегда, но если не будет работать, то надо искать дальше. Если выводится сообщение об ошибке при входе или выходе и адрес, то смотрите нужную секцию и сравнивайте дамп с *.wrp вблизи адреса будет еще одно изменение в 64 байта, его и вставьте. Пока только две игры не запустились после двух исправлений.

Сергей, 03/04/2011 19:48

я поробую лаунчер расковырять

Сергей, 03/04/2011 19:52

вы hex радактором просматриваете файлы?

Сергей Сальцев, 03/04/2011 20:23

Да. Редактор Hex Workshop. Очень удобный. Ну еще OllyDBG. Но в данном случае хватает и hex-редактора. Для дампа хорош PETools, он же для просмотра структуры.

Сергей, 03/04/2011 20:44

«эхо печали» wrp.exe C39070B4 – точка входа

C39070D40732E50E88F0A3638DB9D0D3B493EDC88AE125AC01B0685ED87FD36
BC9D3681A830DA85FE85A8FFF1569446C53C2834DEC12FBF5981AD05D188C52
3FFFA13CDC58008B00BA5CBE5500E812C4F0FF8B0DC4D75800A13CDC58008B0
08B151C4F55

dump.exe точка входа – 558BEC83

558BEC83C4E4538B1833C08945F05533D28BC3E868FFFFFF5984C0750233DB8
BC35B8BE55DC38BC0803D4DF0580000743DEB29803DB5F558000075206A00E8
0DEEFFFFB9C0175900B20133C0E86FEEFFFF84C074196A0AE8F4EDFFFFB9C01
75900B20133

И ЭТО ВСЕ ? хотя дальше изменения тоже есть

Сергей Сальцев, 03/04/2011 21:08

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

Сергей, 03/04/2011 21:33

ясно

Сергей, 04/04/2011 05:45

есть идеи как скрыть ольку при ковырянии в exe-ке лаунчера ? у меня 7 softice не робит

Денис Фатеев, 04/04/2011 06:38

Я для таких целей ХР на «виртуалке» держу. А вообще, на «Алаваре» ASProtect (по крайней мере, раньше был), плагин IsDebuggerPresent для Olly помогал.

Сергей, 04/04/2011 13:01

ASProtect 1.2 1.3v пакуют

Сергей Сальцев, 04/04/2011 16:18

По ручной распаковке ASProtect много материала, но не знаю есть ли автораспаковщик для 1.2. В «Эхо печали» запакованы и dll. Можно и их распаковать. Не смотрел, но скорее всего они распаковываются при запуске лаунчера.

Сергей, 05/04/2011 07:49

руками только если

Денис Фатеев, 05/04/2011 08:01

Да нет, stripper справляется. Только потом требуется перестройка ресурсов.

Сергей, 05/04/2011 08:28

exe лаунчера я распаковал. Только вот импорт в таблицах востановить не знаю как или чем )))))))

Денис Фатеев, 05/04/2011 08:41

Когда я пробовал stripper-ом, импорт автоматом был восстановлен. Это было год-полтора назад.

Сергей, 05/04/2011 08:48

стрип 1.35 распаковал все без проблем.

Сергей, 05/04/2011 08:57

Я только не понял dll зачем защищать asp? Я так-то недавно занядся кряком, надоело все время в реестре править.

Сергей Сальцев, 05/04/2011 11:47

Чтобы нельзя было без лаунчера обойтись, наверное. Прпатченный wrp не работает с запакованными dll. Но стриппером dll не распаковать.

Сергей, 06/04/2011 07:37

не лаунчер ковырять смысла нет он пищется под конкретную игру это не новософт

Сергей, 08/04/2011 09:26

295E Опять сравниваем 295E-1000=195E

см. 191B (секция .text) 64 байта Hex Workshop v6 не показывает секции только байты тупо как настроить ?

Денис Фатеев, 08/04/2011 09:37

Я вручную считал, от начала секции. Честно говоря, сейчас нет времени смотреть и разбираться, что там «Алавар» напридумывал. Другой работы хватает ;-)

Будет здорово, если разберётесь и опишете, что там нового появилось. Многим будет интересно.

Сергей, 08/04/2011 10:35

пока в процессе

Сергей, 08/04/2011 11:49

Анг версии вроде не изменились, но при запуске просто виснут.

Сергей Сальцев, 12/04/2011 17:47

Серегй, вот вам подсказка. Если взять английскую версию, запустить, снять дамп и т.д. А потом перенести измененный файл в русскую версию, то она заработает и нормально будет играться, но при выходе будет выдавть ошибку.

Сергей Сальцев, 12/04/2011 19:28

Потому придетя, как выше сказано менять 64 байта (40H) и в третьей секции (просто найдите первое отличие размером в 40H) то и выходить будет без ошибок.

Сергей, 13/04/2011 08:45

В общем лаунчер можно сделать для всех игр 1. Например PapasDaughters2.exe запускает любую игру! но oep и куски кода берутся с этого долбанного wrapper.dll который запакован asprotect как я понял . через олю распакавать не смог

Роман, 24/05/2011 13:21

Сделал проще. Через Regedit нашел папку HKEY_CURRENT_USER\Software\Alawar. Удалил в нем папку Play (в ней инфа о истечении триала) А папку Alawar правой мышкой и «Разрешения» Галочки «запретить» все и всем ))) пока работает и 30 минут не тают… ))) Проверено на Алиен шутер…

Денис Фатеев, 24/05/2011 14:30

Ну как сказать… Это обходной путь, не полноценное решение.

Я был бы заинтересован в полном исследовании защиты (включая полный реверсинг wrapper-а), но к сожалению времени на это у меня нет. Может быть, кто-нибудь возьмётся и довершит начатое.

Женя, 09/07/2011 16:10

Кто уже сломал файл PapasDaughters2.wrp.exe к игре «Папины дочки едут на море» можете скинуть этот файл на почтовый ящик seastats@mail.ru я его заменю ?

дмитрий, 04/10/2011 17:02

и че это за такие хреновые способы а в два раза все быстрее делаю и проще!!!!!!!!!!!

Денис Фатеев, 05/10/2011 13:48

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

Алексей, 05/10/2011 12:38

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

Денис Фатеев, 05/10/2011 14:00

В картинках лень :-) Я даже не уверен, что Windows на моём компьютере ещё работоспособна.

Вкратце, по теме, если у вас первая инструкции по EP вида «JMP [ADDRESS], RET», выписываете адрес ADDRESS на бумажку, открываете wrp-exe в PETools и исправляете адрес EP на ваш ранее выписанный. Для дополнительной страховки проверьте, что по новому адресу находится нечто, похожее на валидный EP.

Kariamba, 31/10/2011 17:00

Добрый день, Денис!

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

Игра: сокровища монтесумы 2 entrypoint : 00383054 file offset: 00382454

Дамп памяти процесса в optional headers дает всего 28 байт.

Заменяю эти 28 байт в .wrp.exe по file offset.

Запускаю - вылетает с ошибкой по адресу 00383070.

Подозрительно: 00383054 + 28байт = 00383070. По адресу 00383070 находятся данные 000000 (не знаю будет ли полезна эта информация).

Как быть в этой ситуации?

С уважением, Kariamba.

Денис Фатеев, 31/10/2011 20:11

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

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

P.S. Кстати, там пытались реализовать простую антиотладку. Но от Ольки с плагином скрытия отладчика всё равно не спасает.

Kariamba, 01/11/2011 06:28

Денис, признаюсь сразу, в ассемблере я не силен.

Я добыл olly с официального сайта, запустил подцепился к процессу (attach blabla.wrp.exe) и тут все, приехали - что дальше делать не пойму…

Быть может есть какая инструкция по применению? или без ассемблера лучше не лезть?

Денис Фатеев, 01/11/2011 07:20

Я и сам не гуру дизасма, тем более, годами этим не занимаюсь. За инструкциями по применению Olly лучше пройти на wasm.ru.

Цепляетесь к процессу, смотрите, что по EP, сразу увидите различия с оригинальным файлом. Ну или можете WDASM'ом EP дампа посмотреть. Или любым дизассемблером, который не ограничивает обзор первым встречным 'ret' :-)

Kariamba, 01/11/2011 09:14

Круть! WDASM - рулит. 2 часа битвы и разбирательств в, прямо таки сказать, очень не удобном интерфейсе и готово.

Спасибо за совет!

сергей, 10/12/2011 11:03

алавар сменил защиту в очередной раз

Владимир , 15/12/2011 09:32

Опять сменилась защита. До этого запускал через реестр. вводил девять девяток перед каждым запуском игры всё было гуд. Теперь этот фокус не проходит. Подходит ли вышеописанный метод для сегодняшней защиты?

Денис Фатеев, 15/12/2011 11:05

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

Алексей, 16/12/2011 15:23

Здравствуйте!!! Подскажите пожалуйста как снять блокировку бесплатного времени в играх Алавар. Написано «Игра заблокирована. обнаружена попытка взлома бесплатного времени. Для снятия блокировки вам требуется приобрести лицензионный ключ»

dosbox, 07/01/2013 17:55

Качаешь программу ProcessMonitor. Запускаешь, потом запускаешь игру где пишется что игра заблокирована и выключаешь, в ProcessMonitor инклудишь запущеную игру, и ищешь обрадение к реестру HKCR/CLDID/{класс}/TypeLib/1000 с прыгающим значением 1000 и 1001, в деталях написано Type: REG DWORD, Length: 4, Data 1001 и REG DWORD, Length: 4, Data 1000. В нормальном значении должно быть примерно 1800000 и равняться установленому триалу в другой ветке. Удаляешь этот класс, потом удаляешь ветку HKCU/Software/Alawar и HKLM/Software/Alawar. Пробуешь запускить игру. Должно появиться снова 30 минут.

dosbox, 07/01/2013 17:59

Опячатался, HKCR/CLSID

Александр, 17/12/2011 15:53

Здравствуйте Денис. Аналогичная ситуация как в предыдущем посту. При малейшей попытке изменения «внутренностей» игры она блокируется и выходит сообщение:«Игра заблокирована. обнаружена попытка взлома бесплатного времени. Для снятия блокировки вам требуется приобрести лицензионный ключ». Помогите…

сергей, 17/12/2011 19:32

могу выложить ломанный exe для исследований.

жадеев роман геннадьевич, 26/12/2011 10:12

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

Дмитрий, 30/01/2012 05:51

У меня все игры стали блокироваться. Раньше я их ломал обычным кряком. А сейчас пишут - вы ввели неленцизионный ключ. Игра заблокирована. Введите ваш номер телефона. Игры по году уже установлены. И тут такое. Что делать, подскажите.

Денис Фатеев, 30/01/2012 07:59

Дмитрий, на данный момент не знаю. Пока нет времени посмотреть, как только появится – гляну обязательно. Самому интересно, что там придумали :-)

Денис Фатеев, 10/02/2012 16:54

Ничего там не придумали, алгоритм защиты прежний. Единственное отличие, вместо одного-двух байт теперь прячут 64 байта по EP. Проверено на «Youda Тайна», «Золотоискатели», «Остров секретов», «Радужная паутинка 3», «Тайны прошлого». Для «Радужной паутинки 3», например, такие изменения:

Версия ASProtect на wrapper-e прежняя, публичная версия stripper-а с ним работает, если кому интересно в нём покопаться. В целом, алгоритм распаковщика: сдампить 64 байта по EP с запущенного процесса и записать по EP в wrp-файл.

Антон, 07/04/2012 07:39

Здравствуйте, Денис! Руководствуясь описанием алгоритма, получилось очень многое. Мама довольна))).Но вот новая беда, пока не пойму что делать(коллекционные издания). замена не помогает. Вот дамп из PeTools:

  1. 005B9C44: E85D0F0100 call $+00010F62h ; Program Entry Point
  2. 005B9C49: E989FEFFFF jmp $-00000172h
  3. 005B9C4E: 8BFF mov edi, edi
  4. 005B9C50: 55 push ebp
  5. 005B9C51: 8BEC mov ebp, esp
  6. 005B9C53: 68C0E3A600 push 00A6E3C0h
  7. 005B9C58: FF150801A600 call [00A60108h] ; KERNEL32.dll!GetModuleHandleW
  8. 005B9C5E: 85C0 test eax, eax
  9. 005B9C60: 7415 jz $+17h
  10. 005B9C62: 68B0E3A600 push 00A6E3B0h
  11. 005B9C67: 50 push eax
  12. 005B9C68: FF155001A600 call [00A60150h] ; KERNEL32.dll!GetProcAddress
  13. 005B9C6E: 85C0 test eax, eax
  14. 005B9C70: 7405 jz $+07h
  15. 005B9C72: FF7508 push [ebp+08h]
  16. 005B9C75: FFD0 call eax
  17. 005B9C77: 5D pop ebp

Что можете сказать? раньше такого не видел.

Денис Фатеев, 14/04/2012 14:05

Напишите, что за игра. Будет время, посмотрю.

Вячеслав, 20/04/2012 04:25

Здравствуйте, Денис! встречал процедуры описанные выше в следующих играх: Экзорцист Великие секреты. Да Винчи Дом 1000 дверей. Длань Заратустры. Коллекционное издание Тайна Немо. Наутилус.

Антон, 22/04/2012 09:43

Дом 1000 дверей. Длань Заратустры. Коллекционное издание

Денис Фатеев, 06/06/2012 12:50

Убедительная просьба посетителям: не публикуйте здесь ключи, не превращайте сайт в варезник. Обсуждение технических деталей защиты — без проблем, это только приветствуется.

Алексей, 25/06/2012 04:46

Здравствуйте Денис! Попытался проделать вышеописанное с игрой: Песочный человек. Истории шепотом. Дамп похож на приведенный Антоном, видимо такой род защиты начали использовать во всех новых играх. Не получается применить ни первый, ни второй способ. Подскажите как победить, есть ли третий способ?

Александр, 27/07/2012 23:02

Здравствуйте Денис.В игре Король покера 2.коллекционное издание.пытался взломать программой но не получилось игра заблокировалась.Позже нашёл работующую программу,но так ничего не получается.Можете подсказать как переустановить игру что-бы время востановилось?

Томми, 10/08/2012 11:03

Здравствуйте Денис, я, наверно, месяц назад прочитал вашу статью на тему взлома игр от Alawar.

Мне очень понравилось! Я более 10 игр взломал вашим методом. Как и вы, я не считаю взломом увеличение времени

триала или активацию игры. Я согласен, что лучше всего сносить защиту-оболочку полностью и оставлять только чистую игру:

1) Не делаются записи в реестре.

2) Нет файлов оболочки - только сама игра.

3) Можно спокойно поделиться с друзьями, и запустить на любом компьютере даже с флэшки.

Бывали конечно игры и чуть похитрее, но всё сводилось в конечном итоге к подмене байтов в точке входа. Но…

Недавно я наткнулся на замечательную игру «Правитель. Колосс». Всё было проделано, как и ранее: сделал дамп, нашёл точки входа обоих файлов (до дампа и после) и вписал нужные значения в точке входа.

И игра запустилась без NAGа (оболочки). Казалось бы на этом всё, можно играть. Но не тут то было - есть и вторая защита. И боюсь, она является частью исходного кода игры.

Откуда Alawar имеет доступ к исходникам? А оттуда, что Alawar являются не только локализатором данной игры, но и её разработчиком. Казалось бы, что тут поделаешь. Но мы то помним,

что у Alawar никогда не было особого таланта к выдумыванию защит.

Так что же это за вторая защита? На самом деле всё просто. Давайте возьмём для примера ту же игру «Правитель. Колосс». После запуска «SettlementColossus.wrp.exe» (неважно оригинального или уже вылеченного)

запускается таймер (не таймер оболочки). Этот таймер отсчитывает одинаковое время, всегда. Около 3 мин. Как только таймер дойдёт до нуля происходит следующее:

1) Исполняемый файл игры (в данном случае «SettlementColossus.wrp.exe») удалает из своего названия всё после первой точки до последней. Итого получается «SettlementColossus.exe». Это всё происходит в оперативной памяти - не на жестком диске.

2) Получившееся имя «SettlementColossus.exe» использует для нахождения в оперативной памяти запущенной оболочки Алавар. Если он видит, что оболочки нет - игра вырубается с надписью «Критическая ошибка….» и т.д. и т.п.

Конечно, после того как исполняемый файл игры взломан, можно спокойно запускать оболочку, даже если триал-времени уже не осталось, и затем, запускать исполняемый файл игры. Таймер (не оболочки) вновь запускается и, по прошествии времени, видя оболочку в оперативке, игру не отрубает.

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

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

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

Вот ссылка на саму игру: http://www.alawar.ru/download/AlawarRusSettlementColossusRus.exe

Денис Фатеев, 10/08/2012 15:22

К сожалению, сейчас совсем нет свободного времени. Работа, учеба (магистратура). Выше писали о новых фишках защиты, был бы рад посмотреть, но не получается.

Сергей, 23/04/2013 20:01

ничего не поменялось все осталось по прежнему !!! видно хреново секции сменили если нужно скину exe ломанный

Сергей, 23/04/2013 20:20

КАК Я ПОНЯЛ ЕСТЬ 3 ПРОВЕРКА КЛЮЧА С ИНТЕРВАЛОМ В НЕСКОЛЬКО МИНУТ ЕСЛИ В РЕЕСТРЕ НЕТ КЛЮЧА ТОГДА КРИТ И ПРЕДЛОЖЕНИЕ ПЕРЕЛИТЬ ИГРУ) ВАРИАНТ В ДЕБАГЕРЕ ЗАПУСТИТЬ ИГРУ И ОТСЛЕДИТЬ ПРОВЕРКУ НУЖНО СМОТРЕТЬ ПРОСО ДОБАВИЛИ ЕЩЕ 1 ПРОВЕРКУ НО ЧЕСТНО ГРЯ КОВЫРЯТЬ ЭТУ ШЛЯПУ ИНТЕРЕСА НЕТ

Томми, 10/08/2012 16:11

:-( Очень жаль, Денис. Но, пожалуйста, когда будет время исследуйте эту защиту.

Денис Фатеев, 05/10/2012 13:07

При всем уважении к участникам обсуждения, эта тема превращается в варезник. Абстрактные способы взлома, различные кейгены и ломаные левые DLL с модификацией реестра мне не интересны. Для их обсуждения есть более подходящие ресурсы. Здесь прошу писать только о технической стороне этой конкретной защиты. Ссылки на варез и прочее не по теме будут удалены.

Сергей, 24/12/2012 09:08

невософт и алавар ломану любую игрушку тема не изменилась меняем секции

arty, 24/12/2012 18:29

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

сергей, 25/12/2012 06:05

а не проще отключить сам врапер ?))))

arty, 25/12/2012 15:06

Да это не проблема отключить.Всё сломать и я могу,а вот заставить игру принять ключ проблема.Я с ней уже бьюсь два года.С тех пор как Алавар поменял последнюю защиту.

Сергенй, 25/12/2012 20:14

392h, прибавляем к нему 7D6h, получаем результат B68h или в десятичной системе 2920. Значит серийный номер будет наподобие 02920G, остальные символы серийника не учитываются. Ты с таким знаком ? если нет тогда и не парься ! Так вычисляется серийник и пишется кейген. Если без инета нет регистрации, тогда и ковырять нечего.(никогда не регал) у них фишки меняются на серийники раз в пол года, когда в паблик вылазят кейгены )

arty, 26/12/2012 15:24

Это всё не то. во wrappere идёт банальная проверка, если зашитый ключ равен введенному, значит плохо. длинные ключи которые вшиты в тело игры никакого отношения к алавару не имеют, это стандартные ключи asprotect которым упакован wrapper. из этого делаем вывод: Если введенный ключ не равен зашитому, значит все ок и его можно вносить в реестр Если ключ удовлетворяет требованиям лицензирования asprotect, значит делаем игру зарегистрированной. Предвижу вопрос, «зачем же вообще ключ в ресурсах?» для активации смс, этот ключ заносится в реестр, а т.к. проверка только при вводе, проверка asprotect проходит без проблем.Мне нужно понять отчего отталкивается проверка,а кейген написать невозможно,так как там очень много непонятного кода.Покупал ключи родные и пытался разобраться.А то что ты предлагаешь я пытался подсмотреть.Не то.

Сергей, 14/01/2013 07:04

я думаю логику генерации ключа нам не осилить( да и к чему, когда тупо можно снять враппер)) не красиво, зато эффективно!

arty, 14/01/2013 19:25

Да не надо искать логику. Я убиваю любую игру с Алавара без проблем, но меня интересует совсем другое. Во враппере проходит проверка ключа asprotect, которым упакован враппер и мне интересно узнать код проверки. Я снимаю asprotect, но декомпилировать враппер мне не удаётся, чтобы было удобочитаемо. Со всем остальным я разберусь сам.

Алекс, 27/02/2013 06:38

Опишите пожалуйста подробнее процесс, в программировании я ноль, понять ваш способ так и не смог.)

миша, 23/04/2013 18:33

Здравствуйте! я следовал вашим инструкциям и столкнулся с проблемой когда я скачал PEID v0.95 при разорхивировании он выдаёт

«введите пароль для зашифрованного файла : PEID.exe .Я просто нажимал окей и этот файл не появляется а в архиве он есть. Что делать подскажите.

Сергей, 23/04/2013 19:50

PEID v0.95 скачай другую версию или посмотри пасс на архив на кой тебе вообще он панадобился?



 
© 2009–2013 Денис Фатеев (Danger)
Копирование контента без указания автора преследуется сотрудниками ада.
Recent changes RSS feed
Valid XHTML 1.0
Valid CSS