Akama

XLive

44 сообщения в этой теме

Games for Windows - LIVE это некая программа от мелкософта, которая позволяет играть в инете в игры разных стилей и накапливать "достижения".

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

В этой теме как раз и хочу получить ответ на решение данной проблемы: как отключить защиту данных от взлома этой дряни?

P.S. как то рассматривая таблицу СЕ для DOW2 я наткнулся на вот такую вещ:

xlive.dll+AB247:
ret 0c // Disable XLive

 

Значит автор таблицы таки нашёл способ вырубить проверку данных, но как это сделать для остальных подобных игр?

1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пока точного решения нет...

Эта штука помотала мои нервы в игре Reziden Evil 5. В защите так же есть букет антиотладочных методов, с которыми у меня не было времени разбираться.

В какой-то версии xlive я использовал этот скрипт (сделанный WhiteHat с форума MHS)

 

 
[ENABLE]
xlive.dll+14747C:>00007BFB1510F4C96A505B5F5DC20C00YYxxxxxxxx5151F605844AAF010175
db C3 90

xlive.dll+1439C1:>4DFC5F5E33CD5BE8CAEC4800C9C20C00YYxxxxxxxx81ECD8060000A1C08CAF
db C2 08 00

xlive.dll+45EE9D:>C00000008B11508B4224FFD033C05FC3YYxxxxxxxx81EC28030000A3F05CAF
db C3 90

[DISABLE]
xlive.dll+14747C:>00007BFB1510F4C96A505B5F5DC20C00YYxxxxxxxx5151F605844AAF010175
db 8B FF

xlive.dll+1439C1:>4DFC5F5E33CD5BE8CAEC4800C9C20C00YYxxxxxxxx81ECD8060000A1C08CAF
db 8B FF 55

xlive.dll+45EE9D:>C00000008B11508B4224FFD033C05FC3YYxxxxxxxx81EC28030000A3F05CAF
db 8b ff

 

Проверочные байты нужно поправить, т.к. они могут не совпадать (будет время в субботу или пятницу, то я постараюсь грохнуть этот xlive на Rezident Evil ). Данный скрипт вызывает сразу или через некоторое время "мессагу исключения" при подключении отладчика или изменении памяти игры. Если мессагу не закрывать, то можно исследовать код и играть дальше.

Если этот скрипт не использовать, то игра будет "молча" закрываться.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если верить создателю, то этот asi плагин убирает проверку xlive.dll, то есть данные становятся незащищёнными.

[ub=http://www.filekeeper.org/download/shared/XliveProtectDisabler.asi]XliveProtectDisabler[/ub]

Возникает вопрос - как эту весчь вшить в тренер чтобы отдельно не подгружать?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Если верить создателю, то этот asi плагин убирает проверку xlive.dll, то есть данные становятся незащищёнными.

[ub=http://www.filekeeper.org/download/shared/XliveProtectDisabler.asi]XliveProtectDisabler[/ub]

Возникает вопрос - как эту весчь вшить в тренер чтобы отдельно не подгружать?

А инструкция есть как XliveProtectDisabler.asi пользоваться? :)

PS Для тех кто не в танке (сталкивался с пакерами), мне кажется, что Александр Блейд либо напрямую связан Artmoney как её разработчик, либо косвенно (использовал один и тот же пакер). Потому что и Артмани и XliveProtectDisabler.asi запакованы похоже одним и тем же странным пакером и похожим на обфускатор Аспака.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Инструкция та же, что и для ачивера - в чит энгине выбрать inject dll и выбрать эту библиотеку, потом нажать на NO и по идее лайв должен не выстёбываццо.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Инструкция та же, что и для ачивера - в чит энгине выбрать inject dll и выбрать эту библиотеку, потом нажать на NO и по идее лайв должен не выстёбываццо.

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

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Библиотека тестировалась на последней версии лайва, так что пробуй, клавное в тренер воткнуть...

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как показал мой собственный тест - библиотека не помогла мне вскрыть DoW2, ибо при запуске дебаггера игра крашилась...

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если я что-то сделаю или узнаю по поводу xlive, то отпишусь.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На мой взгляд - алгоритм таков:

1. Находим в коде xlive процедуру, следящую за целостностью кода.

2. Делаем хук на эту процедуру.

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

4. Взламываем игру, как обычно.

Самому пока заняться этим некогда, очень много работы. Как будет время, постараюсь заняться. Если кому интересно, может не ждать и заняться сам.

0

Поделиться сообщением


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

Ты такой вывод сделал (предположил) прогнав xlive в IDA ? :)

