Перейти к содержанию

[PS3] Создание читов на примере игры Inmfamous 1


aliast

Рекомендуемые сообщения

Статья о том, как искать и создавать чит-коды для игр Sony PlayStation 3

Автор статьи: Alias

Статья написана с использованием материалов с сайта www.codemasters-project.net/

Нам понадобится:

1) Сама консоль PS3 с кастомной прошивкой, позволящей запускать неподписанные программы – лицензионщики обламываются к сожалению (им придётся довольствоваться Codefreak Save Editor, довольно ограниченной по своему функционалу программой);

2) Распаковщик SELF-файлов и запаковщик ELF-файлов обратно в формат SELF

Рекомендую утилиту PS3 Cheat Enabler;

3) Любой HEX редактор, например 010 Editor;

4) Ida Pro (не обязательно, но желательно);

4) Хотя бы некоторое представление об ассемблере PowerPC (он отличается от привычного интеловского);

6) Много свободного времени, терпения и упрямства;

7) Ну и разумеется взламываемая игра. В этой статье ломать будем PAL версию игры Infamous 1 (код диска BCES-00609).

Здравствуйте. В этой статье я расскажу как же создаются читы в играх для консоли Sony PlayStation 3. Предупреждаю что ввиду отсутствия на сегодняшний день каких-либо хоумбрю программ, наподобие Cheat Engine для PS3, взлом игр для этой приставки представляет собой довольно трудоёмкий процесс. Также необходима «взломанная» PS3 с кастомной прошивкой (я использую CFW kmeaw 3.55) – я не пропагандирую пиратсво, но, увы, без этого про читы можно забыть.

  1. Подготовительный процесс

Первое что нам придётся сделать это распаковать игровой файл EBOOT.BIN в EBOOT.ELF.

EBOOT.BIN – стандартное название файла, с которого начинается процесс загрузки игры. Иногда этот файл может подгружать другой SELF-файл и тогда распаковывать нужно не его, а этот другой файл, т.к. EBOOT.BIN в этом случае выступает в роли загрузчика и игровой код внутри себя не содержит. Но такое встречается редко и в основном распаковывать нужно именно его.

EBOOT.BIN следует искать на диске с игрой в папке PS3_GAME\USRDIR. Скопируйте его себе на компьютер. Если у вас нет блурей дисковода, воспользуйтесь ftp сервером для PS3. Как настраивать ftp сервер на ps3 я тут объяснять не буду, инструкции есть в интернете, в любом случае FTP нам обязательно пригодится, так что настройте его, не поленитесь.

Теперь запускаем PS3 Cheat Enabler. Эта программа помимо прочего позволяет включать и выключать чит-коды, имеющиеся в её базе данных. Но мы сейчас будем создавать свой собственный чит, поэтому переходим на вкладку Manual Mode как показано на скриншоте (1):

8f6cf55cfe3d.jpg

В верхней строчке (2) выбираем скачанный с диска EBOOT.BIN, в нижней строке (3) указываем папку куда будет помещён распакованный файл EBOOT.ELF (эта программа зачем-то даст ему имя MOD_EBOOT.ELF). Теперь нажимаем внизу кнопку Extract Elf (4) и на выходе получаем MOD_EBOOT.ELF с которым и будем работать дальше:

77c28c71f198.jpg

  1. Пара слов об ассемблере PowerPC и способы взлома игр

Давайте теперь откроем получившийся файл в Ida Pro. Открываем его как бинарный файл, не забыв поменять тип процессора с дефолтного «Intel 80x86 processor: metapc» на «PowerPC: ppc»:

76e05da89c52.jpg

Жмём ОК, ждём около 10 минут окончания анализа файла и видим примерно такую картину:

cffd63e71ef3.jpg

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

Итак, существует два основных подхода ко взлому игр PS3:

  1. Поиск лимитов (например, вместимость патронов в обойме равна 20, или общее число патронов не может превышать 999; те же ограничения могут накладываться на деньги или здоровье).
  2. Поиск числа «1.0» типа Float. Это своего рода разновидность первого способа. Во многих играх число с плавающей точкой «1.0» является множителем скорости бега, высоты прыжка, количества получаемого или наносимого урона и т.д. и поиск всех таких единичек, жёстко прописанных в коде игры, часто помогает найти много всего прикольного в игре.

Есть и другие способы взлома, но мне они пока неизвестны. Можно, например, искать не число «1.0», а «2.0», «100.0» или ещё какие-то, но это всё займёт уйму времени, сканера памяти у нас, увы, нету. Начните с «1.0», а дальше видно будет.

Как же мы будем искать эту единичку? А искать мы будем ассемблерную команду

lis r0, 0x3F80

Аббревиатура lis расшифровывается как «Load Immediate Shifted», т.е. она записывает в регистр (в данном случае в регистр r0) число 0x3F80 и добавляет четыре нуля спереди. Получается что в регистр r0 запишется число 3F800000, что в десятичном виде и будет нашей желанной единичкой «1.0»!

