Savegame Deemer Ver 1.11
Возможность покопаться в сейвах
image001.png
Это маленький, но довольно полезный плагин, позволяющий сохранить SAVESTATE в простом, незашифрованном виде. Для чего это нужно? Как вы уже наверно знаете, редактировать сохранения, где хранятся ваши достижения, просто так не удастся – многие игры применяют свой метод шифрования, делают дополнительные проверки. Может показаться, что цель данного плагина лишь одна – читерство, однако это далеко не так. Благодаря Savegame Deemer вы сможете:
- Конвертировать сейвы под другой регион с одинаковым названием игры;
- Расшифровать сохранение и отредактировать данные, которые будут отображаться в XMB;
- Расшифровать сохранение и собрать его обратно, если на новой прошивке у вас возникают затруднения с совместимостью данных;
- Вполне возможно, что вы можете найти «пасхалки» в сейве;
- Редактировать сохранение в «косметических» целях (сменить ник, изменить название и т.п.);
- Находить уязвимости и создавать основу для эксплоитов;
- Ну и… читерить.
Скачать плагин:
Установка:- Скопируйте скачанный файл в папку ms0:/SEPLUGINS/
- Пропишите в файл конфигурации GAME.TXT строку:
ms0:/seplugins/deemerh.prx 1
Как расшифровываются данные?
На самом деле плагин не умеет расшифровывать уже зашифрованное сохранение – здесь используется другая хитрость. Когда вы начинаете сохраняться, то появляется специально заготовленный модуль сохранения от SONY с привычным для вас диалогом выбора ячейки. Плагин в это время перехватывает DataBuffer, дампит его и сохраняет тут же на флешку. Поэтому данные получаются расшифрованными. Все происходит без дополнительного вмешательства пользователя и сопровождается лишь небольшой задержкой, до и после сохранения.
Где лежат расшифрованные данные?
Обычно плагин сохраняет результаты своей работы в ms0:/PSP/SAVEPLAIN/. Он практически всегда идентично назван сохранению в папке SAVEDATA, но есть несколько недочетов: как показала практика, он не всегда правильно присваивает № слота (а бывает и не присваивает вовсе) – будьте внимательны! Виной всему то, что плагин сразу, после вызова диалога сохранения, перехватывает (только если № слота в игре сразу присваивается, когда вы еще даже не сохранились). Когда вы загружаете или сохраняете свой сейв, то наверняка замечали, что вам не надо крутить весь список слотов, а сама игра сразу нацеливает на тот слот, который последний раз использовался. Вот эту информацию о последнем использованном слоте плагин и перехватывает. Если вы возьмете другой слот для сохранения, то плагин не будет пересматривать перехватанный и запишет данные на старый вариант.
Расшифрованные данные уникальны для каждой прошивки или PSP?
Нет, они абсолютно идентичны и поэтому ваши достижения можно без проблем перенести на другой PSP или прошивку.
Из чего состоят расшифрованные данные?
В папке с расшифрованными данными вы увидите следующие файлы:
-
[gameid].BIN (снова обратите внимание, что перед вами переменная)
Содержит данные, важные для разработчиков. Также здесь прописан уникальный номер игры.
-
SDINFO.BIN
Содержит надпись и текст сейва, отображающийся в XMB или при загрузке/сохранении игры. Вот пример импортированного и отредактированного
SDINFO.BIN в зашифрованное сохранение:
-
SDDATA.BIN
Здесь содержится все, что интересно нам: наши достижения, данные, настройки и т.п. в игре.
Редактировать
SDINFO.BIN и
SDDATA.BIN можно HEX редактором или специальными редакторами сейвов, заточенными под конкретную игру.
Как загрузить отредактированный вариант?
Во время загрузки через штатный модуль от SONY, плагин берет название папки, который загрузил игрок (для примера возьмем UCUS00995_DATA01) и пытается найти идентичную в папке SAVEPLAIN. Если он (UCUS00995_DATA01) есть в этой папке, то плагин вмешивается в DataBuffer и заменивает в нем данные на те, что лежат в папке SAVEPLAIN (SAVEPLAINUCUS00995_DATA01). Если такого нет, то плагин оставляет DataBuffer неизменным. Поэтому очень важно правильно переименовать расшифрованный вариант в папке SAVEPLAIN, если плагин неверно его назвал.
Преобразование сейва из одного региона в другой - 1 вариант
Как-то, играя в сложный Pursuit Force с паленым русским переводом, я наткнулся на очередную неприятность: игра зависала на определенной миссии. В городской сети я нашел оригинальную версию, но она оказалась другого региона. Позже я узнал через CWCHEAT ID каждой версии: переведенная версия принимала значение UCET00007, в то время как оригинальная, не модифицированная - UCES00019.
Шаг 1 - расшифровка сохранений
Нам нужно расшифровать сейвы разных регионов. Сам принцип расшифровки я уже написал, но лучше закрепим теорию на практике:
1) Включаем данный плагин
2) Запускаем оригинальную версию (UCES00019). Хотя без разницы, с какой игры начинать.
3) Создаем новый профиль и сохраняем его.
4) Закрываем окошко сохранения и выходим из игры
5) Запускаем паленую русскую версию (UCET00007)
6) Загружаем профиль и пытаемся его пересохранить, вызвав стандартный SONY’евский диалог сохранения (чтобы это сделать в Pursuit Force, нужно отключить и включить автосохранение в настройках)
7) После пересохранения снова закрываем это окошко и выходим из игры.
Шаг 2 – Перекомпоновка: перенос достижения с сейва одного региона на сохраненку другого региона
Для начала нам нужно запустить файл менеджер (на моих скриншотах: PSPFiler 6.0) или подключите PSP к ПК с доступом к карте памяти. Затем нужно зайти в папку с расшифрованными данными, перенести с одной сохраненки с паленым переводом следующий файл:
SDDATA.BIN. Переставить его нужно в другой сейв с другим регионом. Кроме того мне пришлось должным образом переименовать папку с сохранением, чтобы ее имя соответствовало папке SAVEDATA. Итак, по порядку:
1) Зайдите в ms0:/PSP/SAVEPLAIN/
2) Вы должны увидеть 2 папки – UCET00007 и UCES00019. Обратите внимание, что плагин присвоил только GameID, но не добавил номер слота, а на самом деле стандартный зашифрованный вариант принимает такие названия: UCET000070000 и UCES000190000. Последние нули – это и есть № слота сохранения.
3) Перед тем как переносить наши достижения, лучше убедиться, что размер SSDATA.BIN в байтах одинаковый. Так вы можете рассчитать ваши шансы на успех портирования данного сейва. У меня, как видно на скриншоте, он совпадает. Также вы можете просмотреть их HEX-редактором, чтобы точно убедится в том, что алгоритм сохранения и загрузки данных в разных регионах тоже одинаковый.
4) Теперь скопируем данные (
SDDATA.BIN) с UCET00007 в UCES00019
5) Теперь нам нужно переименовать папку UCES00019, чтобы он соответствовал названию папки в SAVEDATA с 1 номером слота (отчет начинается с нуля).
Финальный шаг 3 – загрузка модифицированной незашифрованой сохраненки
Теперь осталось всего ничего – запустить игру и загрузить 1 слот сохранения. Если во время загрузки (в нашем случае мы загрузили сейв, находящийся в SAVEDATA/UCES000190000) плагин увидит идентичную папку UCES000190000 и в папке SAVEPLAIN, то произойдет вмешательство в DataBuffer и плагин заменит оригиналы на файлы, находящиеся в SAVEPLAIN/
UCES000190000.
Как видно по английскому скриншоту - все получилось успешно. Теперь можно сохранить результат в зашифрованном виде, выйти и отключать плагин, если он больше не нужен.
Преобразование сейва из одного региона в другой - 2 вариант
Проблема такого характера: хотелось бы импортировать сохранение Patapon 1 в Patapon 2, однако не все так просто: регион у Patapon 1 американский, а во второй части - европейский. Естественно, сохранения для импорта в Patapon 2 не подходит. Выход только один - портирование сохраненки. ID для каждой игры я узнал с помощью UMDGen:
1) Американская (UCUS98711)
image021.gif
2) Европейская (UCES00995)
image022.gif
Шаг 1 - Расшифровка сохранений
Как и с первым примером, нам нужно расшифровать сохраненки двух разных регионов: Американского и Европейского. Для этого нужно запустить каждую версию и сохраниться, не забыв при этом включить плагин Savegame Deemer (я сохранился на 1 слот). Более подробно:
1) Начнем с запуска американской версии. Загрузим сохраненку, сразу же сохраним и выйдем
2) Запускаем европейскую версию Patapon 1. Здесь мне пришлось начинать игру с начала т.к. у меня нет ни одного сохранения для этого региона. После успешно пройденного пролога незамедлительно сохраняемся и выходим.
Шаг 2 – Перекомпоновка
Как и с первым примером, нужно взять из сохранения SDDATA.BIN с американской версии и вставить в европейскую. Стоит обратить внимание, что первый номер слота в этой игре – далеко не сохранение с нашими достижениями, а общие настройки игры. Кроме того, мне не пришлось на этот раз правильно переименовывать папку с интересующим сохранением для определенного номера слота. Пошагово:
1) Как и в 1 примере, заходим в ms0:/PSP/SAVEPLAIN
2) Обратите внимание, что плагин на этот раз правильно назвал папку с сохранениями. Почему их 4? Потому что с самого начала игра грузила общие настройки (UCUS98711_DATA00 или UCES00995_DATA00 – смотря какой регион). Плагин, тем временем, перехватил кое-какую часть расшифрованых данных и сохранял на флешке. Поэтому папка X_DATA00 нас не должно интересовать. Также проверяем размер сохранения (SDDATA.BIN). В моем случае они одинаковые, что дает практически 100% шанс успешного портирования сохранения.
3) Теперь возьмем данные 1 слота с американской версии UCUS98711_DATA01 и перебросим их в европейскую - UCES00995_DATA01. Только, как и в 1 примере не все содержимое, а только файл SDDATA.BIN.
Финальный шаг 3 – загрузка модифицированной незашифрованой сохраненки
Теперь осталось всего нечего – загрузить тот слот, который мы модифицировали для европейской версии. В моем случае это был 1 слот.
Если вы все сделали правильно, то загрузите незашифрованный модифицированный сейв с нашими достижениями из американской версии игры. Остается только сохраниться и полюбоваться результатом.
Все. Теперь можно без проблем импортировать данный сейв в европейскую версию Patapon 2.
Преобразование сейва из одного региона в другой - 3 вариант
Все началось с того, что мне нужно было импортировать японский сейв из Patapon 2 в европейскую версию Patapon 2, однако сделать это оказалось весьма не просто. В этот раз я узнал ID каждой игры через PSPFiler:
1) Японская версия (
UCJS-10089)
2) Европейская версия (UCES-01177)
image028.gif image029.gif
Чтобы узнать ID игры с помощью PSPFiler, нужно открыть игровой образ и найти в нем файл UMD_DATA.BIN. Искомая циферка будет стоять в самом начале файла.
Шаг 1 - расшифровка сохранений
Тут, как в других двух примерах, делаем все тоже самое – запускаем обе версии, загружаем сейв (или начинаем сначала, если такого нет), тут же сохраняемся и выходим. Вы не забыли включить плагин? В моем случае я начал заново игру в Европейской версии, записался на 1 слот, и загрузил 10 слот в Японской версии и сохранился на этот же слот.
Шаг 2 – Перекомпоновка
Как и в предыдущих примерах копируем все тот же SDDATA.BIN на интересующий нас регион (в моем случае японская - UCJS10089 и европейская - UCES01177). Как и с первой частью «Патапонов», нулевой слот отведен под общие настройки.
Финальный (?) шаг 3 – загрузка модифицированной незашифрованной сохраненки
Теперь самое интересное – загружаем сейв с японскими данными в европейской версии игры. Я модифицировал данные слота 1, однако получил вот это:
Теперь ничего не остается делать, как прибегать к HEX редактору т.к. игра привязывается к языку сохранения. Однако перед тем как сравнивать SDDATA.BIN (также не забыли, что мы перетерли оригинальный файл расшифрованной сохраненки), нам лучше отсеять лишние данные (информация о кол-во оружиях, уровней патапонов и т.п.). Для этого начнем игру с начала, назовем Лордов штатными именами и сохранимся. Это нужно проделать с двумя разными регионами. Таким образом, многие данные будут совпадать (если алгоритм сохранения одинаковый), а нам лишь останется сравнить японские и европейские черты.
Шаг 4 – HEX вмешательство или сравниваем данные и меняем значения
Основная сложность заключается в том, что мы не знаем алгоритм проверки языка. Может ему не нравятся японские имена? А может в сейве жестко записан номер языка, к которому он привязан, а может что-то другое. Этого мы не узнаем до тех пор, пока не начнем наши HEX эксперименты. Для начала нужно найти подходящий HEX редактор с функцией сравнения (compare). Я для этого использовал бесплатный MiTeC Hex Editor.
Как мы видим, отличие лежит с самого начала. Конечно, есть и другие, но мы будем идти по порядку. Поменяем первое найденное отличие в японской версии сейва (нижнее окошко) на европейскую (верхнее окошко).
Сохраняем результаты и пробуем еще раз. Не забудьте положить модифицированный вариант в нужную папку с интересующим вас регионом. Пробуем загрузиться и…
Сработало! Причем получилось с первого раза! Значит то, что мы поменяли – и есть те данные, по которым игра жестко привязывается к языку.
Примечание: по моим многочисленным опытам и сравнениям с разными сейвами, защита от инородного языка в Patapon 2 записана в том месте, где я выделил на скриншоте:
Если поставить значение по нулям – сейв нельзя будет загрузить в европейской версии. Если любое другое, отличное от 00, то никаких проблем с загрузкой не будет.
Финальный шаг 5 – портируем интересующий нас сейв
Как вы уже помните, я сравнивал такие сохранения, на котором многие данные были отсеяны и лишь оставил только характерные черты японской и европейской версии. Теперь мы знаем, что нужно конкретно менять (особенно после моего примечания) и без проблем проделаем то же самое с действительно нужным сохранением для портирования.
Сохраняем результаты и пробуем загрузиться. Только не забудьте модифицированный SSDATA.BIN положить в нужное место. И снова мне снова получилось без проблем загрузить данное сохранение. Однако мы кое-что забыли – японские имена мы же так и оставили в сейве…
Дополнительный, но необязательный шаг 6 – корректируем японское сохранение на европейский лад
Тут нам снова поможет HEX редактор с функцией сравнения. Почему снова сравнивать? А потому что мы не знаем, какие японские символы нужно вбить, чтобы найти наши имена. Конечно, можно попытаться такие символы найти, но это будет крайне затруднительно. Легче, ориентируясь по европейскому сейву, переназвать наших героев. Разбирать все отличия мы не будем, а сразу начнем искать имя Kami (соблюдая при этом регистр) в европейской сейвке. Однако вы же не забыли, что игра использует японские иероглифы? Это уже должно говорить о том, что для кодирования имени нужно отвести 2 байта и используется кодировка Unicode. Поэтому меняем отображение данных как Unicode. После этого делаем поисковый запрос и если есть меню для выбора кодировки - ставьте Unicode.
Теперь осталось лишь поменять имена в японском сейве, ориентируясь по европейской сейвке.
В моем случае я сменил имя Лорда патапонов на любимый PSPFAQS. Оказывается имя можно дать длиннее, чем в самом игре (4 символа можно было набрать). Однако слишком длинное имя мы не сможем дать, ибо дальше идут совершено другие имена. Также обратите внимание (на самом конце слова PSPFAQS и последующим квадратом), что нужно хотя бы оставить один пустой байт, ибо ваши данные «слипнутся» и сейв в итоге может полностью испортиться. Лорда мы переименовали, а вот как быть с героем, если мы четко не видим, что нужно менять (в данном европейском сохранении еще ни разу не встречались с героем). Поэтому я взял совершенно чужой сейв и расшифровал его, где LOL – имя Лорда, а MEGA – имя героя.
Конечно, мне показалось странным, почему слово MEGA встречается дважды. Ну, раз так получилось – заменим имена и в двух участках. Я поменял старый ник на мой Myhouse
. Теперь сохраняем результаты, не забываем положить модифицированный SSDATA.BIN в нужное место, пробуем загрузить данные и любуемся результатами.
Бывают иногда такие ситуации, когда вы многое что проспали и было лень перейти на новую прошивку. Вы все тянули, тянули, но в итоге все же были вынуждены обновить свою модифицированную прошивку. Однако после обновления старые сохранения теперь ни в какую не читаются, указывая на то, что данные сохранения повреждены. Вы не можете смириться с этим, но и оставаться постоянно на старой прошивке уже нет никакого желания. В качестве примера я буду рассматривать сохранение от игры Patapon 2, сделанное на древней прошивке 3.71 M33. Разумеется, это сохранение не поддается загрузке на 5.00 M33.
Шаг 1 - Расшифровка сохранения на старой прошивке
Первым делом придется делать откат на старую версию прошивки, на которой было создано сохранение. Откатиться на 3.71 M33 можно с помощью Recovery Flasher. После этого (не забудьте включить плагин) запускайте игру с проблемным сохранением, загрузите его, сохранитесь и выходите из игры (на моем примере я работал с 1 слотом сохранения). Убедитесь, что все прошло по плану и в /SAVEPLAIN/ появились нужные файлы.
Примечание: у меня сохраниться в этой игре не получилось (каждый раз происходила отмена), но плагин все-таки смог сдампить то, что мне было нужно.
Шаг 2 - Расшифровка сохранения на новой прошивке
Переходите обратно на новую прошивку, запустите проблемную игру, начните ее заново и сохранитесь. Не забудьте перед этим включить плагин и переложить нужный старый сейв в папке SAVEPLAIN в другое место (я переименовал SAVEPLAIN в SAVEPLAIN2), если хотите избежать случайного переписывания (или ставьте атрибут только чтение).
Шаг 3 – Перекомпоновка
Теперь копируем все тот же SDDATA.BIN из папки старой прошивки в новую папку (которую мы получили в результате выполнения второго шага), соглашаясь на замену файла.
Финальный шаг 4 – загрузка модифицированной незашифрованной сохраненки
Если вы все правильно сделали, то после загрузки вы получите все данные, которые были сохранены на старой прошивке.
Редактирование надписей в сохранении
Вы помните, что было практически с самого начала статьи? Напомним:
За эту надпись в расшифрованном сейве отвечает - SDINFO.BIN (ее структура практически всегда одинакова во всех сохранениях). Его нужно отредактировать через HEX редактор и его состав таков:
Менять вы можете абсолютно все – ведь это лишь только описание сохранения, а не системные данные. Однако не забывайте, что у вас есть жестко выделенные интервалы. Кроме того кодировка текста в SDINFO.BIN используется UTF-8. Вы можете даже штатной 1 байтной кодировкой изменить надпись, однако если вам нужны спец. символы или нужно писать далеко не латиницей – вам потребуется узнать код символа в UTF-8. Однако это делать не нужно, если ваш HEX редактор поддерживает отображение и редактирование в UTF-8 кодировке. Но мне пришлось создать текстовый документ, ввести сюда свое будущее описание и сохранить как текст в кодировке UTF-8…
Затем я открыл HEX редактором:
Конечно, мы видим абракадабру, но не стоит так пугаться: нам лишь нужно перекопировать те байты, которые нам нужны, и поочередно вставить их в SDINFO.BIN. Обратите внимание, где начинается сам текст в txt файле – далеко не с самого начала файла. Также использовать новую строку лучше только в кратком описании сохранения и нигде более.
Теперь сохраните изменения, положите расшифрованный SDINFO.BIN куда надо, запустите и загрузите данное сохранение. Теперь вам нужно снова вызвать меню сохранения от SONY, однако перед этим удерживайте кнопку L, иначе все ваши труды пропадут даром т.к. SDINFO.BIN тут же перепишется старым вариантом (можете поставить на файл SDINFO.BIN атрибут только для чтения, чтобы защитить себя от такой ошибки, но без зажатия кнопки L вы ничего не получите).
Как только плагин заметил, что вы вызвали модуль сохранения от SONY и зажали кнопку L, он незамедлительно лезет в DataBuffer и заменяет оригинальный вариант SDINFO.BIN на модифицированный. Теперь сохранитесь на любой слот и любуйтесь результатами:
by
myhouse_1991