Вполне могут быть так называемые инлайн вставки, которые очень удобно можно реализовать в С++, которые не являются отдельными функциями возвращающие значение о том что "в порядке или не в порядке". Т.е. если в void функцию напичканы эти вставки, тогда твой метод не точен. :ninja: В этом случае конечно тоже есть решения.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я просто рассказал общий подход ))

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Реально ли открыть в процессе xlive.dll и проверить какие инструкции он исполняет?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Реально с обходом ловушек антиотладки если они там присутствуют.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну что ребят поделитесь по данному зверьку новой инфой если таковая имеется

Акама перезалей если осталось XliveProtectDisabler Plz

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Данный скрипт убивает проверку GFWL на целостность данных в процессе игры.

Внимание: Нужна версия СЕ не ниже 5.6 из-за комманды aobscan.

Скрытый текст

[ENABLE]
alloc(MyCode,1024)

aobscan(CRCCheck,8b ff 55 8b ec 83 ec 20 53 56 57 8d 45 e0)

label(_XLive)

registersymbol(_XLive)

CRCCheck:
_XLive:
 ret 000c

[DISABLE]

_XLive:
 db 8b,ff,55,8b,ec,83,ec,20,53,56,57,8d,45,e0

unregistersymbol(_XLive) 

 

Проверял на Chaos Rising - помогло.

2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

она вообще там не нужна

mov edi,edi
push ebp

заменяется на

ret 0c

и готово

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мне тоже показалось что это прикол. Просто вбили невыполняемые байты в nop. А с GTA4 не работает как я понял :)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Недавно вышла статья про обход Xlive - ссылка.

Например, там вы увидите следующее. Для того чтобы узнать какой код xlive проверяет сохранность кода игры, вы должны поставить "аппаратный бряк на доступ" на игровой код (подробности в статьи с видео) ;)

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Недавно вышла статья про обход Xlive - ссылка.

А вот и перевод этой статьи (хотя зачем он нужен с видео, ну да лишним не будет)

Работа с Xlive и аналогичными защитами

Это очень короткая статья, поскольку все описанные здесь вещи просты для понимания, если Вы конечно читали мои предыдущие статьи. Сразу предупрежу, что данная статья не поможет обходить онлайновые анти-читерские защиты, это будет работать только в некоторых оффлайн одиночных играх.

Некоторые игры используют грязные методы для проверки изменений в игровом коде. Это значит, что если Вы попытаетесь вставить свой код, игра это обнаружит и зависнет. Всё больше игр используют такие защиты, в первую очередь это относится к играм с логотипом «Games for Windows Live». Эта короткая статья расскажет, как работать с такими системами защиты. Это не сложно, если Вы умеете обращаться с отладчиком и знаете как работают функции, но если Вы этого вдруг не знаете, настоятельно рекомендую Вам прочесть мои предыдущие статьи – основы шифрования, отладка, обратная трассировка и стек.

