Шина на xbox 360

Жесткие диски для Xbox 360: особенности использования

Несмотря на довольно солидный по игровым меркам возраст, консоль Xbox 360 ценится геймерами со всего мира и по сей день. Сохранять актуальность платформе 360 позволяет огромная библиотека игр, в числе которых не только кроссплатформенные продукты, но и эксклюзивно разработанные только для Xbox. Однако для многих пользователей главным фактором остается довольно высокий ценник даже на старые игры, не говоря уже о популярных новинках. И, как это часто происходит, на помощь игрокам пришли технические специалисты, которые сумели научить консоль взаимодействовать с играми, полученными из неофициальных источников.

Что такое Freeboot

В своем заводском варианте игровая приставка позволяет запускать игры только с лицензионных дисков, вне зависимости от объема встроенного накопителя: жесткие диски для Xbox 360 на 250 Гб вмещают несколько установленных игр, однако без диска запустить ни одну из них не получится, да и в процессе работы консоли обращения к диску присутствуют постоянно.

Это ограничение снимается установкой специальной прошивки Freeboot. В отличие от смартфонов вмешательство в недра консоли носит не только программный, но и аппаратный характер, что в домашних условиях удастся сделать далеко не каждому: для установки прошивки потребуется специальный чип, программатор NAND-памяти, инструмент, а также определенные навыки. Поэтому большинство игроков доверяют эту процедуру специализированным мастерским.

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

Замена жесткого диска для Xbox 360

Необходимость замены или добавления HDD каждый из владельцев прошитой консоли определяет для себя сам. Чаще всего их приобретают для Xbox 360 Slim, жестким диском не укомплектованных. Но и игроков, которым по тем или иным причинам использование внешнего носителя не подходит, тоже достаточно.

В отличие от обладателей заводского устройства владельцы Xbox 360 Freeboot жесткий диск могут выбирать, не ограничиваясь ничем, кроме форм-фактора: в качестве основного типа памяти в Xbox 360 используются 2,5-дюймовые накопители стандарта SATA. Поэтому выбирать можно любой из них емкостью до 2 терабайт (именно таков максимальный объем, поддерживаемый прошивкой).

Особенности процесса замены

Однако перед тем как приступать непосредственно к замене, не помешает сохранить данные текущего профиля. Для этого нужно:

  1. Подготовить USB-носитель (обычной флешки объемом 4 — 8 Гб вполне хватит).
  2. Вставить его в порт консоли, после чего отформатировать в FAT 32, используя FreeStyleDash (управляющая оболочка прошивки Freeboot).
  3. Сохранить данные профиля (включая настройки, аватары и сохранения игр).

После успешного сохранения данных можно приступать к замене жесткого диска. Для Xbox 360 всех поколений эта возможность предусмотрена изначально, и устройство разбирать не понадобится. Порядок же действий подходит для любой версии Xbox 360, выпущенной после 2010 года, поскольку отличаются только типы фиксаторов. Сделать нужно следующее:

  1. Обесточить приставку, затем расположить ее горизонтально на ровной поверхности.
  2. Отыскать крышку отсека жесткого диска и открыть ее с помощью фиксатора.
  3. Извлечь, потянув за специальную наклейку, оригинальный HDD (при его наличии внутри).
  4. Аккуратно задвинуть в паз новый диск до щелчка, после чего закрыть крышку.
  5. Если HDMI-кабель был отсоединен, подключить его обратно, и только потом подавать питание.

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

Использование внешнего жесткого диска

Как известно, инженерами «Майкрософт» было установлено ограничение максимального объема в 16 Гб при использовании жесткого диска. Для Xbox 360 Freeboot-версии это ограничение больше не актуально: теперь консоль увидит полный объем подключенного накопителя. Разумеется, он также должен быть отформатирован в файловую систему FAT 32.

Особенности использования Freeboot

