Репутация: 229 
(весьма и весьма положительная личность)
Запуск PSP Homebrew на PS3
Mercyful, прошу прощения за оффтоп, но не могли бы Вы поинтересоваться у tpu, возможно ли реализовать следующую теорию:
1. Из eboot.pbp извлекается iso-образ, в нём делается небольшая правка - подменяется ~25кбайт данных (заменяются только данные, структура образа никоим образом не затрагивается)
2. На основе такой правки в eboot.pbp заменяется конкретный участок с этими данными. (без полной пересборки eboot.pbp; без нарушения структуры оригинала)
Заранее спасибо.
Последний раз редактировалось Yoti; 31.03.2013 в 09:27.
BlackDaemon,
Заканчивай уже с "вы" и "уважаемым" Я разве что гуглом чуть лучше пользуюсь.
Что касается твоего вопроса, то очень сомневаюсь, что сие возможно. При условии, что я правильно тебя понял. Имхо, проще своего рода loader использовать, который прямо в памяти процесса будет ресурсы/данные на нужные тебе подменять. Такое уже проворачивали с локализацией Hatsune Miku Project Diva и с чем-то ещё.
Репутация: 229 
(весьма и весьма положительная личность)
Mercyful, ок, заканчиваю.
Жаль, конечно, что это маловероятно. Задача этой теории была пробить защиту в эмуляторе 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 - с ними подобное не проходило.
Репутация: 229 
(весьма и весьма положительная личность)
ErikPshat, загрузчик писался для целей тестирования, не более. Первые трудности, с которыми я столкнулся при запуске на оф. прошивке - у функций sceKernelLoadModule/sceKernelLoadExec висит ограничение на местоположение файла, т.е. c ms0:/ на оф. прошивке ими запустить ничего нельзя, пришлось придумывать как приспособиться под disc0:/ - учитывая, что в PSN релизах папка update всегда "пустует" (забита нулями).
Репутация: 229 
(весьма и весьма положительная личность)
Гмм...я тут вспомнил про кое-что - в эмуляторе (по адресу dev_flash:/pspemu/flash0/usermodule) лежит три модуля в декриптованом виде - libfont.prx, libheap.prx и libpsmfplayer.prx. На попытки подменить модули чем попало при запуске чёрный экран или чёрный экран + exception, т.е. реакция на подмену есть. Ссылка на эти модули, может есть какой-нибудь шанс заэксплойтить эмулятор через них?
gid15 (разработчик Jpcsp) отписался, что модули аналогичные тем, которые на PSP и Kernel вызовов не используют. Похоже, эта затея бессмысленна.
Последний раз редактировалось BlackDaemon; 04.04.2013 в 12:09.
Репутация: 229 
(весьма и весьма положительная личность)
Добрался я таки до запуска PSP игр. fake_np работает, но моя теория к сожалению не прокатила - судя по всему в эмуляторе присутствует "особый" вид защиты - все ELF/PRX должны быть подписаны, таким образом все старые игры, в которых модули и/или внешние исполняемые файлы в декриптованом виде неработают.
Репутация: 229 
(весьма и весьма положительная личность)
Что-то подписывание у меня хромает. Значит, беру Cube Sample, подписываю через seboot (тег 0xd91609f0), заменяю в образе sysdir\eboot.bin и через fake_np делаю eboot.pbp. На виртуальной 6.60 PRO-C запускается без проблем, но как только сбрасываю на оф. 6.60 - после запуска вылетает с ошибкой 0x80020148 (Bookr на оф. прошивке вылетает также).
Репутация: 229 
(весьма и весьма положительная личность)
Yoti, прошу прощения, но на данный вопрос я ответить затрудняюсь - у меня набор знаний пользователя, так сказать. Ради интереса пробовал ещё вытащить из PRO-C апдейтера data.psp и засунуть в образ - вылезает та же ошибка. Также пробовал подписывать HelloWorld - при запуске чёрный экран и PSP намертво зависает.
В общем, меня интересует любое хомбрю, которое способно запуститься на оф. прошивке из disc0:/psp_game/sysdir/eboot.bin с помощью fake_np. Заранее спасибо.
Также пробовал подписывать HelloWorld - при запуске чёрный экран и PSP намертво зависает.
Так ты подписываешь только сам образ. А внутри него сам модуль ELF HelloWorld ведь ты не подписал в офф ~PSP.
Хомки подписанные любые идут на официальной прошивке. Любые - это те, которые не используют кернел.
Которые используют кернел, я вот не понимаю пока, почему они не идут, даже подписанные.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
BlackDaemon, да, вижу подписаны но что-то с ними не так.
Сообщение от Yoti
Там разве не static elf был?
У кубика похоже статический, т.к. видно по ELF-файлу, что структура другая, там в начале нету секций релокации, а только одни нули. Такие статичные Эльфы действительно просто так после подписи не запустятся.
Чтобы этого избежать, то нужно при компиляции добавить в Makefile строчку: BUILD_PRX = 1
И возможно понадобится это: PSP_FW_VERSION = 371 (иначе оно при компиляции показывает FW = 150), хотя думаю это не важно.
Что интересно, кубик с тегами D916xxF0, зашифрованными через Seboot не хочет запускаться даже на кастоме (точно не помню, но на официале точно не запускается)
А вот зашифрованный под Astonia_Story (меньше хедера не нашёл) отлично идёт на официалке.
Короче, Seboot имеет в себе 12 встроенных тегов, под которые умеет подписывать. И мне кажется, что он вообще не рабочий, т.е. не правильно подписывает, либо с этими тегами на официалке хомки не работают.
Прилагаю скрипт в архиве во вложении [кодировка "Кириллица DOS (cp866)"]