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
Ну вот и начали выходить новые игры под 6.10,а в скором времени полагаю что и под 6.20 сразу будут. Если декриптор там остался аналогичный 5.50,то может уже пора вставить в поиск не только 5.50,но и 6.10 и 6.20 и выпустить новую версию патчера ?
prxdecrypter 2.3 eboot от теккена подекриприть может, только толку все равно ни какого с этого :/ Так же как и EBOOT.BIN Patcher v1 находит там одну проверку и фиксит её, но результата все равно никакого, я так подозреваю что там данные просто как-то спрятаны, и игра читает образ по секторам, а не по файлам, а umdgen этого не понимает и сохраняет образ только с видимыми ему данными. Ну это так, просто мои мысли вслух, я не силён в этих тонкостях...
vicviper добавил 25-11-2009 в 22:27
mc707, ты меня опередил
Кстати, а я так подумал, а может как-то попробовать вставить декриптованый файл в образ, не пересохраняя его в umdgen...
*пошёл думать*
Последний раз редактировалось vicviper; 25.11.2009 в 22:27.
Причина: добавил, подумав
Ты абсолютно прав по всем пунктам. Я уже дошел до того, что она запускается на 5.0, но пока так же как и на 5.50D2 работает только в меню. Дальше при начале загрузки игры уходит в бесконечный цикл чтения карты памяти. Стопудово это связано с тем что данные не в файлах, а в секторах.
ELF-файл на выходе после декриптовки жутко кривой. Ни один декомпилер его не берет, кроме IDA. Нет секций, нет импорта функций. Такой файл ковырять очень тяжело. Хоть это и не мешает PSP его успешно запускать.
Бегло пробежавшись по коду, я увидел, что скрытых проверок на версию прошивки нет. Проблема в чем-то другом.
mc707, проверь на проверку карты памяти ms0:
Убери все ссылки на этот путь, кроме сейва.
Похоже, что защита аналогичная как у Соул Калибур, там тоже циферки прыгали.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Последний раз редактировалось ErikPshat; 26.11.2009 в 00:12.
Другие консоли: PSP1004, PS2 (70008), PS3 (80gb), PS3Slim (250gb)
Регистрация: 16.04.2007
Возраст: 40
Сообщений: 2,781
Вы сказали Спасибо: 66
Поблагодарили 599 раз(а) в 427 сообщениях
Сила репутации: 1
Репутация: 601 
(луч света в тёмном царстве)
Сообщение от ErikPshat
mc707, проверь на проверку карты памяти ms0:
Убери все ссылки на этот путь, кроме сейва.
Похоже, что защита аналогичная как у Соул Калибур, там тоже циферки прыгали.
у соулкалибура минялись пути PSP/SAVEDATA на PSP/PAVEDATA
maggot666x, не только. Там ещё была проверка на скрытые файлы в корне карты памяти. Во время запуска игры, в них по ходу кэшировались какие-то проверочные данные.
Нужно проверить поиском на наличие в ибуте ссылок на ms0: и всех их заменить нулями.
Попробуй, а то у меня образа нет.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Репутация: 177 
(весьма и весьма положительная личность)
На maxconsole парень предложил вариант решения (выдал какой то цифробуквенный список с указаниями, какие данные куда замещаются, где они одинаковы и.т.д... данные были очень похожи на те, что в первом посте) а мне так лень было вчитываться, решил, что парень отчебучил какую то белиберду ну и фиг с ним. Ан нет...(
Рассказываю по памяти, т.к. через некоторое время он потёр все свои посты с указанием причины как:
"...Removed by some requests"
У меня на почте остались уведомления с форума, с ещё не потёртыми сообщениями:
Скидываю как есть, если уловите мыслю, думаю поймёте, что к чему:
Всё, что осталось
Сообщение от Schnuffel
Сообщение от DeathMan
i heard that TEKKEN 6 work on psp fat with 5.50 Gen-B.
gonna check it l8r by myself also .
Yes m8, its uses a special system to detect the custom firmware...as Soul Calibur in the main idea (they uses a special lib inside the game code, perhaps Siren? Yes, it is a code to manage audio, but well... nvm, it is a joke ).
But, if you want detect the protection hook sceKernelLoadModule and log the calls,
5.50 GEN-B in PHAT only, avoid this protection,
Сообщение от infinity2005
Can this check be found by using your Soul Calibur disassembly as a guide? Or is it different?
And if you just nop the particular loadmodule call will that fix it or is it more complicated.
Сообщение от Schnuffel
....Removed by some requests, (Здесь то он как раз всё и изложил)
Сообщение от Schnuffel
Сообщение от SonicTH228
Does the fact it can run on a PSP-1000 help us at all? Or is it just a quirky fact that doesn't really bring us any closer to getting it running on any PSP with custom Firmware?
Read my post, only need make 3 patches in the game executable...very easy to make.
Only need 3 patches,
In this buffer the game will save the v1 value to check later.
But, the patch is more easy, i give you a hint, patch here -> LOAD:0886B580 move $a0, $v0 (x3 times in the anothers same code but different addresses),
ALL PEOPLE can patch if read the post that i posted some time ago, only need read the code and of course understand mips.
Вот собственно говоря всё, что осталось( Может инфа чем то поможет/может даст направление, куда можно копать... А может он просто посмеялся, а потом удалил, что бы его не мучали... Не знаю.
ErikPshat
Ты гад(((! Я тебя на пспфаке в чат звал, хотел как раз ссылку на этот пост дать, вместе порассуждать, а ты... Эх ты)
Последний раз редактировалось ACMECorp; 26.11.2009 в 08:17.
Другие консоли: PSP1004, PS2 (70008), PS3 (80gb), PS3Slim (250gb)
Регистрация: 16.04.2007
Возраст: 40
Сообщений: 2,781
Вы сказали Спасибо: 66
Поблагодарили 599 раз(а) в 427 сообщениях
Сила репутации: 1
Репутация: 601 
(луч света в тёмном царстве)
Сообщение от ErikPshat
maggot666x, не только. Там ещё была проверка на скрытые файлы в корне карты памяти. Во время запуска игры, в них по ходу кэшировались какие-то проверочные данные.
Нужно проверить поиском на наличие в ибуте ссылок на ms0: и всех их заменить нулями.
Попробуй, а то у меня образа нет.
Ну про флешевые файлы естествено не забыл. В буте ничего про них ненашел, а на карте я их удалил еще с СК.
емулем задебагить невыходит - критикал ерор на ельф он говорит.
ща паковырять нет возможности. вечером буду мучать. вчера до 4х ночи эксперементировал - из результата увы только саму исошку патчить научился, чтоб не повреждались "скрытые" данндые. :-l остальные все мучёния привадили к циферкам 7344 :-(
з.ы. кста выходит что первая абразина вовсе не фейк как все считали и возможно даже не битий, а тупо просто бут нечем декрипнуть :-)
Да, на maxconsole правильно писали, как заметил ACMECorp. Замена ms0 на нули естественно ни к чему не привела. Там дело в проверке CFW:
Do not try to rebuild this ISO in any way because
it will not work. We decided to release the full
version again as it is easier for us and you
CFW check is fixed and game should now run fine
on all recent firmwares, 5.03GEN-B and 5.50GEN-D2
is what we tested on
Час назад примерно уже выложили пофиксенный релиз на сцене - Tekken_6_USA_WORKING_READNFO_PSP-pSyPSP.
Теперь буду знать где и что искать на будущее...
UPD: Бред, pSyPSP пропатчили проверку CFW, но не пропатчили проверку версии прошивки...
Пропатчили сейчас своим патчером EBOOT.BIN из нового релиза - запустилась и на 5.00m33 и на 5.03mhu. Кстати если частота проца выставлена в играх 333, то игра виснет
Последний раз редактировалось mc707; 26.11.2009 в 12:47.
Репутация: 177 
(весьма и весьма положительная личность)
vicviper,
Суть в том, что UMDGen не видит скрытых файлов в образе, по этому, посчитав "невидимое" место, пустышкой, урезает образ до желаемых ему размеров и... и удаляет файлы игры. Именно по этому, при любом воздействии на образ, он тут же "худеет" и становится неработоспособным.
Даже если перетащить eboot в окно программы и согласиться на замену, образ тут же уменьшается. Но...
Yacc прекрасно справляется с задачей Iso->Cso, если в нём принудительно отключить все свистелки на тему урезать/почистить/заменить и.т.д... Только вот файл-менеджера в нём нет(
Можно просто через hex заменить eboot.
+ Уже и ppf патч есть, для "нерабочих" образов: ссылка
А вот декриптованый Eboot (в смысле он уже в образе был декриптован), от образа, который мы сейчас с радостью все гоняем. Так, может кто поковыряться хочет.
Последний раз редактировалось ACMECorp; 26.11.2009 в 16:27.
vicviper,
Суть в том, что UMDGen не видит скрытых файлов в образе, по этому, посчитав "невидимое" место, пустышкой, урезает образ до желаемых ему размеров и... и удаляет файлы игры. Именно по этому, при любом воздействии на образ, он тут же "худеет" и становится неработоспособным.
Только "Namco" так делает? Или же есть еще игры с невидимым местом?
Репутация: 177 
(весьма и весьма положительная личность)
lex3a,
Как я понимаю, это первая игра данного типа.
Вся она такая прямо видимая-невидимая, защита у ней такая разтакая, прошивку проверяет и на лицензионность и на версию. Вся такая из себя)
Может кто-то из данной ветки знает побольше моего...
Последний раз редактировалось ACMECorp; 26.11.2009 в 21:17.