Запуск игр PSP на PS Vita

Взлом PSVita — первые шаги, эмулятор PSP

Запуск игр PSP на PS Vita

Здравствуйте, меня зовут Александр. Немного о себе. Мне 16 лет, заканчиваю 11 класс, живу в городе, который очень далёк от столицы. Уже 2,5 года занимаюсь программированием по части игровых консолей Sony. Автор многих плагинов и программ, а также, с недавнего времени, прошивок.

Я думаю, многие помнят старушку PSP, которая радовала наш глаз с 2005 года. Многие, будучи детьми, очень завидовали сверстникам с состоятельными родителями, которые могли порадовать своё чадо таким подарком. Но время проходит, технологии совершенствуются, и PSP уже не та.

Примерно год назад Sony запустила новый проект под названием PSVita, также известная как NGP (Next Generation Portable) и PSP2. Последним термином не брезгует и сама компания, применяя его в качестве кодового названия. Консоль получила хорошие технические характеристики и уникальные возможности.

Многие из хакеров поприща PSP кинули свои силы на взлом защиты PSVita.

Имея массивный опыт в области PSP большинство взглядов сцены обратилось именно в сторону эмулятора PSP, устройство которого практически идентично внутреннему устройству самой PSP.

Шаг 1 — Usermode доступ в эмуляторе PSP

Первые и текущие usermode эксплоиты эмулятора PSP на PSVita, позволяющие запустить неподписанный код были построены на уязвимостях переполнения буфера. Начальный код и «вода», которая переливалась за буфер находились в теле сохранения игры, купленной за кровные деньги в PS Store.

Де/криптовка сохранений и поиск уязвимостей на этом поприще стал возможен благодаря совместимости данных сохранений с PSP. Расскажу подробнее. Что такое уязвимость переполнения буфера знает большинство, от специалистов по компьютерной безопасности до обычных людей, изучавших любой ассемблер.

Но я постараюсь объяснить это со стороны своего взгляда. Игра считывает сохранение, парсит его и записывает данные в структуру. Бывает, что данные копируются функцией strcpy или же выступают в качестве аргумента строки в функции sprintf. Эти функции не являются безопасными, т.к.

они не контролируют размер выходного буфера, который выделяется из стека. Допустим в игре есть код.

// структура данных сохраненияstruct { char username[64]; int other_data[256];}SaveData; ReadSavedata(&SaveData); // чтение данных сохранения // целевой буферchar username_backup[64]; // уязвимый участокsprintf(username_backup, “%s”, username); Я не зря оставил участок other_data.

Я хотел показать, что в сохранении есть ещё место кроме 64 байт для имени игрока. Если мы удлиним имя игрока до 128 символов, то уязвимая функция, не обращая на размер буфера, запишет данные по его указателю. 128-64=64. То есть буфер будет переполнен на 64 символа. А, так как буфер выделен из стека, то произвольные данные из строки заполнят служебные записи кода. Существуют 3 разновидности эксплуатации инструкций.

1. Регистр $ra (инструкция jr)

Если в последующем данные из стека будут восстановлены в регистр $ra (регистр возвращения адреса в MIPS), то мы сможем выполнить код с произвольного адреса. Нам сослужит службу инструкция «jr $ra», которая предназначена для возвращения кода на исходный участок из подфункции. Конечно же, мы положим свой код в свободное место в сохранении, осталось ещё 64 байта, которых предостаточно.

2. Аргумент инструкции jalr

Если данные будут восстановлены в регистр, который является аргументом инструкции jalr, то мы также сможем перенаправить код аналогично первому случаю. Отличие лишь в том, что в этом случае вам придётся повозиться с исследованием кода, когда же в первом переполнение буфера вы заметите сразу («Exception — Bus error (instr)» в дебаггере).

3. Аргументы sw

Если мы возымеем контроль над аргументами инструкции sw (store word), то мы сможем подставить себе «под ножку» любую инструкцию, в том числе и перенаправление. Все эти манипуляции проводятся на PSP с помощью дебаггера (psplink), далее сохранение криптуется и подаётся на завтрак PSVita с заведомо купленной уязвимой игрой.

В доказательство предоставлю скриншот Hello World, запущенного с помощью эксплоита в данных сохранения. При наличии только usermode эксплоита возможно портирование загрузчика usermode софта (Vita Half-Byte Loader).

У него куча ограничений и багов, но, тем не менее, это не мешает пользователям наслаждаться лишь эмуляторами первых консолей (Dendy, Atari, Sega, GameBoy Advance).

Шаг 2 — Kernel доступ в эмуляторе PSP

Следующий шаг — kernel доступ. При получении возможности вносить правки в kernel память, мы можем сделать с системой всё что угодно.

Это и сделал известный хакер и разработчик Total_Noob, написав и выпустив CEF (Custom Emulator Firmware) на основе утекшего kernel эксплоита от человека, который пожелал остаться неизвестным. После прошивки 1.81 был длительный кризис в плане взлома.

Новый эксплоит никто не торопился выпускать, тогда я решил выпустить свой. И вот вы можете использовать CEF на прошивках выше 1.81 вплоть до 2.02. Сейчас я постараюсь объяснить его концепцию. Я думаю, она многим знакома.

1. Read-only kernel эксплоит

Насколько вам известно, имея только user права, записать или даже прочитать kernel память нельзя. Попытки этого ограничиваются эксепшном «ломящегося» модуля и последующим крешем всей системы. Создаётся впечатление, будто и нет её, этой kernel памяти.

Но мы то знаем, что она есть и даже знаем её адрес — 0x88000000. Но с чего же нам начать? У нас нет модулей прошивки, а прочитать kernel память чтобы получить их мы не можем!

Для этого нам нужно найти read-only kernel эксплоит. Его принцип прост.

