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:

d-m@n 07.10.2009 09:47

киньте плиз на народ(или на другой файлообменник) готовый европейский GT для 5.03 :)

sbx604 07.10.2009 10:51

Я извиняюсь за мой плохой русский, я просто хотел сказать спасибо mc707 :)

(Я из Южной Америки)

germansol23 07.10.2009 11:32

А как применить патчер? Я уж собирался на ген перейти

germansol23 добавил 07-10-2009 в 11:32
суппер fifa10 пошла

ErikPshat 07.10.2009 11:34

Цитата:

Сообщение от mc707 (Сообщение 828987)
Из более-менее стоящих релизов на 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

mc707 07.10.2009 11:57

ErikPshat, странно, Mercyful проверял на своей FAT'ке - у него не запустилась. А я только скачал ее, но проверить возможности пока нет, psp на работе нет :)

VIK 07.10.2009 12:00

О, спасибо!
Попробую :)

ErikPshat 07.10.2009 12:02

mc707, так что надо патч версии №2 выпускать )))

mc707 07.10.2009 12:29

ErikPshat, нашел я это место, но сомневаюсь я, что это именно здесь, судя по коду:
Код:

08b4c5a8:[24a5ffff]: addiu      $a1, $a1, -1
08b4c5ac:[00852824]: and        $a1, $a0, $a1
08b4c5b0:[10a00004]: beq        $a1, $zr, 0x08B4C5C4
08b4c5b4:[3c050500]: lui        $a1, 0x0500 <=> li $a1, 0x05000000
08b4c5b8:[00852024]: and        $a0, $a0, $a1
08b4c5bc:[1480020a]: bne        $a0, $zr, 0x08B4CDE8
08b4c5c0:[00000000]: nop

вечером проверю )

ErikPshat 07.10.2009 12:34

mc707, я же выше написал уже, где надо искать )

mc707 07.10.2009 12:37

ErikPshat, это именно оно )

Pit-Bull1979 07.10.2009 12:41

напишите пожалуйста поподробней ...как "пропатчить" какую либо игру??
а то у меня никак не получается ....

ErikPshat 07.10.2009 12:41

mc707, интересно, как ты считаешь? Объясни плиз свою математику?

Ага, понятно. Да, это оно и есть.
Заметил, что все смещения съехали?
Там где-то они ухитрились сдвиг сделать кривой, поэтому PRX Tool выдаёт неправильные смещения ))).
И в хексе я сразу заметил, что код идёт криво.

Pit-Bull1979, в шапке разве 5 пунктов никак.

mc707 07.10.2009 13:05

ErikPshat, смещения есть относительные и абсолютные. То смещение, которое ты написал - абсолютное. Которое у меня в коде - относительное. Так же как для windows стандартный BASE CODE = 0x400000, так и для ELF-файлов стандартный BASE CODE = 0x8800000. Прибавляя к BASE CODE твое смещение + несколько байт на ELF-заголовок получаем относительное.

Astra1111 07.10.2009 13:07

Почему после того как пропатчил Grand Turismo - игра запускается, но не работает сохранение? Как исправить?

hasherfrog 07.10.2009 13:45

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? :]

germansol23 07.10.2009 14:02

блин а гт не запускается. кто нить скинте eboot.bin пропатченный на амерканку размер около 7 мб

germansol23 добавил 07-10-2009 в 14:02
у мя 5.00 m-33

mc707 07.10.2009 14:12

hasherfrog, отвечу по возможности, так сам в данной теме не особо профи, psp приобрел и начал изучать только этим летом.

Итак
1. Смысла в дополнительных проверках особого нет, их делают только дотошные программеры игр. Видимо пример с Disgaea2 к такому относится. Возможно, увидев, что в игры по прежнему до сих пор играют, возможно далее усилят защиту. Что касается sleep-mode - не смотрел, скачаю и посмотрю ее как будет время.

2. Весь смысл декриптовки обеих программ в том, чтобы расшифровать PRX файл (в общем случае), получить gzip архив, распаковать его и получить ELF файл. Принцип такой же как и с упаковщиками EXE файлов в Windows, например UPX. Только тут еще используется ключ расшифровки, хранящийся внутри прошивки psp.
Получается, что разницы между PRXDecryptor и GameDecryptor особой нет. Принцип один.

3. Инструкцию ты написал правильную. Просто по умолчанию PRXDecryptor сохраняет расшифрованный файл в ту же папку ms0:/enc/ насколько я помню.

4. Буду стараться не покидать данную тему, т.к. мне не столько поиграть в новые игры интересно, сколько изучать архитектуру и особенности psp. Хотя в новую фифа10 играю с удовольствием =)

Nekama 07.10.2009 14:35

пытался пропатчить Naruto Shippuden Legends Akatsuki Rising - всеравно черный экран... пробовал ставить драйвер М33 - непомогло... ктото может помочь с этой проблемкой, или cсылку на пропатченый образ дать? =_=

PSP 2001, 5.03MHU

Klerikus 07.10.2009 14:52

Nekama, у меня запустилось как на 5.00M33-6, так и на 5.03MHU. Качал сценический образ, расшифровывал декриптором от Йохиширо и патчил сабжем. При сборе в UMDGen импортировал смещения из заранее сохраненного txt файла.

Yoti 07.10.2009 14:56

mc707,
великолепно! Особенно, порадовало стремление к изучению и пониманию. Выше всех похвал.


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

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