PlayStation 3 Reference Tool (модель DECR-1000), которая
использовалась при разработке игр.
PlayStation 3 Reference Tool (модель DECR-1000), которая использовалась при разработке игр.

→ Часть 1: Cell
→ Часть 2: RSX
→ Часть 3: Три "ОС"
Часть 4: Борьба с пиратством

Примечание переводчика:

Эта часть является последней в данной серии переводов. По сути, осталось рассказать про игры (а точнее, их разработку и распространение) и борьбу с пиратством (для многих, пожалуй, самое интересное). Поэтому оба раздела были объединены в эту часть, чтобы весь переведенный материал не пропадал впустую.

Приятного чтения!

7. Игры

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

7.1. Экосистема разработки ПО

Поскольку эта консоль объединяет в себе технологии различных компаний, включая продукты, которые уже продаются на других рынках (например, GPU-линейка GeForce 7 от Nvidia для ПК), то разработчики были завалены множеством различных инструментов для разработки своего ПО. Это не означает, что разработка была легкой, но это было лучше того, что было во времена ассемблера.

Для программирования Cell IBM и Sony выпустили отдельные пакеты разработки. IBM делала пакеты для свободных сред, таких как Linux (и OtherOS). Инструменты Sony, напротив, явно нацелены на GameOS в качестве единственной среды выполнения.

IBM бесплатно распространяла пакет IBM Cell SDK [66]. Он включал в себя набор инструментов GCC, модифицированных для создания бинарных файлов для PPU и SPU. Набор позволял разрабатывать на C, C++, Fortran и языке ассемблера. Набор также являлся кросс-платформенным, позволяя компилировать код с другого оборудования (например, с ПК на x86). SDK также включал в себя библиотеки низкого уровня для облегчения математических SIMD-операций и управления SPU-PPU. Наконец, он включал в себя форк среды разработки Eclipse.

Чтобы облегчить сложность разработки Cell, IBM также разработала ещё один (но недолговечный) компилятор XLCL, который компилирует код OpenCL (вариант C/C++ для параллельных вычислений) для PPU и SPU. Он распространялся только через канал IBM Alphawork, означая, что компилятор оставался экспериментальным.

А что насчет Sony? По аналогии с SDK для PSP, она поставляла девкиты (во множестве вариантов с разными размерами и улучшениями) и пакет ПО, состоящий из компиляторов, библиотек и отладчиков, которые использовали Visual Studio 2008 (а позже и 2010) в качестве IDE [67].

Поскольку Sony поддерживала только PS3, их SDK включал такой же набор инструментов GCC, но дополненный тоннами библиотек для графических задач, обработки аудио и операций ввода-вывода. В случае с графикой для RSX, Sony предоставляла библиотеки GCM для создания низкоуровневых команд и psGL, построенная поверх GCM для обеспечения OpenGL ES API.

Для написания шейдеров Nvidia предоставляла Cg. Это компилятор шейдеров, который парсирует язык, похожий на GLSL (язык шейдеров, созданный для OpenGL).

7.1.1. Разработка без коммерческой лицензии

С появлением хоумбрю-приложений (работающих на GameOS, а не на OtherOS) были созданы новые наборы SDK с открытым исходным кодом. Сделано это для обхода зависимости от библиотек Sony, защищенных авторским правом, чтобы, следовательно, предотвратить потенциальные судебные разбирательства.

Одним из таких примеров является PSL1GHT SDK, который используется в сочетании с ps3toolchain [68]. Всё это обеспечивает полный набор средств разработки, готовый для создания легальных хоумбрю-приложений (хотя для этого требуется модифицированная / взломанная консоль с отключенной проверкой подписи).

В 2018 году я создал собственный набор на основе ps3toolchain, но распространяемый в виде Docker-контейнера [69]. Чтобы самому не компилировать ps3toolchain, можно было загрузить мою предварительно скомпилированную среду (сэкономив много времени на компиляцию). Контейнер также содержит множество инструментов, таких как компилятор Cg от Nvidia, чтобы смягчить проблемы с зависимостями, которые я обнаружил во время экспериментов с проектом на базе PSL1GHT. В итоге это был забавный эксперимент, который помог мне узнать больше о среде разработки.

7.1.2. Аутсорсинг разработки

Стоит отметить, что за это время возросла популярность своеобразной бизнес-модели: игровые движки.

Вместо того чтобы тратить время и деньги на разработку игры с нуля, почему бы не купить готовую кодовую базу от других компаний и не создать игру на её основе? Это то, что предполагали игровые студии, такие как Epic Games [70]. Помимо продажи популярных игр, таких как Unreal Tournament 3, студия лицензировала урезанную версию игры (без ассетов) другим разработчикам. Она была упакована и названа "Unreal Engine 3".