Необходимо понимать, что все манипуляции с игровой консолью, не задокументированные в официальных источниках, приводят к потере гарантии. Кроме того, у владельца перепрошитой консоли не получится воспользоваться преимуществами сервиса Xbox Live: такой моддинг системой контроля рано или поздно будет замечен, после чего последует блокировка учетной записи. Именно поэтому возможность подключения в серверам «Майкрософт» в новых версиях прошивок отключена. Но при этом играть на неофициальных серверах никто не запрещает, а учитывая популярность прошивки Xbox, геймеров на таких серверах хватает.

Читайте также:  Размеры шин для бтр

Источник

Защита и взлом Xbox 360 (Часть 3)

В 2011 году, через 6 лет после выпуска игровой приставки Xbox 360, исследователями был обнаружен занимательный факт — если на вывод RESET центрального процессора на очень короткое время подать сигнал «0», процессор не сбросит своё состояние (как должно быть), но вместо этого изменит своё поведение! На основе этой «особенности» был разработан Reset Glitch Hack (RGH), с помощью которого удалось полностью скомпрометировать защиту Xbox 360, запустить неподписанный код, тем самым открыв путь к взлому самой системы и победе над «невзламываемыми» приводами DG-16D5S.

Давайте же рассмотрим в деталях, как работал RGH, как разработчики пытались залатать дыру и как эти заплатки смогли обойти!

Что вообще за глич атака?

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

Действительно, компилируя код
вы полагаетесь на то, что значение переменной i увеличится ровно на 2, даже не представляя себе, как может быть иначе.

Глич-атаки нарушают эту уверенность — их цель направлена на то, чтобы процессор «сглючил» и повёл себя не так, как надо. Способов «глюкнуть» процессор несколько, например:

  • Просадить напряжение питания ЦПУ
  • Дать лишний импульс в опорную частоту ЦПУ
  • «Посветить» на проц радиацией

Есть специальные устройства для проведения подобных атак — например, ChipWhisperer предлагает широкий ассортимент атак по частоте и питанию:

В случае же с Xbox 360, «глюк» происходит в результате воздействия на линию RESET. Процессор начинает процедуру сброса, но из-за очень краткой длительности сигнала, не успевает её завершить и продолжает работать как ни в чём ни бывало. Но именно на этот краткий миг, пока сигнал RESET активен, его поведение изменяется!

Глючим процессор

Защита Xbox 360 держится на том, что загрузчики проверяют друг друга по цепочке. В конечном итоге, проверка на каждом этапе сводится к вызову функции сравнения хеш-суммы с «образцом». Тут-то и применили глич-атаку, заставив процессор проигнорировать несовпадение. Импульс на линию RESET сразу после вызова процедуры memcmp заставляет процессор «пойти» по другой ветке и продолжить загрузку, даже если хеш-сумма неверна:

UPDATE: дальнейшее исследование показало, что глич происходит несколько раньше, чем указано на картинке, а именно в арифметических операциях, например, addi r3, r4, 5. Если ещё точнее, то обнуляется регистр источника, в примере это r4

Наилучшее место для атаки нашлось в загрузчике второго этапа, «CB». Более поздние этапы атаковать сложнее (да и легко пофиксят), а на первом этапе загрузки («1BL», ROM) из-за несколько иного построения программного кода атака не удалась.

Звучит просто, но на деле при попытке осуществить атаку, обнаружилось множество нюансов.

Для начала, чтобы успешно провести глич-атаку, необходимо очень точно определить момент времени, когда следует подавать RESET импульс. Если ошибиться хотя бы на микросекунду, послать слишком короткий или длинный импульс, атака не срабатывает.

К счастью, в Xbox 360 каждый этап загрузки сопровождается изменением значения на отладочной шине POST_OUT. Более того, отладочный вывод настолько часто расставлен, что новое значение POST задаётся сразу перед сравнением хеш-суммы:

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

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

