...

суббота, 11 апреля 2020 г.

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


В прошлый раз мы оставили сцену Xbox 360 на моменте, когда разработчикам стало очевидно, что защита DVD-ROM легко обходится, и с этим точно нужно что-то делать. Попытки исправить ситуацию обновлением ПО самой приставки не увенчались успехом, и на поле битвы вступила компания Philips & Lite-On, DVD-приводы которой с каждой новой моделью становились всё более продвинутыми в плане защиты. Но и методы взлома с каждым разом становились всё более и более изощрёнными. В этой части я расскажу, как в Microsoft пытались исправить ситуацию с нелицензионными дисками, и до каких методов прошивки DVD-привода можно докатиться, когда закрыто буквально всё.

Встречаем — PLDS DG-16D2S 74850c


Привод Philips & LiteOn DG-16D2S начали ставить в игровые приставки в 2008 году, и ставили его аж до самого 2011 года, когда вышла новая, «slim» версия приставки. Вот наш герой:

Конечно же, исследователи сразу за него взялись и выяснили:
  • привод очень похож на прошлую модель, Philips & Benq VAD6038
  • прошивка хранится внутри контроллера, программатором не считать
  • в сервис-режим не заходит, даже на чипсетах VIA

Даже сам контроллер MT1319 на плате залит компаундом:

Было похоже, что Microsoft наконец сделали «невзламываемый» привод и всем придётся несладко. Однако спустя некоторое время разработчик модифицированных прошивок для Xbox 360 c4eva сообщил, что привод поддаётся и уже ведётся разработка кастомной прошивки:

c4eva: i have found some things that are not yet known about the lite-on, it will be done!

Не хочу ждать, меняем!


Пока кастомная прошивка разрабатывалась (а разрабатывалась она почти полгода), люди хотели прошивать «здесь и сейчас». И в конце августа 2008 исследователи нашли интересный трюк:
  • Включаем приставку
  • Открываем лоток DVD-привода
  • Выдергиваем питание DVD-привода
  • Задвигаем лоток на середину
  • Вставляем питание привода

После этих магических действий, привод выплёвывает в UART свой секретный ключ! Оставалось собрать простейший переходник COM-UART на одном транзисторе и ткнуть им в точку на плате в момент включения питания:
(исторически достоверная реконструкция с применением адаптера с тех самых времён)

По моим предположениям, эту «фичу» оставили для сервисных центров, чтобы можно было легко заменить привод на новый в случае поломки. Иного объяснения наличия такого функционала придумать сложно.

Как только ключ получен, можно его записать в прошиваемый б/у привод, поменять ему имя на «PLDS DG-16D2S» и играть как ни в чём не бывало! (Первые ревизии Xbox 360 не славились надёжностью, потому на рынке было много б/у приводов TS-H943, снятых с полумёртвых приставок). Этот шаг сильно аукнулся в будущем, но на тот момент геймеры были довольны.


Во всей этой идиллии была проблема, причём пришла она оттуда, откуда не ждали. В чём суть — у Xbox 360 привода кабель питания нестандартный и короткий:

На штекере есть небольшие выступы для правильной ориентации в разъёме:

Операцию чтения ключа удобно проводить «на спинке», когда привод вверх тормашками. Но не слишком гибкий кабель питания при этом перевернуть забывали, длины ограничителей на штекере не хватало, в итоге 12 вольт уходило совсем не на те контакты, и из платы вылетал магический дымок…

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

Ура, прошивка!


Итак, почти после полугодового ожидания, на рождественские праздники c4eva выпустил релиз прошивки iXtreme 1.5, из которого мы узнали:
  • c4eva и его команда считали прошивку растворением корпуса чипа
  • Ключ читаем по-прежнему методом полузадвинутого лотка
  • Чтобы зайти в сервис-режим и записать прошивку, нужно стереть привод!

Я был уверен, что фотография с полурастворённым MT1319, подключенным к программатору, у меня имеется, но так и не смог её найти. Как только отыщу, добавлю её вот прям сюда (если у кого есть, пришлите, please).

Особенность «стереть перед записью» приводила к проблемам у народа — компьютер мог зависнуть, уйти в BSOD. Даже если всё «пошло так», после стирания привод, естественно, не определялся системой и входить в сервис-режим приходилось «вслепую». В общем, нервов с ним потрепали люди изрядно.
Встречались экспериментаторы, нажавшие кнопочку «стереть» просто из любопытства, не считав перед этим ключ, даже несмотря на предупреждения:


Но основная цель была достигнута — «непрошиваемый» LiteOn наконец стал прошиваемым, а умельцы с прямыми руками могли прошить привод самостоятельно.

DG-16D2S 83850c


Конечно же, в Microsoft спохватились и стали ставить в приставки привод с новой версией прошивки, 83850с, в которой функционал чтения ключа по UART уже не работал.

Удивительно, но обнаружилось, что LiteOn 83850c отдавал ключ по SATA, причём с тем же колдовством с полуоткрытым лотком! Foundmy.com выпустили утилиту LO83info, что читала ключ, но выдавала его в зашифрованном виде. Предлагалось отправить ключ авторам на почту и за $42 получить расшифрованный вариант.