Вкратце, игровые движки берут на себя всё фундаментальные задачи, такие как физика, освещение и прочее. Разработчикам остается только добавить свой собственный контент (скрипты, текстуры, модели, звуки и прочий контент).

Лицензирование игровых движков - не новая бизнес-модель, но из-за сложной среды PS3 они в конечном итоге стали ещё одним привлекательным вариантом для разработки.

7.2. Носители информации

Теперь, когда мы закончили говорить о разработке игр, настало время рассмотреть их распространение. Итак, здесь описываются официальные механизмы распространения игр для PS3.

7.2.1. Диски Blu-ray

Пример розничной игры
Пример розничной игры

Новое поколение = новый носитель.

Ограничения формата DVD начинали становиться всё более очевидными, как для игровой индустрии (малый объем данных на диске), так и для киноиндустрии (формат видео 480i) [71]. Это был вопрос времени, когда Sony (или иной производитель) представит новый стандарт для замены предыдущего в новых устройствах.

Для своей новой консоли Sony выбрала диск формата Blu-ray.

Как понятно из названия, Blu-ray - это новый формат оптических дисков, обеспечивающий более высокую плотность хранения данных благодаря использованию синих светодиодов [72], в отличие от красных, используемых в DVD. Поскольку синий свет имеет меньшую длину волны, чем красный, то в одном и том же месте на диске может быть записано больше информации (питов и лендов[73]. В результате диски Blu-ray дают удивительно большую емкость (от 25 ГБ до 50 ГБ!), используя тот же пластиковый диск с теми же размерами, что и CD или DVD.

Формат данных Blu-ray удовлетворяет многим потребностям в различных отраслях: фильмы высокой четкости, управление цифровыми правами (DRM), региональная блокировка, новая файловая система и даже среда выполнения для Java-программ [74]. В случае игровой индустрии, розничные игры для PlayStation 3 распространялись на 25 ГБ или 50 ГБ дисках с защитой от копирования. Они считываются приводом 2x, развивающим скорость до 8.58 МБ/с [75], однако лазер PS3 также может считывать DVD (на скорости 8x) и CD (на скорости 24x) для воспроизведения старых игр и фильмов.

В то время как ранние игры для PS3 работают с диска, более поздние игры копировали часть своих ресурсов на жесткий диск для увеличения скорости чтения. Тем не менее, диск с игрой необходим всегда для запуска игры.

7.2.2. Онлайн-магазин

Скриншоты магазина PlayStation Store на PS3
Приложение PS Store в XMB
Приложение PS Store в XMB
Каталог игр, отображаемый при открытии магазина
Каталог игр, отображаемый при открытии магазина
Интерфейс поиска (который использует другую, не от XMB, клавиатуру)
Интерфейс поиска (который использует другую, не от XMB, клавиатуру)
Пример страницы игры (сопровождается предложениями,
которые работают только на других консолях…)
Пример страницы игры (сопровождается предложениями, которые работают только на других консолях…)

Одновременно с выпуском консоли Sony запустила собственный канал распространения под названием PlayStation Store, позволяющий игровым студиям продавать свои игры в цифровом виде, а пользователям приобретать их, не вставая с дивана. Для работы игр не требуется никакого физического носителя (кроме места на жестком диске), но владение цифровым продуктом было привязано к онлайн-аккаунту. Это вызвало беспокойство пользователей в марте 2021 года, когда Sony объявила [76] (а затем отменила [77]) закрытие этого магазина.

В своем цифровом магазине Sony также воспользовалась возможностью продавать оцифрованные версии игр для PS1, PS2 и PSP под названием PlayStation Classics. Они загружаются и устанавливаются аналогично играм для PS3, но для их работы используются эмуляторы, прилагаемые в цифровой версии. Фактически, игры PS2 используют один и тот же неускоренный программный эмулятор независимо от того, содержат ли модели PS3 чипсет PS2 [78] или нет! Полагаю, это заключительная глава для аппаратной эмуляции в PS3.

За кулисами PS Store - это просто веб-сайт, доступный только через приложение PS Store в XMB. На протяжении своего жизненного цикла пользовательский интерфейс несколько раз переделывался, чтобы отражать, как я полагаю, глобальный спрос на более причудливые пользовательские интерфейсы.

7.3. Сетевой сервис

Помимо интернет-магазина, на платформе появилось множество других онлайн-решений, включая дебютировавший бесплатный (только на PS3 и PS Vita - прим. переводчика) онлайн-сервис PlayStation Network (PSN), который напрямую конкурирует с платным Xbox Live от Microsoft.

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

Скриншоты меню PlayStation Network в XMB
Игры предлагают список достижений, чтобы бросить вызов своим пользователям.
Цель - дать игрокам чувство гордости и удовлетворения
Игры предлагают список достижений, чтобы бросить вызов своим пользователям. Цель - дать игрокам чувство гордости и удовлетворения
Список друзей
(Имена скрыты по очевидным причинам)
Список друзей (Имена скрыты по очевидным причинам)
После того, как я немного поиграл в онлайн-игры,
случайные люди начали присылать мне сообщения
После того, как я немного поиграл в онлайн-игры, случайные люди начали присылать мне сообщения

И последнее, но не менее важное: как и в случае с обновляемой ОС, игры тоже обновляются. Таким образом, при запуске игры XMB может предложить загрузить обновления игры (в виде “пакетов”), которые исправляют ошибки и/или добавляют новый контент. Обновления устанавливаются на жесткий диск и работают аналогично слоистой файловой системе.

8. Борьба с пиратством и хоумбрю-приложениями

Все, что вы только что прочитали, должно быть каким-то образом защищено от "несанкционированного" доступа. Если хотите ознакомиться с тем, как компания Sony выполнила эту работу, то вам дальше будет интересно.

8.1. Обзор фундамента безопасности

Многие части консоли уже обеспечивают функции безопасности, которые не требуют ручной реализации в ПО:

  • SysCon: непонятный проприетарный чип (кратко упомянутый в процессе загрузки), который управляет линиями питания Cell, RSX и южного моста. Его EEPROM содержит записи, считываемые модулями ОС, чтобы определить, какие функции включены, а какие нет [79].

    • Хоть я и использую слово “непонятный”, но SysCon - это просто микроконтроллер, либо взятый с полки ARM7TDMI-S (вот так, PS3 имеет некоторые общие черты с Game Boy Advance и даже поздними версиями PS2) с поддержкой MagicGate, либо измененный вариант NEC 78K0R [80]. Больше всего интригует внутренняя прошивка SysCon.

    • SysCon и Cell общаются друг с другом с помощью последовательного интерфейса (SPI), который подключается к компоненту TEST в Cell [81]. TEST предоставляет множество функций отладки Cell, хотя SysCon подключается только к порту "Pervasive logic", позволяя последнему управлять такими вещами, как питание или температура [82].

  • Cell содержит скрытый ROM, в котором хранятся незашифрованные процедуры загрузки, не опасаясь, что посторонние смогут увидеть или изменить их.

  • Режимы привилегий Cell и изолированный режим SPE предотвращают доступ программ к неавторизованным ресурсам.

  • Южный мост плавно шифрует содержимое жесткого диска с помощью AES.

  • Подсистема Blu-ray представляет собой ещё одну крепость. Содержимое диска шифруется с помощью ключа, который находится в области диска "ROM mask" (недоступной для обычных считывающих устройств) [83].

Кроме того, Sony внедрила в ПО следующие средства защиты:

  • Сложная цепочка доверия, которая начинается с незашифрованного загрузочного ROM в Cell и заканчивается графическим интерфейсом пользователя (XMB), который загружает только зашифрованные Sony двоичные файлы под ядро и гипервизор.

    • Цепочка доверия реализует несколько алгоритмов шифрования, включая асимметричные (RSA и ECDSA) и симметричные (AES) в сочетании с HMAC и SHA-1 (для подтверждения целостности данных).

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

    • Эти специальные ключи используются для bootldr и metldr (ранние стадии загрузки).

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

Диаграмма шифрованного SELF-файла
Диаграмма шифрованного SELF-файла

8.2. Поражение

Вы уже видели, на что способна эта консоль, но ожидали ли вы, что хакеры будут довольствоваться ограниченными возможностями OtherOS? Думаю, Sony тоже не ожидала. Компания изо всех сил старалась защитить некоторые области, но оставляла другие области полузакрытыми, которыми позже и воспользовались хакеры.

Давайте посмотрим, как некоторые из "крепостей" консоли были взломаны независимыми хакерами по всему миру. Следует помнить, что сообщество взломщиков PS3 было очень активным, каждый год выпуская множество инструментов и документации. Поэтому я остановлюсь на нескольких вехах, которые проложили путь к притоку контента и разработке хоумбрю-приложений, но больше информации вы найдете на PS3History [84].

8.2.1. Обход гипервизора

В 2010 году, после трех лет затишья на хакерской сцене, в сообществе произошло нечто интересное.

Джордж Хотц (George Hotz) - это хакер, известный тем, что ранее разблокировал первую модель iPhone 2G, чтобы она могла работать с любой сетью (первоначально телефон работал только с сетью Cingular / AT&T). Так вот - он смог прочитать и записать защищенные области в памяти консоли, не будучи остановленным гипервизором. Позже он опубликовал свой эксплойт вместе с кратким его описанием в своем блоге [85].

Эксплойт требует двух материалов: установки Linux под управлением OtherOS (для выполнения произвольного, но ограниченного кода) и наличия внешнего глитчера, подключенного к шине XDR (для общения с ОЗУ).

Коротко, гипервизор использует хэш-таблицу, хранящуюся в ОЗУ, для каталогизации адресов памяти вместе с их уровнями привилегий. Поэтому пользовательские программы не могут получить доступ к защищенным областям памяти.

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

В итоге Хотц обнаружил, что в Linux / OtherOS программы могут запрашивать у гипервизора множество блоков памяти, указывающих на один и тот же физический адрес. Если программа деаллоцирует их в то время, когда на шине XDR присутствуют внешние помехи (например, из-за глитчера, посылающего электрические импульсы), процесс деаллокации завершается наполовину [86]. Как следствие, хэш-таблица гипервизора (находящаяся в ОЗУ) все ещё содержит запись о выделенных адресах, но в то же время он считает, что это пространство было освобождено.

Затем эксплойт Хотца запрашивает дополнительные блоки, поэтому гипервизор расширяет свою таблицу новыми записями. Этот процесс продолжается до тех пор, пока запись в хэш-таблице не перекрывает место в памяти блока, который должен был быть деаллоцирован. Поскольку в хэш-таблице сохранилась старая запись, дающая пользователю доступ к этому адресу, гипервизор в итоге предоставляет к изменению записи в хэш-таблице! Таким образом, эксплойт изменяет запись, чтобы расширить доступ ко всему пространству памяти.

Диаграмма, описывающая атаку на гипервизор
Диаграмма, описывающая атаку на гипервизор

Хоть этот эксплойт и требовал использования среды Linux, работающей из под OtherOS, он стал огромным шагом к дальнейшему реверс-инжинирингу и исследовательским проектам. Теперь хакеры получили возможность исследовать критические области системы, которые изначально были недоступны. Стоит отметить, что в это же время Sony выпустила обновление ПО версии 3.21, которое убирало из консоли OtherOS. Можно было бы подумать, что это удержит хакеров от продолжения работы, но это только дало им больше причин ускорить её.

8.2.2. PS Jailbreak

"Официальная" флешка PS Jailbreak
"Официальная" флешка PS Jailbreak

Позже, в 2010 году, группа под названием PS Jailbreak анонсировала (и позже выпустила) уникальное решение для запуска хоумбрю-приложений непосредственно из встроенной оболочки консоли (XMB, из под GameOS) без вмешательства в железо консоли. И все это не понравилось Sony, которая вскоре пойдёт юридическим путём, чтобы заблокировать продажи продукта.

Устройство от PS Jailbreak - это USB-флешка, которая подключалась к переднему USB-порту перед включением консоли. Далее пользователь должен был нажать кнопку питания, затем - кнопку извлечения. Если инструкции были выполнены успешно, то пользователь видел обычный интерфейс XMB, но с добавленной опцией "Install PKG" и нескольких хоумбрю-приложений, созданных для копирования игр с Blu-ray на жесткий диск и их последующего запуска.

За кулисами эта флешка выполняет огромное количество работы, которую можно разделить на две части [87]:

  1. USB-эксплойт: после включения консоли флешка обманывает систему, заставляя её думать, что она подключена к USB-хабу со шестью портами. Потом она выполняет сложную последовательность USB-команд, пока не достигнет переполнения кучи и эскалации доступа к ядру PS3 (уровень 2). Затем она приступает к выполнению полезной нагрузки (payload).

  2. Payload: это ещё один сложный пакет, который исправляет оригинальную оболочку, чтобы включить скрытые функции, доступные только на отладочных устройствах (кнопка "Install PKG"). Пакет отключает проверку подписи (для загрузки произвольного модуля или пакета) и перенаправляет команды Blu-ray на жесткий диск (для загрузки игр). Тот факт, что эта программа может изменить так много на уровне ядра, заставляет задуматься, а в чём же гипервизор хорош?

В дополнение к этому M4j0r позже сказал:

Интересно, что он даже не использует код Sony, эта часть lv2 была написана Logitech, и разработчики этого эксплойта могли иметь доступ к исходному коду (благодаря взлому 2008 года) [88]

Позже этот продукт был взломан другими сообществами, и вскоре появились клоны с открытым исходным кодом (например, Groove), которые снимали многие ограничения оригинала (например, пользователи теперь могли отключать устройство от сети после завершения эксплойта). Некоторые форки были даже развернуты на калькуляторе Texas Instruments [89].

В любом случае, Sony действовала быстро, выпустив обновление ПО версии 3.42, чтобы удалить эту золотую жилу [90]. Но всё-таки дверь для хоумбрю-приложений уже была открыта.

8.2.3. Достойны упоминания

Прежде чем я наконец-то расскажу о главном достижении хоумбрю-сцены PS3, позвольте мне описать пару методов, которые были разработаны примерно в то же самое время:

  • USB Jig: ещё один USB-накопитель, на этот раз запрограммированный на то, чтобы обманом заставить консоль войти в режим Factory Service Mode. Этот режим предназначен только для обслуживания консоли авторизованным персоналом. Программа, встроенная в Jig, повторяет программу, которую Sony предоставляет своим инженерам. Основное преимущество сервисного режима - это возможность понизить прошивку консоли до версии, совместимой с PS Jailbreak. Payload также был доступен в виде хоумбрю-приложения для PSP [91]. В ответ Sony внесла исправления в сервисный режим, чтобы затруднить его восстановление в "нормальный" режим или изменение прошивки через него, отговаривая пользователей от использования режима.

  • Эмулятор оптического диска (Optical Disc Emulator, ODE): серия аппаратных продуктов, которые поставлялись различными компаниями (Cobra, E3 и прочими). Они вмешивались не в прошивку консоли, а в интерфейс SATA / PATA диска Blu-ray. ODE - это платы, которые устанавливаются между материнской платой и приводом Blu-ray, выступая в роли посредника. Эмулятор обманывает консоль, заставляя её думать, что на диске находится игра, но вместо этого загружает образ диска с внешнего USB-накопителя. Однако на момент выхода эти устройства стоили довольно дорого. История взлома PS3 содержит длинные "непрошиваемые" периоды времени, когда для новых консолей не было доступных программных эксплойтов, поэтому ODE смогли заполнить этот пробел.

  • Даунгрейдер: поскольку Sony продолжала устранять уязвимости с помощью новых обновлений ПО, у пользователей не осталось другого выбора, кроме как понизить версию прошивки с возможностью запуска эксплойта. Таким образом, появились компании, подобные E3, которые поставляли специализированное оборудование, позволяющее переписать систему консоли "трудным способом". То есть, путем прямой прошивки чипов NAND или NOR. По понятным причинам этот метод требует большего мастерства и терпения по сравнению с USB-методом.

  • Изолированные утечки: эта утечка предназначена для исследовательских целей, в отличие от "функций", которые увидит пользователь (но, тем не менее, она необходима для дальнейшего развития). В любом случае, данные о возврате сертификатов (для внесения скомпрометированных в черный список) анализируются lv2ldr, ведь так? Ну, было обнаружено, что этот процесс содержит множество уязвимостей. Во-первых, по необъяснимой причине, эти данные могут быть записаны в пользовательской среде. Во-вторых, парсер не выполняет проверку границ получаемых данных (и вот опять). Поэтому хакерам удалось создать пользовательские данные о возврате, которые могли привести к переполнению буфера и, в конечном итоге, позволить им выполнить произвольный код внутри изолированного режима SPU. Это позволило получить доступ к конфиденциальным данным (т.е. ключам), которые предположительно были защищены от остальной части системы [92].

8.2.3. Падение шифрования

Как и в саге с PSP, первоначальные эксплойты требовали больших усилий и легко исправлялись Sony, что привело к невыгодной игре в кошки-мышки. Однако, как и в случае с PSP, это был вопрос времени, когда какое-нибудь открытие нарушит фундамент безопасности этой системы: её цепочку доверия.

В 2011 году Джордж Хотц вместе с командой fail0verflow опубликовали ещё одно открытие - закрытые ключи шифрования, которые Sony использует для подписи двоичных файлов, выполняемых metldr.

Бинарные файлы, загружаемые на этапе загрузки, подписываются ключом ECDSA. Так как это асимметричная система шифрования, то любой, кто владеет закрытым ключом (Sony, а теперь и другие), может зашифровать и подписать двоичные файлы. В глазах metldr эти файлы будут выглядеть "подлинными".

А поскольку metldr является третьим этапом загрузки перед загрузкой lv1 (гипервизора), это означает, что хакеры смогут создавать собственные гипервизор, ядро и всё, что находится под ними. Кроме того, любая PlayStation 3 на рынке будет думать, что пользовательские двоичные файлы являются подлинными. В общем, это был эксплойт в стиле батареи Пандоры, но он был полностью программный.

Открытие этого ключа, которое должно было быть вычислительно невыполнимым, стало возможным благодаря "оплошности" в реализации алгоритма ECDSA компанией Sony.

Кратко, математическая формула, используемая для ECDSA, использует случайное значение, которое Sony никогда не меняла во всех файлах обновлений, которые они распространяли [93].
Это значение, по сути, превращалось в константу, тем самым облегчая решение других переменных, что в итоге и произошло. Последствия этого открытия описаны в следующих параграфах.

8.3. Эра кастомных прошивок

Список различных механизмов защиты, которые были скомпрометированы
Список различных механизмов защиты, которые были скомпрометированы

Взлом metldr означал, что теперь все могли создавать "официальные" системы для PS3, что привело к появлению "разновидностей" GameOS, которые различные сообщества выпускали с различными настройками. Эти системы представляли собой модификации официальных файлов прошивки Sony (которые она распространяла в виде обновлений) и пересобирались с использованием утечки ключей, поэтому их можно было установить куда угодно.

Результат получил название "кастомная прошивка" (Custom Firmware, CFW) и стал де-факто методом взлома этой консоли, пока Sony не приняла жесткие меры по его устранению.

Моя установленная CFW с открытым “меню VSH”.
Этот вариант прошивки (под названием "Rebug") также позволяет мне
превратить консоль в отладочную станцию и возиться со своими хоумбрю-приложениями.
Моя установленная CFW с открытым “меню VSH”. Этот вариант прошивки (под названием "Rebug") также позволяет мне превратить консоль в отладочную станцию и возиться со своими хоумбрю-приложениями.

Тем временем в сети появилось множество CFW с разными названиями (например, "Rebug", "Ferrox" и прочее), и они содержали следующие особенности [94]:

  • Отключение проверки подписи для любого установленного или устанавливаемого модуля.

  • Разрешение чтения и записи (классический peek and poke) по любому адресу памяти, используя либо гипервизор (уровень 1), либо ядро (уровень 2).

  • Активация скрытых функций отладки для установки модулей, упакованных в виде файлов .pkg. Для работы в среде CFW их не нужно было подписывать ключами Sony.

  • Включение возможности монтирования образа диска, как если бы был вставлен диск Blu-ray.

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

  • Запись базы данных в EEPROM чипа SysCon, позволяющая установить любую версию системы по выбору. Это также известно как QA Toggling.

  • Изменение стиля XMB (например, удаление предупреждения об эпилепсии, разрешение делать скриншоты в игре и так далее).

Есть и мой любимый вариант: привнести отладочные функции из тест-кита, позволяя любой розничной консоли стать отладочной станцией. Это может быть сделано установкой либо прошивки с возможностями отладки, либо той, которая может преобразовать розничную консоль (CEX) в отладочную модель (DEX) путем изменения специфических для консоли данных во флэш-памяти.

8.3.1. Sony наносит ответный удар

Аналогично событиям, произошедшим после появления CFW для PSP, Sony ответила двумя обновлениями системы безопасности:

Со стороны ПО Sony выпустила два системных обновления, которые улучшили систему безопасности:

  • В версии 3.56 двоичные файлы подписываются новыми ключами шифрования, устойчивыми к предыдущему открытию ECSDA [95]. Из-за этого создатели CFW не могут настроить новые двоичные файлы (поскольку у них нет закрытых ключей для повторного шифрования).
    Кроме того, поставляется новая версия приложения System Updater, которое вводит новые сертификаты в файлы обновления системы (PS3UPDAT.PUP). Это означает, что даже если хакерам удастся собрать новый CFW, только консоли с версией системы 3.55 или ниже смогут установить его [96].

  • Позже, обновление системы 3.60 изменило процесс загрузки. Оно упразднило metldr и переместило lv0 на место загрузчиков (lvl1drlv2ldrappldr и isoldr). В целом это означало, что хакеры не могли модифицировать новые системные файлы без предварительного взлома lv0 (нахождения его закрытого ключа).

    • В конце концов это произошло в конце 2012 года, когда команда под названием "Три Мушкетера" (The Three Musketeers) опубликовала ключи lv0 [97]. Это открыло путь к новым CFW, сделанным на основе версий системы, более новых, чем 3.55. Хотя, из-за вышеупомянутых изменений в программе обновления, установить её могут только пользователи системы версии 3.55 или ниже (включая любые CFW с отключенной проверкой подписи).

С аппаратной стороны, не только последующие модели PS3 (CECH-25xxx, CECH-3xxx и CECH-4xxx) теперь поставляются с версией системы выше 3.55, но и содержат другой вариант bootldr или lv0ldr (называемый lv0ldr.1).

Этот вариант расшифровывает и загружает lv0 и извлекает новый системный файл lv0.2. Последний содержит метаданные о lv0 [98], чтобы удостовериться, что lv0 не был подделан. lv0.2 подписывается новым ключом (также неуязвимым к предыдущему открытию ECDSA), что не позволяет хакерам получить контроль над цепочкой загрузки.

По сей день эти модели консоли не могут запустить CFW, поэтому их прозвали непрошиваемыми. Однако они могут работать с "гибридной прошивкой", о которой мы поговорим позже.

Со временем количество CFW-совместимых консолей только уменьшалось, поэтому PS3, не обновленные до версии 3.55, стали своего рода реликвиями. В то же время резко возрос спрос на альтернативы, такие как даунгрейдеры (для возврата к версии системы 3.55 на старых моделях) и ODE (для запуска пиратских игр на новых моделях).

8.3.2. Возвращение хоумбрю-приложений

После длительного периода ожидания для пользователей, которые пропустили окно для установки CFW, в конце 2017 года команда хакеров выпустила PS3Xploit, коллекцию эксплойтов и утилит [99]. Они вернули возможность установки CFW на старые модели без необходимости использования дорогостоящего даунгрейдера (и навыков работы с ним).

Основная полезная нагрузка PS3Xploit полностью повторяет работу аппаратного даунгрейдера (исправление файлов CoreOS), но с помощью программного обеспечения. Нагрузка работает следующим образом:

  1. Отправной точкой является интернет-браузер XMB, построенный на базе WebKit. PS3Xploit использует JavaScript для получения возможности выполнения произвольного кода в пользовательском пространстве системы (и вне среды JavaScript). Чтобы запустить эту программу, пользователю достаточно открыть родной веб-браузер XMB, ввести URL-адрес, указывающий на хост PS3Xploit, и позволить ему сделать свою работу.

  2. Так получилось, что ядро предоставляет системные вызовы, которые могут быть использованы для перезаписи файлов системы во флэш-памяти. Кроме того, оболочка (XMB) и её плагины хранят в памяти процедуры, которые используют эти вызовы.

  3. PS3Xploit не может вызвать эти системные вызовы напрямую из-за защиты "no-execute" гипервизора, не позволяющей эксплойту загружать новый код в пользовательскую среду. Однако он может найти способ перезаписать флэш-память, "позаимствовав" процедуры у оболочки.

  4. PS3Xploit модифицирует стек выполнения WebKit так, чтобы перенаправить выполнение на подпрограммы оболочки. Этот тип атаки (повреждение стека для перенаправления выполнения на другой код, находящийся в памяти) называется программированием, ориентированным на возврат (Return Oriented Programming, ROP), и он очень популярен в жанре InfoSec.
    Одним из способов борьбы с ним - реализация рандомизации расположения адресного пространства (Address Space Layout Randomization, ASLR), которая затрудняет угадывание расположения процедур (называемых гаджетами). Но, как можете догадаться, в гипервизоре Sony отсутствует ASLR.

  5. Эти системные вызовы запускаются с параметрами PS3Xploit, и таким образом они заменяют файлы CoreOS (первая часть операционной системы, хранящаяся во флэш-памяти) на исправленные [100].

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

Как видите, этот "подарок с небес" вернул кастомные прошивки в центр внимания и сделал устаревшими аппаратные даунгрейдеры и ODE. С другой стороны, для тех моделей, которые не могли установить CFW любым способом (непрошиваемые), позже командой был предложен другой пакет эксплойтов, PS3Hen.

PS3Hen фокусировался на включении подмножества функций CFW в прошивку (включая возможность запуска хоумбрю-приложений). Этот пакет устанавливает точку входа в XMB, и пользователь должен запускать её каждый раз при включении консоли, чтобы снова активировать хоумбрю-приложения.

8.3.3. Частичный ответ от Sony

К счастью, Sony предприняла лишь небольшие шаги, чтобы заблокировать PS3Xploit (возможно, потому, что такой поворот событий произошел спустя годы после того, как преемник консоли, PlayStation 4, появился в магазинах). Они выпустили несколько системных обновлений, которые не исправили эту цепочку эксплойтов, но удалили процедуру, используемую в WebKit для начальной загрузки цепочки.

В ответ хакеры опубликовали слегка измененные обновления ПО, которые содержали в себе восставленную точку входа (и почему-то обновления не нужно было заново подписывать) [101]. Эти пользовательские обновления были названы Гибридной прошивкой (Hybrid firmware, HFW). На момент написания этой статьи, они являются единственной возможностью запускать хоумбрю-приложения на непрошиваемых моделях.

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

9. На этом всё, ребята!

Две PS3, на одной из игра, “которую нельзя называть”.
Несмотря на забагованный геймплей и необычную сюжетную линию, мне вполне понравился этот жанр.
Две PS3, на одной из игра, “которую нельзя называть”. Несмотря на забагованный геймплей и необычную сюжетную линию, мне вполне понравился этот жанр.

Ура, вы добрались до конца!

Буду откровенен, я изначально планировал написать статью за 2 месяца, однако это растянулось на целое лето (и вы знаете почему). В любом случае, надеюсь, что это помогло вам расширить свои знания об этой системе, и позволило вам понять причины технологического прогресса в ту эпоху. Таким образом, теперь вы можете мыслить шире популярных слухов, постоянно повторяемых СМИ.

Если вам интересно, для этой статьи я использовал три модели PS3:

  • Непрошиваемая CECH-3001 прямиком из моего подросткового возраста (почему-то на коробке написано, что это модель CECH-25XX!). Недавно достал её из чердака, чтобы попробовать PS3Hen.

  • CECH-2100, которую я купил после выхода PS3Xploit. Наконец-то я смог установить на неё хоумбрю-приложения.

  • Модель CECHA (выпущенная только в Японии), купленная мною в августе 2021 для сбора материалов для этой статьи (в основном фотографии и информация об обратной совместимости с PS2). Это было довольно дорого, но, к счастью, пожертвования читателей помогли мне компенсировать расходы.

Хоть я много раз повторял, что Cell был революционной технологией, вы, возможно, заметили, что я ни разу не упомянул, насколько ненадежными оказались ранние модели. Это был первый раз, когда я услышал о неисправности консоли, просто некоторое время поиграв в неё.

Действительно, эти штуки ели электричество, как динозавры, и нагревались, как духовка (пластиковая духовка). К счастью, у меня была модель "Slim" (её следовало назвать “рабочей”)… Стремительная эпоха была, не так ли?

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

Увидимся в следующий раз!
Родриго.

Источники

Игры:

Борьба с пиратством:

Комментарии (5)


  1. 0lom5zhdovdv
    05.11.2021 22:03

    Да, даунгрейдил используя teensy и 40+ проводов к тест поинтам, до того как появился вариант без пайки...


  1. akhalat
    05.11.2021 22:07

    CECH-25xxx

    Часть из них, к слову, прошивается.


  1. xakep666
    06.11.2021 14:13

    Имея в наличии модель CECH-4208C (непрошиваемая superslim) когда-то с удивлением узнал, что и там можно запускать хоумбрю (HFW и PS3Xploit). В какой-то момент перекидывать файлы с помощью внешнего диска надоело, решил изучить возможности установки по сети, благо WebMAN и IrisMAN такое позволяли. Не без проблем и патчинга удалось собрать ps3netsrv. И тут мне стало интересно, как же там устроен обмен. В качестве транспорта там TCP, поверх которого сделан простенький бинарный протокол типа "запрос-ответ" с фиксированными размерами заголовков запроса и ответа. Но нашлась там и очень интересная деталь: сервер позвалял устанавливать дисковые игры в распакованном виде (эта функция в исходниках называется netiso). Сам сервер был написан так, что умел "эмулировать" iso-образ без его непосредственного сохранения в памяти или на диске. Попробовал написать собственную реализацию сервера на go для упрощения сборки и кроссплатформенности, вышло вот такое https://github.com/xakep666/ps3netsrv-go


  1. Hidon
    07.11.2021 00:35

    спасибо за переводы, очень было интересно почитать.

    я всё к ней присматривался в своё время, но "шитая" пс3 тогда стоила как чугунный мост, а не шитую брать религия не позволяла =) в итоге я прошёл интересующие меня игры на эмуляторе(ну да, подождать пришлось), зато с гораздо лучшей картинкой, за счёт возможностей самого эмулятора. ну и 60fps в persona 5 - то, что доктор прописал.


  1. Haoose
    08.11.2021 16:43
    -1

    В 2011 году Джордж Хотц вместе с командой fail0verflow опубликовали ещё одно открытие - закрытые ключи шифрования, которые Sony использует для подписи двоичных файлов, выполняемых metldr.

    И вот сегодня эта же группа сообщила, что получила симметричные ключи шифрования для пятого поколения консолей
    https://twitter.com/fail0verflow/status/1457526453105569793