На обычном ПК частота CPU определяется как произведение внешней, «опорной» частоты и множителя:

Так и в Xbox 360, к процессору подходят внешние линии опорной частоты, а внутри эта частота умножается с помощью PLL. И на старых, «толстых» ревизиях приставки механизм PLL можно было отключить, замедлив процессор аж в 128 раз:

На «Slim» версиях трюк с PLL провернуть нельзя (линия не разведена на плате), и раз на множитель в «Slim» мы повлиять не можем, то уменьшим «опорную» частоту!

UPDATE: благодаря утечке схем на слим платы, PLL линия была успешно обнаружена, благодаря чему появились методы RGH 1.2 Slim и RGH3

Она генерируется чипом HANA, и его можно конфигурировать по шине I2C:

К сожалению, сильно снизить не получилось, «на малых оборотах» итоговая частота процессора начинала сильно «плавать», что снижало шансы на успех. Самым стабильным вариантом оказалось замедление в 3.17 раз. Не 128 раз, но хоть что-то.

Читайте также:  На ваз 2112 диаметр шин

Всё? Нет, не всё. Далеко не факт, что атака сработает с первого раза (особенно на Slim). А при неудачном запуске, приставка перезагружается и пробует запуститься снова. На запуск даётся всего 5 попыток, после чего приставка останавливается и начинает моргать «красным кольцом смерти». Поэтому патчим ещё и прошивку южного моста (SMC), чтобы не страдала фигнёй и перезагружала приставку до посинения:

Итак, получаем алгоритм:

  1. патчим SMC
  2. замедляем проц (через PLL или I2C)
  3. ждём триггера POST
  4. ждём N микросекунд
  5. шлём импульс на RESET
  6. ускоряем проц обратно

Для большей точности подсчётов, частоту берём с того же HANA (48 МГц):

И получаем вот такую конструкцию на базе недорогого CPLD Xilinx XC2C64A:

Не забудем пошаманить с длиной и расположением проводка на RESET (обратите внимание на «катушку» снизу фото) и вперёд, надеяться, что запуск получится в течение минуты.

Но это только с аппаратной стороны. Как же нам пропатчить загрузчик и запихнуть свой код?

Патчим загрузчики

Как я уже упоминал, атакуется загрузчик второго уровня, «CB». Этот загрузчик шифруется фиксированным ключом, одинаковым для всех приставок, но как раз «CB» модифицировать нельзя, его мы только атакуем. А вот следующий за ним уже зашифрован ключом CPU, уникальным для каждой приставки. И чтобы его модифицировать, нужно знать этот ключ…
Или нет?

В старых «толстых» ревизиях Xbox 360 в загрузчике «CB» поддерживался так называемый «Zero-Pairing» режим, использующийся на этапе производства приставки. В заголовке каждого загрузчика по смещению 0x10 находится случайный набор данных «Pairing Data», используемый как часть ключа при расшифровывании. И если этот набор данных состоял целиком из нулей («Zero-Pairing»), то ключ процессора игнорировался и вместо него использовался фиксированный, нулевой ключ!

С помощью этого трюка можно было собрать образ с оригинальным «CB», зашифровать нулевым ключом следующий загрузчик, «CD» (уже со своим кодом) и запустить его с помощью RGH!

В приставках «Slim» и этот трюк завернули, убрав «Zero-Pairing» режим и поделив «CB» на две части. Здесь «CB» делился на очень простой и небольшой «CB_A» и шифрованный ключом процессора «CB_B»:

Но шифрование алгоритмом RC4 (а именно этим алгоритмом зашифрован «CB_B»), имеет одну особенность. В процессе шифрования на основе ключа генерируется псевдослучайный поток данных, который бинарно «складывается» (операция ‘исключающее или’, ‘xor’) с исходными данными. При расшифровывании, соответственно, происходит то же самое, сложение с этим же псевдослучайным потоком возвращает данные в исходное значение:

