PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   PSP хакинг и девелопмент (https://www.pspx.ru/forum/forumdisplay.php?f=195)
-   -   EBOOT.BIN Patcher v1.1 - запуск новых игр на 5.00M33|5.03GEN/MHU (https://www.pspx.ru/forum/showthread.php?t=83993)

mc707 06.10.2009 20:40

EBOOT.BIN Patcher v1.1 - запуск новых игр на 5.00M33|5.03GEN/MHU
 
Вложений: 1

Как обладатель непрошиваемой 3008 версии psp я не мог смириться с тем, что 80% (если не больше) новых игр на ней не запускается.

Я начал изучать декомпилированный код загрузчиков игр на предмет несоответствий.

Сначала я пошел неправильным путем, считая, что в новых играх используются API-функции новой прошивки, при вызове которых psp зависала. Потратив несколько дней на изучение, я понял, что принципиальных отличий между загрузчиками нет.
После этого я начал обращать внимание на все детали и увидел, что практически в самом начале вызывается функция SysMemUserForUser_91DE343C. Поискав о ней информацию, я к сожалению, обнаружил, что данная функция ядра недокументирована ни в СДК, ни где либо еще. Продолжив раскопки я увидел это:
Код:

08e2c290:[3c020505]: lui        $v0, 0x0505 <=> li $v0, 0x05050000
08e2c294:[afb3000c]: sw        $s3, 12($sp)
08e2c298:[00809821]: addu      $s3, $a0, $zr <=> move $s3, $a0
08e2c29c:[34440010]: ori        $a0, $v0, 16
08e2c2a0:[afb20008]: sw        $s2, 8($sp)
08e2c2a4:[00a09021]: addu      $s2, $a1, $zr <=> move $s2, $a1
08e2c2a8:[afb10004]: sw        $s1, 4($sp)
08e2c2ac:[afb00000]: sw        $s0, 0($sp)
08e2c2b0:[3c100000]: lui        $s0, 0x0000 <=> li $s0, 0x00000000
08e2c2b4:[afbf0010]: sw        $ra, 16($sp)
08e2c2b8:[0e397784]: jal        0x08E5DE10 [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. Именно поэтому патчер патчит так долго, ищет дополнительные проверки.

xam-76 07.10.2009 00:36

Опробывал сее чудо,работает!!!!!!!!!!!!!!
Взял образ (Hero of Sparta) для начала,УРАААААААААА!!!!!!!
СПАСИБО!!!

yellowbarmaley 07.10.2009 00:43

ОГРОМНОЕ СПАСИБО!!!!
FIFA 10 действительно пошла!!! на 5.00 М33-6 ФАТКА:1008

zimirrr 07.10.2009 01:42

реально работает!!!! спасибо...просто настоящее чеЛЛЛовеческое спасибо...это просто подарок какой то :)

Niff 07.10.2009 01:55

аригато, пригодится тулза :thank_you:

makci-n82 07.10.2009 02:05

mc707, привет! :) Хочу сказать, что я очень благодарен тебе за данную прогу, потому что у меня зыза 2004 непрошивайкам и я уже хотел покупать себе *старую* прошиваемую зызу... почти все игры не запускались. У меня есть из новых игр только GT USA, образ iso, я файл пропатчил в Game Decryptor by Yoshihiro v2, зашел в твою программу, тоже файл пропатчил, всунул в образ и сохранил в исо. Захожу в игру - черный экран. Что не так? У меня 5.03 мху. Еще раз спасибо за прогу

Niff 07.10.2009 02:12

EBOOT.BIN.bak - это бэкап непатченого файла...

Klerikus 07.10.2009 02:13

makci-n82, UMD Iso Mode выставь на M33 Driver. Ничего не переименовывай, кидай EBOOT.BIN.

zimirrr 07.10.2009 02:21

не забываем что после декриптинга ебут.бин (который надо патчить) будет в папке DECRYPTOR!!! от туда его забираем, патчим, заливаем обратно в исо и играем.....ещё раз спасибо автору за титанический труд на благо всех!!!!

ErikPshat 07.10.2009 03:07

mc707, Огромное спасибо за такую находку!!!

Вот это действительно великое дело!

Кстати, если поменять версию не на 5.00, а на 1.0, то игра будет запускаться на всех прошивках? )))

То есть нужно искать в EBOOT.BIN версию прошивки 0505023C и заменить на 0005023C.
Да, и ещё ко многим играм требуется дополнительно Крэк. Почему же тогда на 5.50GEN крэка не требуется и все игры работают так?

HauB 07.10.2009 06:41

mc707
+1 - списибо, мне как раз было лень обновляться на 5.50 Gen-B
Объединяй усилия с Yoshimiro и будет вообще всеобщее ЩАСЬЕ !

mywya 07.10.2009 06:45

Это здорово, спасибо

ErikPshat 07.10.2009 06:53

Ура!
Проверил Gran Turismo (USA) - пошла на 5.00М33-6

makci-n82 07.10.2009 08:22

Ребят, скиньте пожалуйста пропатченный EBOOT.BIN к Гран туризмо на русском, а то у меня он что-то не патчится, хотя образы новые и не патченные...

mc707 07.10.2009 08:27

ErikPshat, ок, бывает, я уж думал что опять что-то не учел :)

Цитата:

Единственное мне не понятно то, что некоторые игры, которые напрочь отказываются работать на 5.00m33 (естественно без твоего патча), спокойно идут на 4.01m33...
мне тоже это интересно... больше всего вероятно то, что функция SysMemUserForUser_91DE343C в 4.01m33 реализована как-то иначе.

Из более-менее стоящих релизов на 5.0 не идет пока только Marvel Ultimate Alliance 2 (остальные японки). Сейчас только скачал ее... буду копать ее. Хотя к ней патчер не применяется, так как он так же как и моторшторм должен запуститься и без него.

unsupported 07.10.2009 08:44

mc707, огромное спасибо за патчер! оправдались мои подозрения - любая игра (не хоумбрю) может идти на любой прошивке, главное скинуть проверку. оставалось как-то декомпилировать декриптованный загрузчик, чтобы посмотреть код. чем декомпилил?

ErikPshat 07.10.2009 08:45

Цитата:

Сообщение от mc707 (Сообщение 828987)
Хотя к ней патчер не применяется, так как он так же как и моторшторм должен запуститься и без него.

А не пробовал вручную поискать смещение 05 05 02 3C

Ещё знаю, что в PRX-ах, версию прошивки записывают так: 10 05 05 05 для 5.55.
Для 6.00 могут написать так: 10 00 00 06 или 00 06 02 3C

mc707 07.10.2009 09:05

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 (удобен тем что есть дебаг(!) и весь импорт резолвит)

unsupported 07.10.2009 09:10

mc707,ага, уже все нашел, копаю :)

DeadWolf 07.10.2009 09:26

mc707, спасибо огромное. дисгая 2 заработала на 5.03 гена:good:


Текущее время: 20:19. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.