Программа продержалась аж четыре дня, после чего Maximus и Geremia выпустили бесплатный дешифратор ключей :) Сколько за эти дни успели заработать авторы — неизвестно.

DG-16D2S 93450c


Халява с лёгким чтением ключей не могла долго продолжаться — вскоре начали попадаться LiteOn 83850c v2, которые не поддавались на уловки LO83Info, а затем в приставки и вовсе стали ставить LiteOn 93450c. Все способы чтения ключа закрыты, без ключа приставку не прошить…

Грустили недолго, энтузиасты обнаружили вот такую аппаратную багу:

  • отрезаем часть дорог питания
  • припаиваем через выключатель резистор 22 Ом
  • замыкаем питание через 22 Ом на GND!

В результате, напряжение на флешке внутри процессора настолько проседало, что вместо данных считывались одни 0xFF, привод был уверен, что прошивка уже стёрта и заходил в сервис режим! Ну а после входа в сервис-режим оставалось только разомкнуть резистор и считать флешку целиком:

Этот метод «прошивки» погубил ещё больше приводов, чем UART. Представьте, что может сделать школьник с советским паяльником в попытке припаять два проводка по схеме? Вот так это должно быть:

А вот такое можно было встретить на форумах:


Ну и поскольку уязвимость аппаратная, никаким обновлением прошивки Microsoft это поправить уже не могли, LiteOn DG-16D2S окончательно перешли в разряд прошиваемых приводов.

Совсем грустить перестали, когда обнаружили ещё более интересный хак:

  • включаем привод
  • отключаем линию питания 3.3в (линия 1.8в остаётся активной)
  • заземляем точку MPX01
  • включаем 3.3v
  • заходим в сервис и читаем ключ из ОЗУ!??


Точка MPX01 в приводе отвечает за то, будет ли расшифровываться прошивка при запуске. Замыкая её на GND, мы заставляем привод пропускать этап расшифровки, из-за чего он пытается запустить мусор и уходит в ошибку. И уже из этого состояния он разрешает зайти в ограниченный сервис-режим и считать ОЗУ! А за счет того, что 1.8v мы не убирали, ОЗУ не сбросилось и там до сих пор лежит наш ключ. Вот такие дела.

Новинка — PLDS DG-16D4S 9504


Вместе с Slim версией приставки в Xbox 360 обновился и DVD-привод. Изменился даже дизайн дисковода, у него пропали ноги и он стал ещё более похож на кирпич:

Контроллер привода также поменялся, теперь всем рулил чип MT1335

Удивительно, но новую модель, в отличие от предшественника, можно было считать и записать без каких-либо проблем. С этим быстро разобралась команда Maximus. Впереди планеты всей они выпустили утилиту для чтения/записи ключа/прошивки под названием «Tarablinda»:

И пока c4eva занимается разработкой… люди снова пихают прошиваемые б/ушные приводы старых моделей! Подрезав ноги и исковеркав корпус:

А вот возьмём и заблокируем!


На этот раз в Microsoft решили подойти с другой стороны. Раз люди всё равно находят способы прочитать ключ, давайте запретим его перезапись! В новых приставках начали обнаруживать приводы DG-16D4S версий 0225, 0401 и 1071, в которых внутренняя SPI флеш-память была залочена!
Блокировка была выполнена с использованием статус-регистра и ноги WP флеш-памяти:

Но и здесь придумали способ, очень похожий на то, как побороли LiteOn 93450c:
  • отрезаем дорогу питания
  • включаем привод, заходим в сервис
  • тыкаем резистором 18 Ом к отрезанному
  • подаём команду разблокировки!


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

Для Winbond же придумали ещё более безумный метод разблокировки.

Дело в том, что процессор DVD-привода не являлся цельным. Сверху на нём бутербродом был приклеен чип той самой флеш-памяти, соединённый с основным кристаллом тонкими проводками. И нужный нам проводок Write Protect (WP), несмотря на то, что был намертво заведен на заземление, довольно удачно находился выше всех остальных:


Возникла идея как-то его перерезать, а затем подать команду разблокировки. И да, именно здесь народ пошёл аккуратно и точно сверлить чип миллиметровым сверлом!

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

или так:

Но всё было не настолько плохо — чипы MT1335WE после (или вместо) неудачной разблокировки можно было перепаять на совместимые MT1339E с внешней флешкой, снятые с китайских дисководов:

Итог — снова победа не на стороне Microsoft, диски пишутся, приводы прошиваются.

AP 2.5, XGD3, ...


Microsoft не только улучшали прошивки приводов, но и дорабатывали защиту самих дисков с играми. И здесь они оторвались по-полной:

Во-первых, был изменён формат самого диска. Старый формат XGD2 вмещал, как и обычный двухслойный DVD, около 7.5 ГБ данных. Новый же XGD3 использовал чуть большую площадь диска, почти до самого края, за счёт чего влезало уже 8.5 ГБ данных. Обычными средствами «болванки» так записать нельзя.


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

