Содержание

FreePSXBoot

Эксплойт (софтмод), позволяющий выполнить на PlayStation произвольный код, используя только специально отформатированую карту памяти, без аппаратной модификации консоли.

https://github.com/brad-lin/FreePSXBoot

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

При помощи FreePSXBoot обычно запускается утилита Unirom, но может быть выполнен любой зарузочный образ, который уместится в объем карты памяти (128 KiB) вместе с данными самого FreePSXBoot. Для максимальной совместимости с разными версиями BIOS размер образа не должен превышать 64 KiB.

Описание

Эксплойт использует неочевидный баг в функции BIOS ReadMemCardDirectory (0xbfc08b3c в ROM SCPH-9002). Эта функция отвечает за чтение структуры каталога карты памяти.

Оболочка (пользовательский интерфейс BIOS, который загружается, если в консоль не вставлен диск) имеет функцию управления картами памяти - копирования и удаления сохранений. Когда она читает индекс файловой системы карты, она копирует первые 32 байта каждой каталожной записи в память и проверяет данные на предмет ошибок. Функция не проверяет границы данных в записи: она предполагает, что размер файла и индекс следующего блока в каждой записи корректны. Манипулируя этими индексами, можно заставить BIOS читать с карты произвольные данные. FreePSXBoot формирует запись так, чтобы при чтении в BIOS произошло переполнение буфера. В результате управление перехватывает загруженный в память 128-байтовый код из буфера (stage 1), который считывает с карты основной загрузчик (stage 2), а тот, в свою очередь, - полезную нагрузку, добавленную при создании образа.

Builder

Программа, которая используется для сборки образов карты памяти. Пример вызова:

builder -bios 4.4 -slot 2 -in program.exe -out card.mcd

В параметре -bios нужно указать версию BIOS целевой консоли. В параметре -slot - слот карты памяти, 1 или 2. Рекомендуется использовать слот 2.

Отформатировать карту памяти можно при помощи Unirom. Внимание! Это сделает карту нечитаемой для игр и оболочки BIOS! Настоятельно рекомендуется вместо настоящей карты памяти использовать устройство наподобие PSxMemCard, которое хранит данные на microSD.