Хорошо, приступим. Будем исследовать BlazBlue: Calamity Trigger и Cheat Engine 6.0 ( http://www.cheatengine.org/ ) для читинга. Это несложная игра, которую легко можно запустить в окне, эту игру легко взломать, но при изменении игрового кода игра вылетит. Игра использует защиту Games for Windows Live (GFWL), т.е. используется библиотека xlive.dll, как и в любой другой защищённой этой защитой игрой. Вы можете попробовать применить статью для обхода GFWL в любой другой игре, видео внизу поможет Вам понять что я делаю, если Вы этого не поймёте по тексту.

Небольшая подготовка

Я сделал только один чит для игры, бесконечное здоровье. Здоровье – простое целое, его легко найти. Xlive не только обнаруживает изменение игрового кода, но также обнаруживает использование отладчика. К счастью, в CE 6 тоже есть опции настройки отладчика, которые помогут нам остаться незамеченными.

1. Если у вас 32-битная ОС, откройте опции CE, выберите Debugger и затем выберите "Use kernelmode debugger option". Также поставьте галочку "Use Global Debug routines". С такими настройками отладчика Xlive Вас не обнаружит и одной проблемой станет меньше.

2. Если же у Вас 64-битная ОС, используйте VEHdebugger. Это не такая мощная опция, как "kernelmode debugger" и иногда Xlive сможет Вас обнаружить и игра вылетит, но это не так страшно. Просто перезапустите игру и продолжите взлом.

Если Вы нашли адрес здоровья, найдите, какие инструкции обращаются к здоровью, и Вы найдёте код, который работает со здоровьем обоих игроков. У меня этот код был

00488410 - 8B 81 48080000 - mov eax,[ecx+00000848]

Здесь [ecx+28] это ID игрока, если [ecx+28]=0, значит игрок Player1. Если [ecx+28]=1, тогда игрок Player2. Теперь легко можно сделать чит для игры, просто проверьте, что[ecx+28] равен нулю, и измените здоровье. Чит готов, но при его включении игра рухнет максимум через пару минут, когда защита обнаружит изменение кода.

Существует одна вещь, которую я настоятельно рекомендую делать при исследовании кода. Откройте memory view, меню Tools, Dissect code и дайте CE проанализировать код. Обычно Вы будете использовать анализатор кода на самой игре, но сейчас Вы увидите, что наш враг скрывается в xlive.dll, а не в exe, поэтому нажмите на "Include system modules", выберите xlive.dll из списка и подождите завершения анализа. Когда анализ закончится, просто закройте окно.

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

Поиск злого глаза

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

00488410 - 8B 81 48080000 - mov eax,[ecx+00000848]

Теперь нужно поставить бряк на данные по адресу 00488410, чтобы посмотреть, кто обращается к этому адресу. Мы делали это уже тысячу раз со значениями здоровья и т.д., но теперь мы проверяем адрес игрового кода и смотрим кто к нему обращается. Возвращаемся в игру и ждём, когда сработает наш бряк. Теперь у нас есть код, читающий память, добавляем его в список кодов и сохраняем таблицу. Вы видите, что найденный код находится в xlive.dll, как я и говорил. У меня код был такой:

012EAF84 - 8B 0A - mov ecx,[edx]

На следующем видео, названном мною «Этот код читает память и проверяет игровой код», показан наш прогресс.

Время вернуться к бою

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

Условный переход через нашу функцию

Функцию чтения памяти

Что-то другое

Поставим бряк на коде, читающем память и запустим игру. Как только увидите, что xlive.dll прекратил свою работу, уберите бряк и запустите игру, нажав F9. Нам нужен список возвратов, который появится в нижнем правом углу CE, когда xlive прекратит работу. Если Вы этого до сих пор не сделали, самое время запустить анализатор кода (Dissect code), который я предлагал Вам запустить в самом начале этой статьи. Теперь займёмся обратной трассировкой, как это было описано в предыдущей статье, в которой я объяснял работу обратной трассировки и функций.

Как видите, CE проанализировал наш код и показывает направление вызовов и прыжков. Это очень полезно. Если Вы прокрутите код вверх, Вы ничего интересного не найдёте, зато найдёте код, каким-то образом влияющий на вызовы. Мы нашли начало функции, в которой находится злой глаз (в моём случае функция начинается по адресу 012EAF1C). Хорошо, теперь вернёмся назад на один шаг и проверим функцию, которая вызывает нашу функцию. Если Вы нажмёте на верхний адрес в списке возратов, Вы перепрыгните туда. Мы находимся в месте, откуда вызывается наша функция. Видите намёки на условный прыжок? Да, есть один, но мне он не нравится, продолжаем листать функцию вверх. Дошли до начала функции. Давайте посмотрим, откуда она вызывается. Выбираем второй адрес в списке точек возврата. Теперь что-то интересное, куча прыжков и ничего больше. Ради интереса, давайте проверим третий адрес в списке точек возврата. Вау, то что мы искали. Короткий условный переход через функцию. Сохраните адреса найденного call и условного перехода в списке кодов и сохраните таблицу. Теперь осталось запенить условный прыжок je на безусловный jmp и будем всегда перепрыгивать функцию проверки, не давая xlive прочитать память. Теперь активируйте Ваш чит и играйте так долго, как захотите.

Третья часть видео:

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

Мир!

Geri

Перевод на русский: Alias

4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Со всем работает, прост эта функция убивает проверку данных на изменение, адреса то искать надо...

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Просто вариант: Xlive Patcher для Cheat Engine by dR.oLLe

xlive_patcher_v1.2.rar

В readme все описано.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я теперь понял зачем в главном меню Cheathappen'сам нажимать F1. Уничтожает проверку Xlive :lol: (не на всех играх, но всё же) :rolleyes:

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А вот как быть, если мне Xlive не даёт найти тот же адрес с патронами? И ещё вопрос. Это получается для каждой ф-ции в трейнере нужно будет отключать проверку целостности кода?

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

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас