EBOOT.BIN Patcher v1.1 - запуск новых игр на 5.00M33|5.03GEN/MHU
EBOOT.BIN Patcher v1.1
Как обладатель непрошиваемой 3008 версии psp я не мог смириться с тем, что 80% (если не больше) новых игр на ней не запускается.
Я начал изучать декомпилированный код загрузчиков игр на предмет несоответствий.
Сначала я пошел неправильным путем, считая, что в новых играх используются API-функции новой прошивки, при вызове которых psp зависала. Потратив несколько дней на изучение, я понял, что принципиальных отличий между загрузчиками нет.
После этого я начал обращать внимание на все детали и увидел, что практически в самом начале вызывается функция SysMemUserForUser_91DE343C. Поискав о ней информацию, я к сожалению, обнаружил, что данная функция ядра недокументирована ни в СДК, ни где либо еще. Продолжив раскопки я увидел это:
Используя дебаггер эмулятора [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] я увидел, что значение регистра $v0, в который записывается число 505h по адресу 8e2c290 передается функции SysMemUserForUser_91DE343C по 8e2c2b8. На самом деле получается, что вызывается функция ядра SysMemUserForUser_91DE343C(0x0505,...), что наводит на мысль по аналогии с вызовом функции
Код:
// @param sdkversion - The sdkversion to set
// (e.g.: 0x02070110 in applicationc compiled for firmware 2.71)
int sceKernelSetCompiledSdkVersion(int sdkversion);
что говорит о том что число 0x0505 может означать версию прошивки 5.50.
Недолго думая, исправив это значение на 0x0500 я успешно запустил данную игру на 5.03 MHU.
Два дня ушло на проверку теории и тестирование на всех играх на прошивках 5.0m33-6 и 5.03MHU (Мой друг Mercyful тестировал на 5.0m33-6, я тестировал на 5.03MHU). Результат оказался впечатляющим - на 5.0 работают 98% игр (2% ушло на несколько игр плюс небольшой запас).
Для не знакомых с ассемблером процессора MIPS предлагаю небольшую инструкцию для быстрого патча и универсальный патчер для любой игры, включая (я надеюсь) еще невышедшие:
Инструкция
1. Извлеките с помощью UMDGen из образа игры загрузчик EBOOT.BIN и экспортируйте File list (меню File>File list>Export);
2. Декриптуйте загрузчик EBOOT.BIN с помощью [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] либо [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!];
3. Примените [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] к декриптованному загрузчику EBOOT.BIN (проверьте, что это именно декриптованный - у него хедэр ELF).
4. Упакуйте загрузчик обратно в образ (с помощью UMDGen замените загрузчик EBOOT.BIN в образе на декриптованный).
5. Импортируйте File list обратно, согласившись с вопросом о желании зафорсить положение файлов в образе! (этот пункт обязателен для многих игр, в частности DiRT2 без этой процедуры валится в черный экран)
6. Сохраните новый образ из UMDGen (cохраните оригинал)
7. Перепишите образ на psp и играйте.
P.S. В ссылке на патчер приведен список всех протестированных игр.
UPDATE: Для тех, кто будет править файл вручную, обратите внимание, что есть игры в которых таких проверок не одна. Точно знаю что не одна проверка в DIRT2, Bloons Minis и Undead Knigts. Именно поэтому патчер патчит так долго, ищет дополнительные проверки.
Последний раз редактировалось ErikPshat; 04-12-2009 в 03:00.
Причина: Update to version 1.1
mc707, привет! :) Хочу сказать, что я очень благодарен тебе за данную прогу, потому что у меня зыза 2004 непрошивайкам и я уже хотел покупать себе *старую* прошиваемую зызу... почти все игры не запускались. У меня есть из новых игр только GT USA, образ iso, я файл пропатчил в Game Decryptor by Yoshihiro v2, зашел в твою программу, тоже файл пропатчил, всунул в образ и сохранил в исо. Захожу в игру - черный экран. Что не так? У меня 5.03 мху. Еще раз спасибо за прогу
Последний раз редактировалось makci-n82; 23-11-2009 в 15:46.
не забываем что после декриптинга ебут.бин (который надо патчить) будет в папке DECRYPTOR!!! от туда его забираем, патчим, заливаем обратно в исо и играем.....ещё раз спасибо автору за титанический труд на благо всех!!!!
Кстати, если поменять версию не на 5.00, а на 1.0, то игра будет запускаться на всех прошивках? )))
То есть нужно искать в EBOOT.BIN версию прошивки 0505023C и заменить на 0005023C.
Да, и ещё ко многим играм требуется дополнительно Крэк. Почему же тогда на 5.50GEN крэка не требуется и все игры работают так?
__________________ [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!]
Последний раз редактировалось ErikPshat; 07-10-2009 в 06:59.
Ура!
Проверил Gran Turismo (USA) - пошла на 5.00М33-6
__________________ [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!]
Последний раз редактировалось ErikPshat; 07-10-2009 в 09:45.
ErikPshat, ок, бывает, я уж думал что опять что-то не учел :)
Цитата:
Единственное мне не понятно то, что некоторые игры, которые напрочь отказываются работать на 5.00m33 (естественно без твоего патча), спокойно идут на 4.01m33...
мне тоже это интересно... больше всего вероятно то, что функция SysMemUserForUser_91DE343C в 4.01m33 реализована как-то иначе.
Из более-менее стоящих релизов на 5.0 не идет пока только Marvel Ultimate Alliance 2 (остальные японки). Сейчас только скачал ее... буду копать ее. Хотя к ней патчер не применяется, так как он так же как и моторшторм должен запуститься и без него.
mc707, огромное спасибо за патчер! оправдались мои подозрения - любая игра (не хоумбрю) может идти на любой прошивке, главное скинуть проверку. оставалось как-то декомпилировать декриптованный загрузчик, чтобы посмотреть код. чем декомпилил?
Хотя к ней патчер не применяется, так как он так же как и моторшторм должен запуститься и без него.
А не пробовал вручную поискать смещение 05 05 02 3C
Ещё знаю, что в PRX-ах, версию прошивки записывают так: 10 05 05 05 для 5.55.
Для 6.00 могут написать так: 10 00 00 06 или 00 06 02 3C
__________________ [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!]
Последний раз редактировалось ErikPshat; 07-10-2009 в 09:52.
ErikPshat, пробовал. Там именно 00 05 02 3С стоит. Т.е. требуется 5.00. Сейчас копаю дизассемблерный код, нашел несколько unknown syscall'ов, возможно проблема в них.
Код:
08d90838:[0008998c]: syscall 0x02266 [sceMpegGetAvcAu]
08d9083c:[03e00008]: jr $ra
08d90840:[03ffffcc]: syscall 0xFFFFF [unknown]
08d90844:[03e00008]: jr $ra
08d90848:[03ffffcc]: syscall 0xFFFFF [unknown]
08d9084c:[03e00008]: jr $ra
08d90850:[03ffffcc]: syscall 0xFFFFF [unknown]
08d90854:[03e00008]: jr $ra
08d90858:[03ffffcc]: syscall 0xFFFFF [unknown]
08d9085c:[03e00008]: jr $ra
08d90860:[03ffffcc]: syscall 0xFFFFF [unknown]
08d90864:[03e00008]: jr $ra
08d90868:[03ffffcc]: syscall 0xFFFFF [unknown]
08d9086c:[03e00008]: jr $ra
08d90870:[0008628c]: syscall 0x0218A [PowerRegisterCallback]
unsupported, в шапке написано. Использовал и prxtool (он удобен тем, что показывает reference ссылки) и jpcsp 0.3 (удобен тем что есть дебаг(!) и весь импорт резолвит)
Последний раз редактировалось mc707; 07-10-2009 в 11:31.
Из более-менее стоящих релизов на 5.0 не идет пока только Marvel Ultimate Alliance 2
Скачал наконец "Marvel Ultimate Alliance 2" (ULUS-10421)
Что-то не пойму. Запускаю игру, она предлагает создать новый профиль, создаю имя и т.п., потом говорит нажмите START, чтобы начать игру, а когда нажимаю START, то говорит "There is no Data"
Это из-за этого игра не идёт на 5.00М33-6?
UPDATE
А не, пошла. Драйвер Sony NP9660.
Ролик покатил со всякими привидениями и Человеком-пауком, ещё мышь летучая.
Хех, я пошёл гонять, со мной толпа из 5-ти чудиков, считая меня )))
Короче, как и говорил про обозначения прошивки во всех PRX-ах:
Ищи 10 00 05 05 и меняй на 10 00 00 05
Найдёшь единственное смещение в offset: 34 C6 27
__________________ [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!]
Последний раз редактировалось ErikPshat; 07-10-2009 в 13:05.
ErikPshat, странно, Mercyful проверял на своей FAT'ке - у него не запустилась. А я только скачал ее, но проверить возможности пока нет, psp на работе нет :)
__________________ [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!]
__________________ [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!]
mc707, интересно, как ты считаешь? Объясни плиз свою математику?
Ага, понятно. Да, это оно и есть.
Заметил, что все смещения съехали?
Там где-то они ухитрились сдвиг сделать кривой, поэтому PRX Tool выдаёт неправильные смещения ))).
И в хексе я сразу заметил, что код идёт криво.
Pit-Bull1979, в шапке разве 5 пунктов никак.
__________________ [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] | [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!]
Последний раз редактировалось ErikPshat; 07-10-2009 в 13:55.
ErikPshat, смещения есть относительные и абсолютные. То смещение, которое ты написал - абсолютное. Которое у меня в коде - относительное. Так же как для windows стандартный BASE CODE = 0x400000, так и для ELF-файлов стандартный BASE CODE = 0x8800000. Прибавляя к BASE CODE твое смещение + несколько байт на ELF-заголовок получаем относительное.
Последний раз редактировалось mc707; 07-10-2009 в 14:38.
mc707, Респект. Если можно, у меня целый ряд вопросов.
__1) Хотелось бы уточнить вот какой момент. Помимо проверок на версию, могут быть ещё проверки. Во всяком случае, если вот тут не врут: [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!] . Например, я бы попытался записать что-нибудь во флеш, и если получилось - ПСП патченная. Или поискать во флеше файлы кастом-прошивок. Это навскидку, я пока не очень в теме разбираюсь. Но конкретно, вы не пробовали играть в Disgaea2 на виртуальной m33-6 и уйти в sleep-mode?
__2) Такой общеобразовательный вопрос. Насколько я понял из темы про Game decriptor, в новых прошивках используется новый формат ~PSP, который не по зубам старым прошивкам. И весь смысл декриптовки - это перевести файл из формата ~PSP в ELF? Или всё-таки патчер от йоширо ещё что-то делает с ELF-ом потом, типа твоего патчера?
Просто есть ли разница в применении Game Decryptor by Yoshihiro v2 и PRXDecryptor 2.3?
__3) Ты не мог бы привести в шапке темы ссылки на описание работы PRXdecrypter 2.3. Куда его положить, откуда запустить? Думаю, это было бы полезно, а то по приведённым ссылкам как-то не очень понятно, хмм, рассчитано на advanced users... :]
Правильно ли я понял, что надо
а) забросить папку PRXdecrypter с тремя файлами в ms0:/PSP/GAME/
б создать папки ms0:/enc и ms0:/dec
в) положить в ms0:/enc файл eboot.bin из iso игры
г) запустить PRXdecrypter и сказать там "Decrypt/decompress files"
д) забрать из ms0:/dec распакованный eboot.bin
__4) Будешь ли ты поддерживать следующие игры. Там же будут проверки на 6.1, 6.2, N.X и т.п. И потом, проверки могут быть написаны не в столь явном виде, а например, if (4.1 + 1.4 > ver) :] Я к тому, что труд тяжёлый это.
Ещё раз респект :]
ErikPshat, >> они ухитрились сдвиг сделать кривой
Это не к вопросу о магическом 0x60? :]
hasherfrog, отвечу по возможности, так сам в данной теме не особо профи, psp приобрел и начал изучать только этим летом.
Итак
1. Смысла в дополнительных проверках особого нет, их делают только дотошные программеры игр. Видимо пример с Disgaea2 к такому относится. Возможно, увидев, что в игры по прежнему до сих пор играют, возможно далее усилят защиту. Что касается sleep-mode - не смотрел, скачаю и посмотрю ее как будет время.
2. Весь смысл декриптовки обеих программ в том, чтобы расшифровать PRX файл (в общем случае), получить gzip архив, распаковать его и получить ELF файл. Принцип такой же как и с упаковщиками EXE файлов в Windows, например UPX. Только тут еще используется ключ расшифровки, хранящийся внутри прошивки psp.
Получается, что разницы между PRXDecryptor и GameDecryptor особой нет. Принцип один.
3. Инструкцию ты написал правильную. Просто по умолчанию PRXDecryptor сохраняет расшифрованный файл в ту же папку ms0:/enc/ насколько я помню.
4. Буду стараться не покидать данную тему, т.к. мне не столько поиграть в новые игры интересно, сколько изучать архитектуру и особенности psp. Хотя в новую фифа10 играю с удовольствием =)
пытался пропатчить Naruto Shippuden Legends Akatsuki Rising - всеравно черный экран... пробовал ставить драйвер М33 - непомогло... ктото может помочь с этой проблемкой, или cсылку на пропатченый образ дать? =_=
PSP 2001, 5.03MHU
Последний раз редактировалось Nekama; 07-10-2009 в 15:38.
Nekama, у меня запустилось как на 5.00M33-6, так и на 5.03MHU. Качал сценический образ, расшифровывал декриптором от Йохиширо и патчил сабжем. При сборе в UMDGen импортировал смещения из заранее сохраненного txt файла.