Всего существует 32 регистра: r0 – r31 и 32 разновидности инструкции lis:

2bc393bcc8a6.jpg

Теперь, зная опкоды всех необходимых инструкций, можно приступать к поиску. Поиск будем делать в HEX редакторе. Вводим в него первые байты: «3C 00 3F 80» и находим около 209 совпадений! Теперь нам нужно проверить их все, заменив байты 3F80 на, допустим, 0000. Было «3C 00 3F 80», а станет «3C 00 00 00». Таким образом мы заменим константу «1.0» на «0.0». Только я не рекомендую делать сразу все 209 замен, скорее всего игра от такой наглости выпадет в осадок и не запустится, но можете и попробовать, страшного ничего не случится, только игра зависнет и придётся выдёргивать консоль из розетки и делать ребут… Попробуйте единоразово делать по 10 замен. Сохраняем сделанные изменения, закрываем HEX редактор.

3. Проверка результатов

Теперь нужно упаковать наш MOD_EBOOT.ELF обратно в EBOOT.BIN.

Вы ведь ещё не закрыли программу PS3 Cheat Enabler? Если закрыли, придётся по новой распаковывать EBOOT.BIN, делать наши изменения в HEX редакторе, сохранять и после этого нажимаем кнопочку «Make Modded Bin» в PS3 Cheat Enabler:

34b658be2eb1.jpg

Как гласит надпись на экране мы должны заменить получившимся файлом MOD_EBOOT.BIN оригинальный файл с диска. Но поскольку заменить файлы на блурей диске мы не можем, придётся воспользоваться Backup Manager (например, я использую Multiman) и загружать игру не с диска, а с её бэкапа (как делать бэкапы игр выходит за рамки данной статьи, ищите инструкции в гугле).

Для заливки нашего файла на консоль понадобится FTP Server. Залив файл в папку с бэкапом игры (только не забудьте переименовать MOD_EBOOT.BIN в EBOOT.BIN, соблюдая регистр букв (всё крупными буквами, PS3 к этому чувствительна как любой Linux)) пробуем запускать игру и смотрим запускается ли она или зависает, и если запускается что в игре визуально изменилось? Например, у меня после десяти первых замен заглючила анимация хотьбы и бега. Мой персонаж и все прохожие на улице стали скользить на одной ноге как на коньках… Сделать из этого какой-то чит скорее всего не выйдет, так что начинаем всё сначала – распаковываем оригинальный немодифицированный нами EBOOT.BIN, делаем новую порцию изменений в HEX редакторе, упаковываем обратно, заливаем на консоль, запускаем игру, смотрим что изменилось. И так повторяем раз за разом, пока не обнаружим нечто действительно любопытное. Если игра зависла, было бы не лишним вычислить заглючившую игру замену и проверить все остальные сделанные замены, вдруг там что-то интересное было, а вы не увидели из-за зависания игры.

В общем, я пока ломал игру у меня глючила анимация, игра зависала при нажатии кнопки прыжка или просто зависала, появлялись какие-то красные вспышки при ранении. Чаще всего каких-либо изменений в игре вообще не было видно. Но это всё не подходило для создания читов. И вот наконец при очередной замене все прохожие и некоторые враги вдруг застыли на месте! Я по ним стреляю, а враги мои хоть и огрызаются ответными выстрелами, с места не сходят, стоят себе… Поздравляю, мы только что нашли модификатор скорости. Осталось только вычислить какая именно произведённая нами замена вызвала такой эффект и первый чит на обездвиживание врагов готов (учтите, что это вредный чит и некоторые миссии с ним могут заглючить – кто-то должен куда-то подойти и что-то сделать, а сделать этого не сможет, чит не позволит). В моём случае чит располагался по смещению 0x16E948 от начала ELF-файла. Попробуйте изменить «3C 00 3F 80» в этом месте на «3C 00 42 С8» (42С80000 = «100.0») и посмотрите как пешеходы начнут бегать как супермены))) Жаль что этот чит работает не со всеми врагами и не распространяется на игрока и машины…

Продолжайте эксперименты с единичками, и вы обязательно найдёте что-нибудь ещё интересное. Не забывайте, что это мы только нашли команду lis r0, 0x3F80, а ведь есть ещё 31 регистр!

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

Прошу прощения не разобрался как из вон того списка Опкод\Инструкция сформировать таблицу. Из Ворда таблица не скопировалась :(

Ifamous cheats.rar

  • Плюс 2
Ссылка на комментарий
Поделиться на другие сайты

aliast, спасибо за статью. Советую создать какой-нить файло (rtf. pdf, doc, chm ...) и прилепить файло к первому сообщению. Или натыкать картинки в первый пост загружая их на форум а не на чужие хостинги. Дело в том, что радикал со временем может удалить твои картинки. Очень жаль будет их потерять.

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

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.