Здесь есть о чем поговорить, так что давайте начнем с DVD-привода, хорошо?
Защита от копирования DVD
Эта область особенно беспокоила игровые студии, так как эта консоль использовала очень доступный формат дисков для распространения игр. Таким образом, риск пиратства был высок.

Этот экран ошибки мог появиться если привод неисправен... или вставлена пиратская копия.
Когда ОС загружает игру, она делает это, отправляя специальные команды приводу DVD. Команды, используемые для чтения содержимого игры, работают совершенно иначе, чем стандартные команды DVD (например, для чтения DVD-фильма). Оказывается, авторизованные игры содержат недосягаемый 'файлообразующий файл' во внутренней части диска, который индексирует файловую систему по имени, позиции и размеру. Когда DVD-привод запрашивает чтение игрового диска, он всегда навигирует по диску, используя файлообразующий файл, что делает невозможным чтение пиратской копии игры, которая не может включать этот файлообразующий файл.
Это дополнялось системой региональной блокировки, которая предотвращала работу импортных игр на консоли из другого региона.
Обход защиты
Объяснив наиболее критичные части этой консоли, давайте рассмотрим несколько методов, которые были обнаружены (и коммерциализированы) для обхода защитных механизмов.
Атака на DVD-привод
Как только PS2 поступила в магазины, появилось множество продуктов третьих сторон, обещающих 'разблокировать' DVD-привод. Не поддерживая Homebrew (кроме Linux решения), пиратство стало главным бенефициаром.
Чиповка
Как и с любой другой консолью своего поколения (и предыдущих поколений) используя дисковую систему, рано или поздно компании третьих сторон обратной инженериирании DVD подсистемы. Цель здесь заключалась в нахождении эксплоита, который мог бы заставить драйвер навигировать по файловой системе без необходимости использования недоступного файла карты.
Это в конечном итоге материализовалось в виде мод-чипов, которые также снимали проверки защиты от копирования и ограничения по региону.
Читы
Вместе с мод-чипами, которые требовали навыков пайки для их установки, на рынке появились несанкционированные, но 'подлинные' диски. Эти диски патчили ядро, чтобы снять региональную защиту и использовать игровые чит-коды.
Самое главное, 'чит-диски' имели преимущество в том, что не требовали никакой модификации консоли. Думаю, лучший пример, который можно упомянуть, это CodeBreaker.
Замена дисков
Посреди последних достижений появился еще один трюк. На этот раз, эксплуатируя обработку поврежденных секторов. Swap Magic выглядел как еще один 'подлинный' диск, но его 'игра' заставляла DVD считывать несуществуемый исполнимый файл, находящийся в специально поврежденном секторе, полностью останавливая драйвер . Это окно возможностей позволило пользователям заменить диск на нелицензионный. Затем Swap Magic, еще загруженный в память, загружал основной исполняемый файл нового диска, загружая настоящую игру в конце. Все это происходит, пока привод все еще считает, что вставлен лицензионный диск.
Это не обязательно требует изменения консоли. Тем не менее, в зависимости от модели, внешнюю часть PS2 придется подделать, чтобы заблокировать датчики извлечения привода. В некоторых моделях частью пошагового руководства было размещение кусочков хлопка в определенных местах.
Отказ от мод-чипов
Со временем было собрано и распространено больше исследований об этой консоли. Следовательно, новые и более сложные открытия привели к новой волне разработок, которые больше не полагались на внешнее оборудование, по крайней мере в основном. Более того, пиратство уже не было главным фокусом. Вместо этого способность запускать программы третьих сторон без одобрения Sony (называется Homebrew) быстро стала одной из главных целей.
Переполнение независимости
PS2 хранит файл базы данных под названием TITLE.DB на MemoryCard, который содержит информацию, используемую для оптимизации эмуляции игр PS1 . Когда вставляется игра PS1, ОС извлекает файл базы данных и загружает весь файл в память по фиксированному адресу (первый фол). Парсер информации реализован с использованием strncpy(), функции на языке программирования C, которая копирует строки (цепочки символов) из одного места в другое.
Для тех, кто знаком с C, вы, наверное, догадались, о чем я говорю. Дело в том, что strncpy() не знает, какой длины строка, поэтому, если строка не завершается (путем добавления \0 в конец цепочки), копирование продолжается 'вечно' (с непредсказуемыми результатами!). К счастью, эта функция содержит необязательный параметр, который указывает максимальное количество байтов для копирования, защищая копирование от переполнения буфера. Как бы абсурдно это ни казалось, Sony не использовала этот параметр, хотя каждая запись в базе данных имеет фиксированный размер в 256 байт (второй фол).
При ближайшем рассмотрении в ОЗУ, оказывается, что файл TITLE.DB копируется рядом с сохраненным регистром, $ra, который указывает адрес возврата после завершения выполнения текущей функции (третье предупреждение), что приводит к эксплойту независимости : Создайте файл TITLE.DB с длинной строкой, встроите в него исполняемый файл и спроектируйте эту строку так, чтобы $ra был перезаписан и указывает на исполняемый файл. Если вам удастся загрузить этот файл на вашу Memory Card (через другой эксплойт или адаптер USB для ПК), у вас будет простой «загрузчик» Homebrew.
Это открытие было опубликовано в 2003 году. Следовательно, с выпуском slim-версии, Sony добавила новую версию BIOS ROM, исправляющую этот эксплойт. Достаточно любопытно, что это не была последняя ошибка, которая обнажила неуклюжий код.
Эксплойт с подписью
В ноябре 2007 года хакерская группа начала продавать Memor32 , еще одну обычную карту памяти от третьей стороны, за исключением того, что по какой-то причине она содержала FPGA и USB-порт. Только после появления прошивки под названием Memento на интернет-форумах стало ясно, для чего на самом деле предназначен Memor32: запускать неавторизованные исполняемые файлы с карты памяти, как и эксплойт Independence.
Реализация Memento основывалась на уязвимости в проверке подписи DVD-плеера. Было обнаружено, что, хотя двоичные файлы должны быть подписаны с помощью ключей Sony, целостность двоичного файла не проверяется. Таким образом, любой мог заменить исполняемый код чем-то другим (если это помещается в то же пространство), и операционная система с радостью его исполняла бы. Прошивка Memento использовала этот эксплойт, чтобы замаскировать свою нагрузку в DVD-плеере и включала несколько утилит, которые позволяли пользователям загружать игры (либо с дисковода, либо с HDD).
Однако популярность Memor32 и Memento вскоре снизилась после появления бесплатной (и первоначально с открытым исходным кодом) альтернативы: FreeMCBoot.
Универсальное решение
Как только Memento было разобрано, в интернете появилась альтернатива, не требующая Memor32. FreeMCBoot использовал ту же уязвимость, за исключением того, что его можно было установить на любую карту памяти MagicGate. Единственным недостатком было то, что для загрузки установщика все еще требовался другой эксплойт (например, замена диска).
Что интересно, интерфейс пользователя FreeMCBoot заимствует элементы из OSDSYS, предоставляя знакомое меню для запуска других программ Homebrew. Он также патчит Kernel для добавления API для доступа к устройствам хранения данных в портах USB 1.1, что многие приложения homebrew используют для поиска дополнительных файлов.
Кроме того, установщик предлагает два варианта: установить только необходимые файлы для текущей консоли или установить глобальную настройку для всех вариантов PS2. Любопытно, но последний вариант был сложен для выполнения . Изначально установщик изменял таблицу разделов карты памяти, чтобы избежать нехватки места, что не было особенно безопасным.
Как это ни странно, в 2011 году система безопасности PlayStation 3 была скомпрометирована, раскрывая множество секретов. Среди прочего, была раскрыта коллекция ключей MagicGate, глобально используемых для обратной совместимости с PS2. С тех пор больше не было необходимости прибегать к ограниченному трюку с подписью двоичных файлов DVD для создания исполняемых файлов PS2. Таким образом, начиная с версии 1.8b, FreeMCBoot сохраняет свою позицию как самый безопасный и популярный метод запуска любого типа homebrew на PlayStation 2.
Дальнейшие разработки
Как только возможность запуска Homebrew стала более доступной, работа продолжилась в виде доработки предыдущих эксплойтов и разработки приложений Homebrew. Некоторые из последних в конечном итоге способствовали пиратским действиям, но также расширили ограниченные возможности операционной системы (например, предоставляя патчи для игр), в конечном итоге это зависело от намерений пользователей.
Вот несколько примечательных примеров разработок, связанных с homebrew:
- FreeHDBoot: Вариант FreeMCBoot, который вместо этого устанавливается на HDD, откуда система также пытается загрузиться.
- ps2sdk от группы ps2dev : Фактический неофициальный SDK для написания homebrew для PS2 без риска нарушения авторских прав. Проект существует с 2000 года, когда он существовал только в виде отдельных библиотек для доступа к конкретным компонентам , а со временем был объединен в единый пакет для пользы разработчиков homebrew.
- LaunchELF от нескольких авторов : Файловый менеджер с дополнительными утилитами. Он был продолжен как 'uLaunchELF', а затем как 'wLaunchELF'.
- Open USB Loader (OPL) от нескольких авторов : Позволяет загружать образы дисков из разных источников (HDD, USB, i.Link и даже SMB и NMB через Ethernet) с возможностью применения патчей.
- ESR от ffgriever : Изначально назывался 'Vast CDVDV', это приложение, которое обманывает всю систему (включая привод DVD), чтобы запустить записанную копию игры без аппаратных модификаций. Оригинальное содержимое игры должно быть пропатчено, чтобы замаскировать себя как DVD-фильм (чтобы привод DVD не отклонил его), в то время как ESR берет под контроль Emotion Engine и IOP для перенаправления выполнения к фактической игре.
В последующие годы будут обнаружены новые уязвимости:
- Fortuna от krat0s : Альтернативный Homebrew-лаунчер, выпущенный в 2019 году, который использует совершенно другой эксплойт. На этот раз, это переполнение буфера в парсере значков менеджера сохранений (часть
OSDSYS) . Главное преимущество — совместимость с поздними моделями PS2, которые убрали поддержку внешних обновленийOSDSYS(следовательно, несовместимость с FreeMCBoot). - OpenTuna от alexparrado : Опенсорсная альтернатива Fortuna, возникшая в результате реверс-инжиниринга последнего.
- FreeDVDBoot от cturt : Новая уязвимость, опубликованная в 2020 году. Она представляет собой новое переполнение буфера в DVD-плеере, которое можно использовать для выполнения произвольного кода. Пользователям нужно лишь записать DVD с FreeDVDBoot, чтобы выполнить любой предназначенный для них бинарный файл, включая установщик FreeMCBoot или даже ESR (Sony очень повезло, что это не было обнаружено намного раньше! как это не случилось с другими).