Но операция бинарного сложения коммутативна и ассоциативна, что означает, что мы можем модифицировать зашифрованные данные, не зная ключа, просто заxor‘ив зашифрованный код с нужным нам патчем!

В итоге, мы можем зашифровать «CB_A», пропатчить зашифрованный «CB_B» (чтобы он не выполнял расшифровку вообще) и положить в открытом виде «CD» со своим кодом!

Короче, если собрать воедино, то запуск выглядит как-то так:
(XeLL — загрузчик хоумбрю, линукса, а ещё он ключи CPU показывает)

Microsoft наносит ответный удар

Конечно, Microsoft постарались всё залатать.

В новом системном обновлении все старые приставки перевели на «раздельную» загрузку с «CB_A» и «CB_B», тем самым окончательно закрыв «Zero-Paired» режим. На «Slim» загрузчики тоже подверглись обновлению. Новые загрузчики серьёзно доработали для защиты от RGH, наибольший упор при этом был сделан на защиту «CB_A»:

  • Полностью убрали отладочный вывод в POST
  • Проверку хеш-суммы переделали и продублировали для надёжности
  • По всему коду расставили sleep() на случайное время (зависящее от ключа CPU!!)
  • Добавили проверку фьюза CBLDV для возможности отзыва «CB_A»

Список нововведений не оставляет ни одного шанса для RGH. Но обратим внимание на последний пункт списка — до этого в «CB_A» не было проверки фьюзов! Фатальный недостаток. Более того, как мы помним, в расшифровке «CB_A» ключ процессора не участвует. А это значит, что уязвимый к RGH загрузчик «CB_A» можно запустить на любой приставке, и запретить это нельзя.

А вот чтобы что-то запустить с помощью этого уязвимого «CB_A», нужно несколько извернуться. Если мы не знаем ключа CPU, всё, что нам остаётся — патчить существующий «CB_B». Но что, если вместо модификации единичных участков, мы заXOR’им весь загрузчик целиком? И за счёт этого «запишем» старый загрузчик, который мы уже умеем патчить, на место нового? Так и поступили:

  1. Шифруем уязвимый «CB_A» точно так же, как в исходном образе
  2. XOR’им наш «CB_B» с новым, получая «разницу»
  3. Накладываем её на шифрованный «CB_B»!

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

Разработчики напряглись, и в очередном системном обновлении … чуть изменили метод шифрования «CB_B», теперь ключ шифрования стал зависеть ещё и от версии «CB_A»:

Читайте также:  Индекс 94т на шинах что означает

Теперь при попытке заxor’ить и подсунуть данные уязвимому «CB_A» старой версии, загрузчик расшифровывал мусор из-за различий в ключах. А новый загрузчик взломать нельзя, он хорошо защищён от глич атак. Пока что победа за Microsoft!

Проблем подкинула Corona

Тем временем, на рынок вышла новая ревизия Xbox 360 — Corona, и принесла она моддерам проблем:

Маловато чипов на плате, не находите? Всё верно, чип HANA «спрятали» в южный мост. Больше неоткуда брать частоту 48 MHz для мод-чипа, прежние команды замедления по I2C не срабатывают. Да что уж там, NAND-флеш на 16 MB, все эти годы служившую в качестве системного хранилища Xbox 360, вероломно заменили на 4 GB чип с интерфейсом eMMC! (правда, только в более дешёвой версии приставки, но всё же):

Но ничего, со всем справились. Придумали как читать/писать флеш-память через картридер:

Нашли новые I2C команды замедления, внешний 48 MHz кварцевый генератор заменил HANA:

Доделали скрипты для сборки, добавили поддержку 4 GB NAND…

Но Microsoft продолжали вставлять палки в колёса. Например, на новых платах пропали некоторые резисторы, без которых мод-чип переставал работать:

Правда, исправлялось это установкой перемычек паяльником:

