![]() |
eXeL@B —› Вопросы новичков —› Исследование защиты игр от Alawar |
Посл.ответ | Сообщение |
|
Создано: 17 февраля 2017 22:40 · Личное сообщение · #1 Доброго времени суток всем! Не так давно читаю ваши статьи по исследованию программ. И вот решил обратиться за помощью. Моя девушка любит такие вот мелкие игры, особенно из жанра "Поиск предметов", и попросила меня скачать ей пару штук. Я знаю, что на торрентах много уже взломанных, но мне захотелось попробовать взломать самому. К тому же как раз тогда начал читать книгу по ассемблеру Клашникова. Вобщем защиту с игр я снимать научился, но вот есть пара вопросов. Итак, на играх от Алавара установлена типовая навесная защита. В папке с установленной игрой (пусть она называется blabla) присутствуют два exe-шника: blabla.exe и blabla.wrp.exe. Первый – это wrapper-оболочка от Alawar, которая проверяет имеем ли мы право играть (истекло ли триальное время, куплена ли игра), а второй – исполнимый файл игры, который запускается оболочкой по окончании проверок. Если сразу запустить blabla.wrp.exe, то он работать не будет. Причина в том, что прямо в точке входа PE-файла стоит инструкция RET, которая в данном случае завершает работу приложения. Т.е. получается, что когда запускается оболочка Алавара и удостоверяется, что мы имеем право играть, она корректирует данные в точке входа файла и уже после этого запускает игру. Ну вобщем я запустил игру, сделал Full Dump с помощью PETool и ручками банально заменил данные в точке входа blabla.wrp.exe на те, которые были в дампе. В результате игра запустилась без всяких оболочек и нормально работает. Но остался вопрос: а где wrapper-оболочка берет те данные, которые нужно заменять? И где указан конкретный адрес, по которому нужно производить замену? Вдруг в другой игре программа будет заменять уже не одно место, а два или три.. Пытаясь это выяснить, я распаковал blabla.wrp.exe с помощью стриппера (он запакован AsProtect) и с помощью PEBrowse покопался в данных. В папке с игрой также присутствует wrapper.dll, его я тоже просмотрел. Параллельно ради интереса хотел еще найти место, где указан путь к ветке реестра, в которой тикает триальное время. Но вот ничего не нашел. Опыта у меня еще совсем мало, поэтому решил обратиться сюда за помощью. Игры, которые я разбирал: https://www.alawar.ru/game/bridge-to-another-world-burnt-dreams-collectors-edition/ https://www.alawar.ru/game/the-fool/ ![]() |
|
Создано: 17 февраля 2017 23:58 · Личное сообщение · #2 |
|
Создано: 18 февраля 2017 00:10 · Личное сообщение · #3 |
|
Создано: 18 февраля 2017 00:28 · Личное сообщение · #4 SDK Ну я где-то читал, что эта защита засирает какую-то особую защищенную ветку реестра. Ну к примеру ты вот поставил игру, поиграл в нее 30 бесплатных минут, потом удалил какой-нибудь прогой типа Uninstall Tool, почистил от нее вроде весь реестр. Но при повторной установке счетчик времени по-прежнему будет на нуле. Т.е. это значение осталось где-то на компе. Вот и писали в статье, что если много в такие игры играть, то винда может просто полететь от такого засирания. Я не проверял все это, но мне самому нравится, когда игра без рекламы и без всяких лишних оболочек. А про бесконечный триал я знаю. difexacaw Это я тоже понял и пытался найти. Но, как уже сказал, опыта совсем мало. По идее заменяемые данные лежат в dll (но я не уверен). Но функцию копирования их оттуда я не нашел. Меня бы кто направил в нужном месте в нужном направлении. Если кому покажется нетрудным, то разобрал одну игрушку сам и показал/объяснил мне вот именно этот момент ![]() |
|
Создано: 18 февраля 2017 00:41 · Поправил: difexacaw · Личное сообщение · #5 Retar Нужно узнать через какой механизм происходит запись, тоесть процесс остановленным создаётся и прямо записываются данные или может в него что то подгружается и уже из запущенного процесса происходит запись, может есчо как то. Затем нужно посмотреть откуда вызываются функции, которые запись выполняют. ----- vx ![]() |
|
Создано: 18 февраля 2017 00:49 · Личное сообщение · #6 |
|
Создано: 18 февраля 2017 01:03 · Личное сообщение · #7 |
|
Создано: 18 февраля 2017 01:28 · Личное сообщение · #8 Retar пишет: Но функцию копирования их оттуда я не нашел. Меня бы кто направил в нужном месте в нужном направлении. Можно и не искать, в запущенном рабочем процессе уже все данные на месте. 1. Запускаешь игру. 2. Аттачишся олей к процессу (BTAW_BurntDreams_CE.wrp.exe) 3. Выделяешь код в секции кода, но не до конца секции, а только до конца кода, нули в конце секции выделять не надо. 4. Далее жмёшь правую клаву мыши, выбираешь copy to executable -> selection далее откроется окно с скопированнми данными, в нём жмёшь опять правую клаву мыши, выбираешь save file, сохраняешь, меняя имя. Всё, получен полностью рабочий файл игрушки. ![]() |
|
Создано: 18 февраля 2017 01:33 · Личное сообщение · #9 |
|
Создано: 18 февраля 2017 02:36 · Личное сообщение · #10 Есть же несколько топиков по ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh ![]() |
|
Создано: 18 февраля 2017 02:48 · Поправил: Retar · Личное сообщение · #11 SReg Об этом я думал, но я ведь заберу пачкой сразу все данные, которые пишутся. А если там заменяется два куска кода? Как понять, что их два? Сами данные я могу получить из дампа, проводя простое сравнение нужных мест. Но вопрос в том, как узнать, какие места нужные? Вот я и предполагаю, что в коде оболочки есть место, в котором указано что, куда и сколько раз копируется. Точка входа - само собой, к этому приходим чисто логически. А вдруг там еще есть заменяемые куски. Может и нет, но хочется ведь знать это заранее, чтобы сразу устранить все возможные ошибки в будущем. __X3__ Так это я сделал. Я получил рабочий файл игры безо всякой защиты. У меня есть интерес разобрать саму защиту, посмотреть, как это реализовано. В образовательных целях, так сказать. Все таки взлом алаваровских игр я на поток ставить не собираюсь) Isaev Опс. Спасибо, почитаю. Вот честно искал по слову Алавар и как-то ничего не нашел. Может я на инглише вводил.. В любом случае спасибо, пока что почитаю там ![]() |
|
Создано: 18 февраля 2017 05:02 · Поправил: dosprog · Личное сообщение · #12 Retar пишет: Может и нет, но хочется ведь знать это заранее, чтобы сразу устранить все возможные ошибки в будущем. ) Если будешь такие темы создавать, то в будущем именно вот это вот твоё знание тебе уже не понадобится. Сможешь смело его забыть, чтоб не занимало зря память И чо там изучать вообще, этот говнокод ![]() |
|
Создано: 18 февраля 2017 05:06 · Поправил: unknownproject · Личное сообщение · #13 Там весь жизненный цикл алаваровских игр враппер дописывал байты через WriteProcessMemory.Ничего не поменялось. dosprog пишет: И чо там изучать вообще, этот говнокод Правильно.Лучше патчить нопами процедуры в софтах, которых введенные данные сравниваются с константами.Ноперы-староверы всегда в почете ![]() ----- TEST YOUR MIGHT ![]() |
|
Создано: 18 февраля 2017 14:40 · Личное сообщение · #14 unknownproject пишет: Там весь жизненный цикл алаваровских игр враппер дописывал байты через WriteProcessMemory.Ничего не поменялось Не, в 2006 было ещё примитивней - извлекался exe-шник с игрой, устанавливался атрибут "hidden". Достаточно было сохранить этот файл и никакого триала )) ----- IZ.RU ![]() |
|
Создано: 18 февраля 2017 14:42 · Личное сообщение · #15 |
|
Создано: 18 февраля 2017 19:51 · Поправил: Retar · Личное сообщение · #16 unknownproject Ну в видео все просто и понятно выглядит. Однако оболочка защищена ASProtect-ом какой-то неизвестной версии. Peid с плагином ее не определил. При использовании плагина по распаковке для оли, он тоже написал, что неизвестная версия. Стриппер вроде как все извлек, но после этого оболочка этим файлом уже не запускается. Что-то он там не доделал получается. Если же запускать в оле, не распаковывая, то пишет типа обнаружен дебаггер... ![]() |
|
Создано: 18 февраля 2017 20:10 · Личное сообщение · #17 |
|
Создано: 18 февраля 2017 23:08 · Личное сообщение · #18 Retar пишет: Стриппер вроде как все извлек, но после этого оболочка этим файлом уже не запускается. Не знаю как стрипер, но decomas распаковывает нормально. НО!!! Чтобы сделать файл рабочим надо поисследовать код апи аспра, расположенных в коде проги, но выполняемых аспром до OEP. Т. е. в распакованном файле этот код уже не выполняется. Адреса апи на примере BTAW_BurntDreams_CE : 40BA83 40BA94 ![]() |
|
Создано: 19 февраля 2017 01:08 · Личное сообщение · #19 |
|
Создано: 19 февраля 2017 01:20 · Личное сообщение · #20 |
|
Создано: 21 февраля 2017 01:24 · Личное сообщение · #21 |
|
Создано: 21 февраля 2017 01:46 · Поправил: whoami · Личное сообщение · #22 |
|
Создано: 22 февраля 2017 21:05 · Личное сообщение · #23 whoami Всё есть в теме Retar Тема закрыта. У кого будут вопросы, сходят в ----- EnJoy! ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Исследование защиты игр от Alawar |
Эта тема закрыта. Ответы больше не принимаются. |