Запуск PSP Homebrew на PS3
Mercyful, прошу прощения за оффтоп, но не могли бы Вы поинтересоваться у tpu, возможно ли реализовать следующую теорию:
1. Из eboot.pbp извлекается iso-образ, в нём делается небольшая правка - подменяется ~25кбайт данных (заменяются только данные, структура образа никоим образом не затрагивается) 2. На основе такой правки в eboot.pbp заменяется конкретный участок с этими данными. (без полной пересборки eboot.pbp; без нарушения структуры оригинала) Заранее спасибо. :) |
BlackDaemon,
Заканчивай уже с "вы" и "уважаемым" ;) Я разве что гуглом чуть лучше пользуюсь. Что касается твоего вопроса, то очень сомневаюсь, что сие возможно. При условии, что я правильно тебя понял. Имхо, проще своего рода loader использовать, который прямо в памяти процесса будет ресурсы/данные на нужные тебе подменять. Такое уже проворачивали с локализацией Hatsune Miku Project Diva и с чем-то ещё. |
Mercyful, ок, заканчиваю. :D
Жаль, конечно, что это маловероятно. Задача этой теории была пробить защиту в эмуляторе PSP на PS3, т.к. к эксплойтам в PSP играх у него похоже иммунитет - попробовал сегодня на свежем релизе к Apache Overkill, получил примерно такой же лог. Вообщем, игрался я с чем было - две Minis "A Space Shooter For 2 Bucks!" и "Hysteria Project", PSP с оф. прошивкой 6.60. В обоих сидит модуль libpsmfplayer.prx, я попросил разработчика Jpcsp сделать простенький загрузчик, который вызывает sceKernelLoadExec с путём disc0:/PSP_GAME/SYSDIR/UPDATE/EBOOT.BIN. Hex редактором заменил модуль и добавил сэмпл куба в UPDATE/EBOOT.BIN. Образ через fake_np подписал и запустил на оф. прошивке 6.60 - куб завёлся. :) Больше всего удивило то, что модуль в декриптованом виде запустился - до этого пробовал подменять psmf/libfont - с ними подобное не проходило. Собственно, сэмпл. |
Цитата:
Цитата:
По моему эту папку UPDATE можно вообще удалить без всяких последствий. |
ErikPshat, загрузчик писался для целей тестирования, не более. :) Первые трудности, с которыми я столкнулся при запуске на оф. прошивке - у функций sceKernelLoadModule/sceKernelLoadExec висит ограничение на местоположение файла, т.е. c ms0:/ на оф. прошивке ими запустить ничего нельзя, пришлось придумывать как приспособиться под disc0:/ - учитывая, что в PSN релизах папка update всегда "пустует" (забита нулями). :D
|
Что-то я тоже в ступор впал. многабукаф!
|
BlackDaemon, а, понел. Ты решил лоадер в несколько байт (~25кбайт) подпихнуть вместо обновления :)
|
ErikPshat, чуть-чуть не так, посмотрите сэмпл. :) Схема запуска такая:
1. SYSDIR/EBOOT.BIN вызывает через sceKernelLoadModule+sceKernelStartModule USRDIR/Module/psmfplayer.prx 2. он и заменяется самопальным лоадером (3-й пункт необязательный, но 25 кбайт на всё-про-всё маловато, потому в данном случае я подменил его лоадером) 3. который в свою очередь загружает содержимое (которое также подверглось замене на сэмпл куба) из SYSDIR/UPDATE/EBOOT.BIN |
:scratch_one-s_head:
|
BlackDaemon,
Я с прометеем подобное делал, чтобы игру с мультизагрузчиком (YsI&II Cronicles) на 5.00 запустить )) связка была жестокая... Ты лучше скажи, к чему это всё, потому как конечная цель непонятна. Понятно лишь одно: ты где-то подменяешь путь загрузки, где-то её цель, дабы запустить нечто размером 25кб. Но подменить в EBOOT.PBP сорано не получицо, ибо контент там зашифрован, а инлайн патчингом на PSP не припомню, чтобы кто-то занимался. Да и инлайном одним не обойдётся, ибо тебе не пару десятков байт впихнуть туда нужно. |
Mercyful, конечная цель - надурить эмулятор PSP на PS3 и запустить через него хомбрю. :) Видимо, придётся ждать когда окончательно разберутся с MINIS.EDAT и ISO.BIN.EDAT (по крайней мере декриптовать их уже можно).
|
Гмм...я тут вспомнил про кое-что - в эмуляторе (по адресу dev_flash:/pspemu/flash0/usermodule) лежит три модуля в декриптованом виде - libfont.prx, libheap.prx и libpsmfplayer.prx. На попытки подменить модули чем попало при запуске чёрный экран или чёрный экран + exception, т.е. реакция на подмену есть. :D Ссылка на эти модули, может есть какой-нибудь шанс заэксплойтить эмулятор через них?
gid15 (разработчик Jpcsp) отписался, что модули аналогичные тем, которые на PSP и Kernel вызовов не используют. :crazy: Похоже, эта затея бессмысленна. |
Добрался я таки до запуска PSP игр. :) fake_np работает, но моя теория к сожалению не прокатила - судя по всему в эмуляторе присутствует "особый" вид защиты - все ELF/PRX должны быть подписаны, таким образом все старые игры, в которых модули и/или внешние исполняемые файлы в декриптованом виде неработают. :(
|
Цитата:
|
ErikPshat, так дело в том, что пробовал уже :crazy:
Цитата:
|
Цитата:
А PRX-ы тоже зашифровал? Цитата:
Ну если так, тогда дело не в шифровке. |
Цитата:
Собственно БАЗА уже зачата :) |
Что-то подписывание у меня хромает. Значит, беру Cube Sample, подписываю через seboot (тег 0xd91609f0), заменяю в образе sysdir\eboot.bin и через fake_np делаю eboot.pbp. На виртуальной 6.60 PRO-C запускается без проблем, но как только сбрасываю на оф. 6.60 - после запуска вылетает с ошибкой 0x80020148 (Bookr на оф. прошивке вылетает также).:crazy:
|
Цитата:
|
Yoti, прошу прощения, но на данный вопрос я ответить затрудняюсь - у меня набор знаний пользователя, так сказать. :D Ради интереса пробовал ещё вытащить из PRO-C апдейтера data.psp и засунуть в образ - вылезает та же ошибка.:crazy: Также пробовал подписывать HelloWorld - при запуске чёрный экран и PSP намертво зависает.:dash:
В общем, меня интересует любое хомбрю, которое способно запуститься на оф. прошивке из disc0:/psp_game/sysdir/eboot.bin с помощью fake_np. Заранее спасибо.thank you |
Цитата:
Хомки подписанные любые идут на официальной прошивке. Любые - это те, которые не используют кернел. Которые используют кернел, я вот не понимаю пока, почему они не идут, даже подписанные. |
ErikPshat, "Это несерьёзно!" (с) :D Вот, посмотрите сами. :)
|
Вложений: 2
BlackDaemon, да, вижу подписаны :) но что-то с ними не так.
Цитата:
Что интересно, кубик с тегами D916xxF0, зашифрованными через Seboot не хочет запускаться даже на кастоме (точно не помню, но на официале точно не запускается) А вот зашифрованный под Astonia_Story (меньше хедера не нашёл) отлично идёт на официалке. Короче, Seboot имеет в себе 12 встроенных тегов, под которые умеет подписывать. И мне кажется, что он вообще не рабочий, т.е. не правильно подписывает, либо с этими тегами на официалке хомки не работают. Прилагаю скрипт в архиве во вложении [кодировка "Кириллица DOS (cp866)"] Вложение 8948Ну и сам подписанный кубик: Скачать |
Вложений: 1
Цитата:
Там как раз идёт тег 0xD9160BF0. Взял от него заголовок и подписал им Кубик через PRXEncrypter. Запустился на официальной прошивке после прогона через FakeNP: СКАЧАТЬ Так что дело не совсем в этом теге, хотя без FakeNP просто так он не запустился, как в предыдущем посте. Скорее всего Seboot не правильно подписывает файлы. P.S. Оставлю ссылку на Minis, чтобы потом не забыть, думаю можно надыбать ещё хороших хедеров. |
Вложений: 1
ErikPshat, что-то здесь идёт не так. :D Вытащил из вашего подписанного куба data.psp и засунул его в образ как eboot.bin, запускаю образ на кастоме - ошибка 0x80020148. Решил провести "обратный" эксперимент - достал из образа с Killzone: Liberation eboot.bin, переименовал его в data.psp, засунул в eboot.pbp и запустил на кастоме. Догадайтесь, что случилось дальше? :D
Edit: что-то я запоздал с постом. Пойду проверять новый куб. :) |
BlackDaemon, тут я думаю дело в тегах. Нельзя один вид тега использовать как другой вид.
1. Например куб я подписал тегом Astonia_Story: 0xADF305F0 /* scrambler 0x60, Demo Game keys DATA.PSP */ То есть, этим тегом подписывают демки DATA.PSP, которые исключительно идут в EBOOT.PBP, поэтому в этом виде запускается без плясок с бубном. Этим тегом подписаны все установщики кастомных прошивок и FastRecovery. А если этот тег положить в образ ISO и пусть даже подписать через FakeNP, то он не запустится. 2. Второй куб был подписан тегом от игры Tiny Hawk Minis: 0xD9160BF0 /* scrambler 0x5D, Game EBOOT.BIN keys */ То есть, этим тегом подписывают игры в EBOOT.BIN, которые идут в образах дисков ISO (UMD). Но хотя Минисы идут в EBOOT.PBP изначально, однако они по сути и есть образы дисков UMD, подписанные способом NP. Поэтому с этим тегом будет работать только через FakeNP. И потом, для каждого вида тегов существуют разные виды PARAM.SFO А подпись SEBOOT по ходу совсем не работает. |
|
Цитата:
Тебе нужен "PrxEncrypter for Windows" с исходниками. Собственно уже в готовом экзешнике есть 3 готовых заголовка (от Astonia_Story2 300kb, и ушё парочка побольше). Так что можно шифровать PRX-ы с этими заголовками. Но если понадобится зашифровать файлы прошивки с другими тегами или под особый размер заголовка, то в исходном файле main.c просто меняешь Header и Kirk на свои, компилишь новый PrxEncrypter через тот же PSPSDK и шифруешь файлы со своими заголовками. Пока тебе не могу дать сборку, т.к. она приватная. Если Yoti разрешит, тогда выложу в паблик. Но если хорошенько у Гугля попросить, то можно и так найти ;) |
ErikPshat, завелась из Cube_Sample_FakeNP.zip, правда, чтобы запустить на PS3 пришлось доставать eboot.bin, засовывать его в другой образ и пересобирать через fake_np (из-за чего так - не знаю :D ).
|
BlackDaemon, а мне кубик понравился, красиво смотрится на PSP :)
|
ErikPshat, перепробовал несколько вариаций PrxEncrypter - из этой темы (залоговок tifpsp), другой - из вложений в теме по подписыванию, третий с wololo, четвёртый (с заголовком от Astonia_Story мне собрал разработчик Jpcsp). Во всех случаях происходит одно и тоже - подписываю ваш декриптованый куб из "Cube Sample CFW (not signed)" и заменяю eboot.bin в образе - при запуске на кастоме вылезает проклятая 0x80020148. :dash: Во втором случае (по гайду) пробовал использовать в качестве "доноров" eboot'ы от Brainpipe, Fieldrunners и ваш рабочий закриптованый куб. :crazy:
|
Вложений: 1
BlackDaemon, эмм, если подписываешь от Astonia_Story (вроде правильно называется Astonishia_Story_2), то прогонять через NP не надо. Просто собираешь подписанный prx (DATA.PSP) в EBOOT.PBP с помощью PBP Unpacker.
Таким образом собираются все установщики кастомных прошивок, Fast Recovery и т.п. Они обязаны запускаться на официальных прошивках. Если подписываешь тегом от игры UMD (EBOOT.BIN), тогда нужно собрать в образ NP.ISO и прогонять через FakeNP. Короче, вот мой PRXEncrypter, пробуй им. Я скомпилировал 2 вида экзешника под 2 хедера, с помощью которых делал 2 предыдущих кубика.
|
Цитата:
|
ErikPshat, огромное спасибо, eboot.bin'ы совпали побайтово. :) Сейчас буду пробовать другие хомбрю запускать. :D
|
Цитата:
Кстати, тот kirk.buff тоже надо бы выложить. Опять же классика работает безупречно. |
Такс, результаты первых тестов.
прошли fake_np: - ProShell - запускается на оф. прошивке, но на PS3 текст не выводится (сначала подумал, что не работает, а вот оно что!) - 2dstudio.prx - запускается на оф. прошивке, на пс3 текста нет скриншот дошли до этапа с fake_np: - lines.pbp - работает под кастомом, на оф. прошивке 0x80020148 - logic.pbp - см. выше - skinning.pbp - см. выше после подписывания ELF неработают: PSPong 0.1.pbp - подписал и засунул в образ, при запуске на кастоме чёрный экран, приставка зависает. basic.pbp (из SDK 2.0) - ведёт себя аналогично dragon.pbp (из SDK 2.0) - ведёт себя аналогично |
ErikPshat, как kirkHeader сгенерировать? Хочу тоже потестить, но 250KB лимит... :(
|
ErikPshat, с вашего разрешения - могу ли я перезалить PrxEncrypter для англоязычных "коллег", так сказать? Авторство, разумеется, укажу. :D
|
BlackDaemon, ну ты реально что-то не так делаешь, либо PARAM.SFO не такие подсовываешь. И чую все перечисленные хомки какие-то старые. Там идёт скорее сырой ELF статический. Как компилировать я писал выше.
У меня любые хомки подписанные идут без всяких бубнов на PSP. Но не идут те, у которых прилагаются сторонние модули PRX, особенно с кернел-правами. Сторонние ресурсы идут без проблем. Может там на PS3 с эмулятором PSP не совсем проработано. Цитата:
|
Гмм, вытащите, пожалуйста, подпись из Brainpipe, там размер eboot.bin 10 мб, т.е. хватит на всё-про-всё. :D
|
Текущее время: 00:27. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.