Интересно, что этим способом были защищены только несколько популярных игр

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

  • LiteOn D2S обновились и закрыли простые методы чтения ключа
  • Ранее прошиваемые LiteOn D4S 9504 обновились и заблокировались на запись
  • Тем, у кого приставки были «прошиты» нормально — пришлось «прошивать» заново
  • Кто менял привод на другую модель — получили ошибку и нерабочую приставку


В очень старых DVD-приводах Samsung TS-H943 нельзя было реализовать проверки AP 2.5, поэтому в их обновлении была добавлена только поддержка формата XGD3. Больше всего не повезло игрокам, кому при прошивке LiteOn заменили на Samsung — приходилось искать новый привод и менять обратно. Очень обидно было и владельцам LiteOn D4S 9504, им пришлось разблокировать чип для повторной прошивки.

Но и здесь всё обошли. Обнаружилось, что 7.5 ГБ не предел и на обычные двухслойные болванки вполне реально записать 8 ГБ и больше, что и требовалось для XGD3 игр. На обычных пишущих дисководах запись шла не до конца (на 97%), насколько хватит места — такие диски тоже работали, хоть и имелась угроза обнаружения и последующего бана. В дальнейшем c4eva выпустил программу с поддержкой некоторых компьютерных DVD-резаков, которая обманывала привод, снимала ограничения и заставляла его писать всю поверхность диска:


c4eva сделал и прошивку для приводов Xbox 360 — iXtreme LT+ для обхода новых защит — готовые ответы прямо из файла dae.bin записывались на диск с игрой, прошивка отвечала «по шаблону», все довольны. Но и в Microsoft поступили довольно очевидным образом — в очередном обновлении системы меняли dae.bin, пиратки переставали работать, диски приходилось патчить и записывать заново:

Спустя некоторое время, c4eva призадумался, и сказал, что придумал, как решить AP 2.5 раз и навсегда, мол, ждите iXtreme LT+ 3.0. Кстати, к тому моменту количество вопросов «ну когда уже новая прошивка??» в каналах IRC, где сидел c4eva настолько возросло, что кто-то сделал целый сайт c4evaspeaks.com, где сохранялись все его цитаты (буквально все!) и новости на тему прошивок:


В iXtreme LT+ 3.0 вместо ответа «по шаблону» использовались специальные данные о геометрии диска. По факту, лицензионный диск сканировали, генерировали и записывали на диск с игрой специальную «карту», по которой прошивка вычисляла и правильно отвечала на любые запросы AP 2.5.

На этом эпопея с AP 2.5 закончилась победой c4eva и его прошивок. Были попытки банить игроков, у которых сработали AP 2.5 проверки, но то ли баны зацепили и честных игроков, то ли доказать факт пиратства и 100% надёжности проверок не удалось, но баны тоже прекратились.

Легенда — PLDS DG-16D5S 1175


Финальную точку в борьбе за приводы поставил LiteOn DG-16D5S:

В нём стоял контроллер MT1332E, который не входил в сервис режим известными способами, и, по слухам, ключ хранил не в ПЗУ:

Были попытки чтения ПЗУ, растворив корпус и подпаявшись проводками:

Да, внутри него тоже находился бутерброд из проца и флешки:

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

Вместо этого c4eva разработал прошивку iXtreme LTU (Lite Touch Ultimate), которая использовала данные, извлечённые из самой приставки (через взлом самой системы) и требовала замены печатной платы привода. Кастомная печатная плата в точности повторяла плату от 16D5S, но процессор на ней можно было перепрошить:


Более предприимчивые «мастера по прошивке» самостоятельно выходили на поставщиков разблокированных MT1332 и просто перепаивали чип на плате. Эти чипы снимали с китайских DVD-проигрывателей на таком же чипе:

Вскоре чипы MT1332 банально закончились! Тогда команда Maximus разработала необычную вещь — Cryptocop:

Этот чип, присобаченный сбоку платы, делал магическую вещь — при старте грузил новый бутром в MT1335/MT1339, после чего прошивка LTU, предназначенная для MT1332 прекрасно запускалась и работала. Ну а чипов хватало — MT1335 снимали с б/у приводов предыдущей модели, 16D4S, MT1339 — с китайских дисководов или у поставщиков. Нормальную версию LTU под MT1339 c4eva компилировать отказывался (иначе люди просто ставили бы старые приводы и не покупали бы их платы).

А вот когда уже запасы LTU плат кончились, c4eva сделал потрясающий финт ушами — он скомпилировал прошивку iXtreme LTU2 под чип MT1319! Этот процессор стоял в самых первых LiteOn с «толстых» приставок. И да, они начали клепать и продавать новые LTU2 платы:


Ну и, наконец, к празднику подключились китайцы, начавшие делать платы на базе MT1309, более распространенного собрата MT1319 с внешней флешкой:

Эра прошивок Xbox 360 завершилась, когда вышла новая ревизия консоли, на которой нельзя достать ключ ни из системы, ни из DVD-привода. Но об этом в следующей части!

Защита и взлом Xbox 360, Часть 1
Защита и взлом Xbox 360, Часть 2

Любые детали, подробности, нюансы — спрашивайте в комментариях!

Let's block ads! (Why?)

Комментариев нет:

Отправить комментарий