Серьёзнее дела пошли, когда с платы пропали дорожки POST_OUT:

Но и здесь Microsoft не повезло, нужные для RGH «шары» CPU находились на крайнем ряду:

И, естественно, к ним смогли подключиться. Сначала самые рукастые, чуть подсверлив край процессора и подпаявшись проводком прямо к шарику:

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

Последний рубеж

После того, как одолели «корону», осталась одна проблема — новые версии системы так и не поддавались взлому. Чтобы запустить RGH, нужно знать ключ CPU, а чтобы узнать ключ CPU, нужно хотя бы раз запустить RGH. Проблема курицы и яйца, в общем.

И тут возникла мысль — а давайте не только проверку подлинности «глюкнем», но и расшифровку пропустим! Если получится, то нам не нужно знать ключа, положим «CB_B» в открытом виде, да и всё. Именно эта идея легла в основу Double Glitch Hack (DGX):

Этот чип «глючил» проц дважды, первым импульсом пропускался этап расшифровки загрузчика, а уже второй импульс пропускал проверку подлинности. Работало куда менее стабильно, благо требовался хотя бы один успешный запуск — дальше получаем ключ CPU и действуем по-старинке.

Актуален DGX был недолго, спустя 3 месяца китайцы вбросили релиз «DGX R.I.P» с образами, которые запускались на любых приставках, работали со стандартным RGH и, естественно, запускались куда стабильнее:

Эти образы содержали специальную версию загрузчика «CB_A», используемую на производстве Xbox 360 и, по сути, являющуюся полным аналогом старого доброго «Zero-Pairing» режима. Вместо ключа процессора, этот «CB_A_mfg» расшифровывал «CB_B» фиксированным нулевым ключом:

И вот здесь Microsoft всё. В этом «сервисном» варианте «CB_A» тоже не было проверки фьюз и забанить его было невозможно. Достаточно было записать образ согласно ревизии Xbox 360, припаять чип — и всё работало.

Winchester!

Полностью пофиксили RGH только в новой ревизии приставки под кодовым именем Winchester. Впервые процессоры CPU и GPU совместили в одном кристалле, плату максимально упростили:

Дорожки POST_OUT не просто убрали. Даже если подпаяться на площадки под процессором:

И даже, если запаять процессор на специальную версию платы для разработчиков, XDK, где эти дорожки всё ещё есть:

На POST_OUT виден только один импульс при запуске приставки. Шина заблокирована:

Более того, она блокируется только на этапе производства. Если взять «чистый» процессор с фабрики, где ещё не успели прожечь фьюзы — на нём POST_OUT работает!

Но вот RGH на нём уже не срабатывает. Как бы вы ни пытались подать RESET импульс, процессор корректно выполняет сброс, или же игнорирует ваш сигнал из-за слишком малой длительности. По-видимому, в процессор добавили специальный логический модуль, фильтрующий линию RESET и тем самым окончательно исправили аппаратную ошибку.

Post Scriptum

Выходит, последнюю ревизию Xbox 360 взломать невозможно?

И да, и нет. На данный момент известен только один способ запустить модифицированную систему на ревизии Winchester.

В наборе ПО для разработчиков (XDK) есть различные приватные ключи для подписи скомпилированного кода. И так вышло, что среди них затесался ключ подписи «shadowboot», загрузчика третьего уровня для XDK систем. И с его помощью можно собрать легитимный подписанный образ с модифицированной прошивкой. Вот только работать на обычных, «магазинных» приставках он не будет. Нужен процессор с XDK версии приставки, либо «чистый» CPU с непрожжёными фьюзами (можно было встретить на Aliexpress):

И только тогда у вас будет возможность лицезреть в «сведениях о системе» кастомной оболочки такую вот надпись:

А на этом всё! Как обычно, готов ответить на ваши вопросы в комментариях 🙂

Источник

Поделиться с друзьями
Шинбург