Мы должны использовать функцию в kernel модуле, которая может записать в указатель или вернуть из функции значение участка кода, адрес которого можно задать аргументом самой функции. Для исследований можно использовать модули прошивки PSP (рекомендую 6.60).

Ведь прошивка эмулятора PSP во многих местах просто идентична прошивке PSP, как я уже говорил выше. Соответственно, дыры остались.

Пример «дырявой» функции (пример без мусора и служебных инструкций). sceKernelReadOnlyKxploit: move $s0, $a0 lw $v0, 0($s0) Регистр $a0 является первым аргументом функции, значение которого потом перемещается в регистр $s0. Регистр $s0 в свою очередь есть второй аргумент для инструкции lw, он задаёт адрес. Первым аргументом lw является регистр $v0, который возвращает значение операции return (в Си). Инструкция lw это load word — загрузка четырёхбайтного слова (его адрес это значение второго аргумента) в регистр (первый аргумент). Осмыслив абзац выше, мы можем сделать заключение, что данная функция вернёт значение четырёхбайтного слова по адресу, заданному в первом аргументе. Эксплоит для данной функции будет выглядеть так. u32 *target = (void *)0x08A00000;u32 i;for(i = 0; i

Источник: https://habr.com/post/167985/

Запуск игр PSP на PS Vita. Эмулятор или полноценная поддержка?

Запуск игр PSP на PS Vita

В свое время портативная консоль PlayStation Portable (PSP) пользовалась небывалой популярностью среди любителей мобильного гейминга. Наверное, у каждого поклонника игр в коллекции была такая приставка.

Игры, не уступающие по качеству проектам, сделанным для PS2, можно было запустить на небольшом полностью автономном устройстве.

PSP и PS Vita

Прогресс не стоит на месте, поэтому PSP со временем начала морально устаревать. В связи с этим, выход «портативки» следующего поколения был лишь вопросом времени.

В 2013 году компания Sony объявила о старте продаж новой PS Vita, которая стала последователем той самой легендарной PSP.

Общество разделилось на 2 лагеря – тех, кто вовсю критиковал консоль за малое количество достойных игр, и тех, кто радовался обновлению линейки портативных консолей и наслаждался достаточным количеством пусть и не самых «топовых», но разнообразных игр.

Sony поняла, что игры для PSP важны ее пользователям, поэтому понемногу начала портировать их на новую консоль. Некоторые проекты были полным «ремастером», адаптированным под PS Vita, а некоторые запускались в специальной оболочке – эмуляторе.

Разумеется, за контент нужно было платить, но так было лишь до определенного времени. С выходом полноценного взлома PS Vita, все игры от PSP на PS Vita стали запускаться абсолютно бесплатно.

Среди популярных запросов в Google или Яндекс часто встречается фраза «игры PSP на PSP Vita», где «PSP Vita» — неправильное название консоли. Полное название — PlayStation Vita (PS Vita). Приставка Portable в названии консоли — не используется.

Как запустить игры PSP на PS Vita

Есть только 2 способа запуска старых игра на PS Vita: покупка в официальном магазине PS Store или установка пиратского софта.

В первом случае, вам нужно зайти в PS Store и скачать специальный эмулятор, а потом купить интересующие вас игры в разделе PSP®.

Учтите, что некоторых игр попросту не будет в списке доступных для скачивания, так как оптимизация занимает много времени и сил у разработчиков. Некоторые компании, выпускавшие игры для PSP, уже давно не работают, поэтому Sony не может получить повторную сертификацию продукта для его дальнейшей перепродажи в цифровом магазине.

Второй способ – перепрошивка консоли – позволяет установить специальный эмулятор, который обеспечивает запуск игр PSP на PS Vita.

Сразу после установки пиратского софта гарантия на консоль аннулируется. Подобные манипуляции выполняются исключительно опытными пользователями. Если нарушить последовательность действий или допустить ошибку, можно лишиться консоли.

Прошить приставку можно самостоятельно, найдя инструкцию в интернете или обратиться в специальную мастерскую. Второй вариант исключает все риски, которые может допустить неопытный пользователь.

В зависимости от версии официальной прошивки, может меняться алгоритм действий при установке, копировании и запуске эмулятора PSP для PS Vita.

В наших мастерских производится прошивка PS Vita . Вы можете смело довериться многолетнему опыту наших специалистов. Звоните и записывайтесь!

Есть 2 способа, как установить игры PSP на Vita:

  1. Воспользоваться FTP-клиентом, установленным на ПК (связь настраивается по Wi-Fi). Все что нужно сделать – скопировать образ игры с разрешением .iso в папку ISO, созданную в памяти консоли.
  2. Установить программу OpenCMA на компьютер, с помощью которой данные приложения записываются в /PSP/SAVEDATA, а потом вручную переносятся в нужную папку на PS Vita.

В зависимости от прошивки будут меняться названия папок, в которые нужно помещать игры. Уточняйте данные при скачивании образа или у мастеров, которые устанавливали взлом.

Названия игр должны иметь не более 8 символов и состоять только из букв верхнего регистра и цифр.

В данной статье мы лишь кратко описали, как установить игры PSP на PS Vita. Полную инструкцию нужно искать для конкретной прошивки. Если вы не хотите рисковать, обратитесь в мастерскую.

Вывод

Из текста мы поняли, что полной поддержки игр от PSP на PS Vita практически нет и вряд ли она когда-то появится.

Старые игры запускаются через эмулятор, причем любым из способов – хоть платным, хоть бесплатным. Есть лишь небольшое количество полностью адаптированных игр, но вряд ли это можно назвать полноценной поддержкой.

Источник: https://proshivka.pro/zapusk-igr-psp-na-ps-vita-emulyator-ili-polnotsennaya-podderzhka/

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.