EBOOT.BIN Patcher v1.1 - запуск новых игр на 5.00M33|5.03GEN/MHU
EBOOT.BIN Patcher v1.1
Как обладатель непрошиваемой 3008 версии psp я не мог смириться с тем, что 80% (если не больше) новых игр на ней не запускается.
Я начал изучать декомпилированный код загрузчиков игр на предмет несоответствий.
Сначала я пошел неправильным путем, считая, что в новых играх используются API-функции новой прошивки, при вызове которых psp зависала. Потратив несколько дней на изучение, я понял, что принципиальных отличий между загрузчиками нет.
После этого я начал обращать внимание на все детали и увидел, что практически в самом начале вызывается функция SysMemUserForUser_91DE343C. Поискав о ней информацию, я к сожалению, обнаружил, что данная функция ядра недокументирована ни в СДК, ни где либо еще. Продолжив раскопки я увидел это:
Используя дебаггер эмулятора jpcsp 0.3.1105 я увидел, что значение регистра $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 с помощью EDecrypt v1.3.1 либо PRXDecryptor 2.3;
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; 25.03.2010 в 16:51.
Причина: Update to version 1.1
Из более-менее стоящих релизов на 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
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Последний раз редактировалось ErikPshat; 07.10.2009 в 12:05.
ErikPshat, странно, Mercyful проверял на своей FAT'ке - у него не запустилась. А я только скачал ее, но проверить возможности пока нет, psp на работе нет
mc707, интересно, как ты считаешь? Объясни плиз свою математику?
Ага, понятно. Да, это оно и есть.
Заметил, что все смещения съехали?
Там где-то они ухитрились сдвиг сделать кривой, поэтому PRX Tool выдаёт неправильные смещения ))).
И в хексе я сразу заметил, что код идёт криво.
Pit-Bull1979, в шапке разве 5 пунктов никак.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Последний раз редактировалось ErikPshat; 07.10.2009 в 12:55.
ErikPshat, смещения есть относительные и абсолютные. То смещение, которое ты написал - абсолютное. Которое у меня в коде - относительное. Так же как для windows стандартный BASE CODE = 0x400000, так и для ELF-файлов стандартный BASE CODE = 0x8800000. Прибавляя к BASE CODE твое смещение + несколько байт на ELF-заголовок получаем относительное.
Последний раз редактировалось mc707; 07.10.2009 в 13:38.
mc707, Респект. Если можно, у меня целый ряд вопросов.
__1) Хотелось бы уточнить вот какой момент. Помимо проверок на версию, могут быть ещё проверки. Во всяком случае, если вот тут не врут: https://www.pspx.ru/forum/showpost.ph...&postcount=161 . Например, я бы попытался записать что-нибудь во флеш, и если получилось - ПСП патченная. Или поискать во флеше файлы кастом-прошивок. Это навскидку, я пока не очень в теме разбираюсь. Но конкретно, вы не пробовали играть в 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 в 14:38.
Nekama, у меня запустилось как на 5.00M33-6, так и на 5.03MHU. Качал сценический образ, расшифровывал декриптором от Йохиширо и патчил сабжем. При сборе в UMDGen импортировал смещения из заранее сохраненного txt файла.