Akama Опубликовано 4 февраля, 2010 Поделиться Опубликовано 4 февраля, 2010 Games for Windows - LIVE это некая программа от мелкософта, которая позволяет играть в инете в игры разных стилей и накапливать "достижения". В то же время эта программа мешает созданию трейнеров, помещая все данные о здоровье, патронах и тд в защищаемый буфер, доступ к которому ну никак не получить. В этой теме как раз и хочу получить ответ на решение данной проблемы: как отключить защиту данных от взлома этой дряни? P.S. как то рассматривая таблицу СЕ для DOW2 я наткнулся на вот такую вещ: xlive.dll+AB247: ret 0c // Disable XLive Значит автор таблицы таки нашёл способ вырубить проверку данных, но как это сделать для остальных подобных игр? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 4 февраля, 2010 Поделиться Опубликовано 4 февраля, 2010 Как раз-таки найти значения можно. xlive запрещает модификацию кода. Но это можно обойти. Данный вопрос мы с Мастером как-то обсуждали по аське, и Мастер где-то находил решение данной проблемы. Решение состоит в том, чтобы запретить в xlive процедуру проверки целостности кода. Что и сделано в указанном тобой коде. Только один нюанс - в каждой новой версии xlive данная процедура переезжает на новое место, а это значит, что нужно каждый раз при запуске трейнера проверять положение этой процедуры. В данной время в процессе разработка универсального (работающего на всех версиях xlive) алгоритма снятия защиты целостности кода. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 4 февраля, 2010 Поделиться Опубликовано 4 февраля, 2010 Пока точного решения нет... Эта штука помотала мои нервы в игре 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 ). Данный скрипт вызывает сразу или через некоторое время "мессагу исключения" при подключении отладчика или изменении памяти игры. Если мессагу не закрывать, то можно исследовать код и играть дальше. Если этот скрипт не использовать, то игра будет "молча" закрываться. Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 5 февраля, 2010 Автор Поделиться Опубликовано 5 февраля, 2010 Если верить создателю, то этот asi плагин убирает проверку xlive.dll, то есть данные становятся незащищёнными.[ub=http://www.filekeeper.org/download/shared/XliveProtectDisabler.asi]XliveProtectDisabler[/ub]Возникает вопрос - как эту весчь вшить в тренер чтобы отдельно не подгружать? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 5 февраля, 2010 Поделиться Опубликовано 5 февраля, 2010 Если верить создателю, то этот asi плагин убирает проверку xlive.dll, то есть данные становятся незащищёнными.[ub=http://www.filekeeper.org/download/shared/XliveProtectDisabler.asi]XliveProtectDisabler[/ub]Возникает вопрос - как эту весчь вшить в тренер чтобы отдельно не подгружать?А инструкция есть как XliveProtectDisabler.asi пользоваться? PS Для тех кто не в танке (сталкивался с пакерами), мне кажется, что Александр Блейд либо напрямую связан Artmoney как её разработчик, либо косвенно (использовал один и тот же пакер). Потому что и Артмани и XliveProtectDisabler.asi запакованы похоже одним и тем же странным пакером и похожим на обфускатор Аспака. Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 5 февраля, 2010 Автор Поделиться Опубликовано 5 февраля, 2010 Инструкция та же, что и для ачивера - в чит энгине выбрать inject dll и выбрать эту библиотеку, потом нажать на NO и по идее лайв должен не выстёбываццо. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 5 февраля, 2010 Поделиться Опубликовано 5 февраля, 2010 Инструкция та же, что и для ачивера - в чит энгине выбрать inject dll и выбрать эту библиотеку, потом нажать на NO и по идее лайв должен не выстёбываццо.Ну если так, то конечно можно попробовать прикрутить это дело к трейнеру. Одно плохо, что не известно будет ли это дело работать с разными версиями xlive. Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 5 февраля, 2010 Автор Поделиться Опубликовано 5 февраля, 2010 Библиотека тестировалась на последней версии лайва, так что пробуй, клавное в тренер воткнуть... Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 8 февраля, 2010 Автор Поделиться Опубликовано 8 февраля, 2010 Как показал мой собственный тест - библиотека не помогла мне вскрыть DoW2, ибо при запуске дебаггера игра крашилась... Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 9 февраля, 2010 Поделиться Опубликовано 9 февраля, 2010 Если я что-то сделаю или узнаю по поводу xlive, то отпишусь. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 9 февраля, 2010 Поделиться Опубликовано 9 февраля, 2010 На мой взгляд - алгоритм таков:1. Находим в коде xlive процедуру, следящую за целостностью кода.2. Делаем хук на эту процедуру.3. В перехваченной процедуре ничего не делаем, а возвращаем библиотеке значение, сигнализирующее о том, что все в порядке.4. Взламываем игру, как обычно.Самому пока заняться этим некогда, очень много работы. Как будет время, постараюсь заняться. Если кому интересно, может не ждать и заняться сам. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 9 февраля, 2010 Поделиться Опубликовано 9 февраля, 2010 3. В перехваченной процедуре ничего не делаем, а возвращаем библиотеке значение, сигнализирующее о том, что все в порядке.Ты такой вывод сделал (предположил) прогнав xlive в IDA ? Вполне могут быть так называемые инлайн вставки, которые очень удобно можно реализовать в С++, которые не являются отдельными функциями возвращающие значение о том что "в порядке или не в порядке". Т.е. если в void функцию напичканы эти вставки, тогда твой метод не точен. В этом случае конечно тоже есть решения. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 9 февраля, 2010 Поделиться Опубликовано 9 февраля, 2010 Я просто рассказал общий подход )) Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 24 февраля, 2010 Автор Поделиться Опубликовано 24 февраля, 2010 Реально ли открыть в процессе xlive.dll и проверить какие инструкции он исполняет? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 24 февраля, 2010 Поделиться Опубликовано 24 февраля, 2010 Реально с обходом ловушек антиотладки если они там присутствуют. Ссылка на комментарий Поделиться на другие сайты Поделиться
JIeXA Опубликовано 13 января, 2011 Поделиться Опубликовано 13 января, 2011 Ну что ребят поделитесь по данному зверьку новой инфой если таковая имеетсяАкама перезалей если осталось XliveProtectDisabler Plz Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 15 января, 2011 Автор Поделиться Опубликовано 15 января, 2011 Данный скрипт убивает проверку 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
SER[G]ANT Опубликовано 29 января, 2011 Поделиться Опубликовано 29 января, 2011 она вообще там не нужна mov edi,edi push ebp заменяется на ret 0c и готово Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 29 января, 2011 Поделиться Опубликовано 29 января, 2011 Мне тоже показалось что это прикол. Просто вбили невыполняемые байты в nop. А с GTA4 не работает как я понял Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 4 февраля, 2011 Поделиться Опубликовано 4 февраля, 2011 Недавно вышла статья про обход Xlive - ссылка.Например, там вы увидите следующее. Для того чтобы узнать какой код xlive проверяет сохранность кода игры, вы должны поставить "аппаратный бряк на доступ" на игровой код (подробности в статьи с видео) Ссылка на комментарий Поделиться на другие сайты Поделиться
aliast Опубликовано 4 февраля, 2011 Поделиться Опубликовано 4 февраля, 2011 Недавно вышла статья про обход 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
Akama Опубликовано 4 февраля, 2011 Автор Поделиться Опубликовано 4 февраля, 2011 Со всем работает, прост эта функция убивает проверку данных на изменение, адреса то искать надо... Ссылка на комментарий Поделиться на другие сайты Поделиться
live_4_ever Опубликовано 11 февраля, 2011 Поделиться Опубликовано 11 февраля, 2011 Просто вариант: Xlive Patcher для Cheat Engine by dR.oLLexlive_patcher_v1.2.rarВ readme все описано. Ссылка на комментарий Поделиться на другие сайты Поделиться
Ac1d Опубликовано 10 июля, 2011 Поделиться Опубликовано 10 июля, 2011 Я теперь понял зачем в главном меню Cheathappen'сам нажимать F1. Уничтожает проверку Xlive (не на всех играх, но всё же) Ссылка на комментарий Поделиться на другие сайты Поделиться
ZOCKIR Опубликовано 10 июля, 2011 Поделиться Опубликовано 10 июля, 2011 А вот как быть, если мне Xlive не даёт найти тот же адрес с патронами? И ещё вопрос. Это получается для каждой ф-ции в трейнере нужно будет отключать проверку целостности кода?В своих походах я не встречался Xlive (Игрушка с такой защитой не попала мне) я так понимаю что Xlive следить и проверяет код и не дает допуск, даже приближаться к коду. думаю один раз заглушишь Xlive и все, ворота открыто для исследование и т.д. Жизнь,патроны и т.д Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения