Как разобрать Xbox 360 Slim | Сеть мастерских

Как разобрать Xbox 360 Slim

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

Игровая приставка Xbox 360 S — консоль седьмого поколения от компании Microsoft, прямой наследник оригинального Xbox 360. В последствии, классический Xbox 360 был снят с производства и полностью заменен Slim версией.

В момент выпуска устройство было доступно в 3-х комплектациях, отличающихся лишь объемом внутреннего накопителя информации. 500 Gb, 250 Gb — версии с встроенным жестким диском. Третья — Xbox 360S 4 Gb, к ней необходимо подключать внешний HDD.

Slim в переводе с английского значит «стройный». Следовательно, приставку «S» в название следующей версии консоли, после старичка Xbox 360, добавили не просто так: она стала значительно тоньше, меньше и изящнее. Консоль характерна черным матовым или глянцевым корпусом. Некоторые версии игровых приставок оформлены в стиле какой-либо игры.

Узнать Xbox 360 S можно по сенсорным кнопкам с характерным звуком, отвечающим за включение консоли и извлечение привода. На задней части корпуса имеется маркировка «Xbox 360 S».

Что нужно, чтобы разобрать Xbox 360 S

Разборка консоли Xbox 360 S требует времени. Убедитесь, что у вас в запасе есть пара часов, которые вы можете посвятить своей дороге к материнской плате игровой приставки.

Теперь запаситесь несколькими инструментами, которые помогут разобрать Xbox 360 Slim:

  • отвертки типа звездочка Т10 для корпуса и Т8 для материнской платы;
  • тонкая металлическая палочка, шило, пинцет, надфиль или тоненькая отвертка — что-либо, чем можно снять защелки корпуса и боковых панелек;
  • термопаста (в случае, если ваша цель — заменить термопасту или «охладить» свою консоль).

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

Разбор Xbox 360 S

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

1. Вентиляционные решетки и рамки

Наша следующая цель рядом. Это соседствующая с заглушкой для жесткого диска вентиляционная решетка. Снимается она путем отодвигания всех защелок. Для этого используйте надфиль или его аналоги, снимите решетку.

Для разборки корпуса Xbox 360 S далее необходимо устранить нижнюю рамку, которая окружает область отсека жесткого диска и вентиляционной решетки. Рамка держится на 6 клипсах, которые издают характерный звук, когда отщелкиваются.

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

Дальнейшее открытие Xbox 360 Slim требует снятия верхней решетки вентиляции, которая держится на целых 13 защелках. Будьте аккуратны, отодвигая защелки — они очень хрупкие и могут быть повреждены при излишнем применении силы. Постепенно отщелкивайте клипсы и придерживайте решетку. Когда закончите со всеми — снимите ее.

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

Дальнейшие действия нарушат гарантию на вашу консоль! С другой стороны, если вы решились самостоятельно узнать, как разобрать Xbox 360 1439 модели, то, скорее всего, она уже истекла.

2. Отсоединение боковой крышки

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

Удерживайте рукой две части корпуса, подложите между ними что-то: карандаш, губку — что-либо, способное предотвратить их соединение в момент, когда вы будете работать в другом месте.

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

3. Снятие лицевой части корпуса

Разборка Xbox 360 Slim далее подразумевает снятие передней части корпуса. Делается это очень просто: поставьте консоль передом к себе. В верхней части консоли найдите клипсу — самую близкую к передней части корпуса. Отсоедините ее. Переверните консоль и проделайте ту же операцию в нижней части игровой приставки.

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

4. Путь к материнской плате

Сняв переднюю часть корпуса, найдите RF-модуль и 2 болта Т8 на нем. Открутите их, используя соответствующую отвертку, после чего снимите модуль. Он будет подсоединен к специальному USB-коннектору.

Далее — отсоедините от консоли Wi-Fi модуль, который держится на одном болте типа Т10 и вставлен в специальный USB-разъем.

Переверните консоль вверх «оголенной» боковой частью консоли. Один болт будет прикрыт гарантийной наклейкой — снимите ее и выкрутите 5 болтов типа Т10, которые вы там найдете. Переверните консоль и снимите крышку с противоположной части игровой приставки.

5. Освобождение материнской платы

Вы увидите «внутренности консоли» — начнем с оптического привода. Отсоедините два кабеля: один соединяет его с материнской платой, второй обеспечивает питанием. После этого можно свободно снимать оптический привод.

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

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

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

Вернитесь к материнской плате и снимите металлические фиксаторы дисковода.

6. Извлечение материнской платы

Возьмитесь за радиатор на материнской плате и вытащите материнскую плату, переверните ее.

Важно! Кладите плату только на мягкие и гладкие поверхности, чтобы не повредить!

Снимите Х-образный металлический фиксатор, поддевая его надфилем, переверните материнскую плату и снимите радиатор.

Полный разбор Xbox 360 S окончен!

Защита и взлом 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 заставляет процессор «пойти» по другой ветке и продолжить загрузку, даже если хеш-сумма неверна:

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

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

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

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

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

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

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

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

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

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

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

Всё? Нет, не всё. Далеко не факт, что атака сработает с первого раза (особенно на 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»:

Теперь при попытке за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):

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

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

http://conser.ru/articles/page/kak-razobrat-xbox-360-slim/
http://m.habr.com/ru/post/500246/

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *