Оригиналът е на Eaton Zveare, 24-ти януари 2023 година
През 2005 г. Xbox 360 излезе на пазара в два модела – Core и Pro. Core бе евтин модел, който позволяваше стартирането на игри от оптичен диск, докато Pro съдържаше 20 GB твърд диск, което по онова време беше повече от достатъчно за съхраняване на най-различно изтеглено от интернет съдържание и друга допълнителна информация. Твърдият диск винаги е бил опционален аксесоар, но бързо се превърна в необходимост за геймърите, които искаха да записват профилите си и да изтеглят съдържание и игри за Xbox Live. Недостатъкът бе, че твърдите дискове под бранда Xbox 360 бяха скъпи. По време на излизането на конзолата хард дискът с капацитет 20 GB струваше 99 долара! Според стария справочник на AnandTech за цените от ноември 2005 година, можете да си купите 80 GB твърд диск за персонален компютър за 57 USD. Дискът за Xbox 360 се продаваше с наистина голяма надценка.
Разбира се, модърите и хакерите веднага започнаха да проучват възможността за използване на обикновени външни твърди дискове, за да си осигурят по-голямо количество постоянна памет на ниска цена. За съжаление, те скоро разбраха, че този проблем изобщо не е лесен за решаване.
Проверка на автентичността в режим на ядрото
Всеки оригинален харддиск на Xbox 360 съхранява в сектор 16, наречен „защитен сектор„, уникален фрагмент от данни, който съдържа следната информация:
Данните в сектора за защита се обработват от специална функция на кернела, която се нарича SataDiskAuthenticateDevice. В декомпилатора и дебъгера IDA тя изглежда по следния начин:
Ето я и декомпилираната версия:
Функцията не е особено сложна. Тя започва с извикването на IoSynchronousFsdRequest. Тази функция идва още от първата конзола Xbox и във Windows я няма и не може да бъде намерена. На практика тя извършва асинхронно запитване на входа и изхода, след което изчаква неговото завършване. В този случай това е четене на сектор 16:
След изпълнението на тази функция Buffer ще съдържа данните от сектора за защита, а ако четенето по някаква причина се окаже неудачно, то тя връща значението за грешка E69 . Това се случва, ако например хард дискът не е добре включен, ако вече е остарял и започва да дава грешки и т.н.
Когато секторът за защита е зареден в паметта, започва проверката за неговата истинност. Всички хард дискове подават своя сериен номер, версията на фърмуера и номера на модела, което става с помощта на командата IDE_COMMAND_IDENTIFY_DEVICE. Данните, които съобщава фърмуерът се сравняват с тези, които са записани в защитния сектор на хард диска. Това се извършва с помощта на специалната вспомагателна функция с име SataDiskEqualAuthenticationStrings, която на практика работи като добре познатата стандартна функция memcmp за проверка равенството и еднаквостта на байтовете.
Ако някой от тези три реда не съвпада, то проверката не е минала. Вероятно си мислите, че би трябвало да е много лесно просто да се замени този защитен сектор по такъв начин, че той да съответства на данните във фърмуера на конзолата? Не, за съжаление целият този сектор има RSA подпис с частен ключ, притежаван единствено от Microsoft. Това означава, че ако измислим някакъв метод да променим защитния сектор по такъв начин, че той да съответства на информацията от фърмуера, той няма да може да мине криптографската проверка. Ето как изглежда проверката на RSA сигнатурата:
Начините за решаването на този проблем
Ако не ви се иска да давате пари за оригинален хард диск за Microsoft Xbox 360 и искате да поставите в конзолата някой свой HDD, то има два начина да се направи това.
HDDHackr
Тъй като защитният сектор е невъзможно да бъде променен по такъв начин, че да съответства на информацията от фърмуера на конзолата, то единственото възможно решение е да бъде променен фърмуерът на избрания хард диск, за да съответства на защитния сектор. Тала бе създадена програмата HDDHackr – приложение за MS-DOS, което променя фърмуерите на хард дисковете на Western Digital по такъв начин, че те започват да се възприемат като други. Така например, ако в защитния сектор се вижда, че дискът е на Hitachi, програмата HDDHackr променя фърмуера на този HDD по такъв начин, че той започва да подава информация като диск на Hitachi.
Но HDDHackr има редица ограничения:
- Програмата повече не се поддържа и работи само със стари персонални компютри
- Появи се информация, че HDDHackr не работи добре с новите хард дискове на Western Digital
- Приложението не може да работи с хард дискове с капацитет над 500 GB. Това е важно, понеже този защитен сектор ограничава броя на адресируемите сектори, а и явно заради това Microsoft предлагаше HDD с максимален капацитет до 500 GB
Модинг на конзолата
Ако сте използвали HDDHackr, то за поставянето на свой собствен хард диск се налага да изтеглите оригиналния защитен сектор от интернет. Така например, когато през 2014 година излязоха HDD с капацитет 500 GB, общността на модерите веднага публикува двоичния файл с цялостната информация от защитния сектор. По този начин стана възможно потребителите да го записват като сектор 16 на своите дискове с капацитет 500 GB и успешно да ги използва в конзолата. Само че кой да се досети, че през цялото време Microsoft събираше цялостната информация за хард дисковете на потребителите? По-късно стана ясно, че Microsoft получава следната информация за всеки хард диск на конзолата:
- Неговият сериен номер
- Версията на фърмуера
- Номера на модела
- Адресираните от потребителя сектори
Ясно е, че Microsoft има необходимата информация за всяка свързана с Xbox Live конзола, към която е включен обработен чрез някой от горните хакерски методи твърд диск. Корпорацията много добре вижда, че десетки хиляди конзоли използват абсолютно един и същ диск, който е всъщност външен диск, в който е записана изтеглената от интернет информация за защитния сектор. По принцип, хард дисковете на Xbox 360 могат да се използват в различните конзоли и в този случай Microsoft ще види, че в няколко конзоли се използва един и същ HDD, и това няма да е някакъв тревожен сигнал. Само че когато се появява информация за използването на съвсем един и същ хард диск едновременно в стотици или хиляди конзоли, то става очевидно, че се използва хакнат диск.
Microsoft елементарно би могла да блокира конзолите с хакнат HDD, но отникъде не се появи информация за нещо подобно.
Проверката на логотипа
Ако сте успели внимателно да изучите структурата на HDD_SECURITY_BLOB в началото на тази статия, може би сте забелязали LogoBitmapDigest. Веднага след защитния сектор номер 16, в сектор 17 се намира PNG изображението на стария логотип на Microsoft:
Интересен факт: според вградените в това изображение метаданни може да се разбере, че то е създадено с помощта на Macromedia Fireworks MX 2004 на 19-ти юли 2005 година. Xbox 360 излезе на 22-ри ноември същата година. След като внимателно изучих образците както на старите, така и на новите защитни сектори, стигнах до извода, че именно това конкретно изображение се използва във всеки защитен сектор на всеки хард диск.
Логотипът се използва при показването на хард диска в настройките на Xbox 360:
Само че Microsoft е така загрижен за своя логотип, че го е хеширал като SHA1. И още, този хеш има RSA подпис в защитния сектор, а това означава, че е невъзможно да бъдат променени нито хеша, нито логотипа.
Може би Microsoft е възнамерявал да разреши на външни производители да продават хард дискове за Xbox 360 под техните собствени брандове, точно както днес Seagate продава разширителните карти Xbox Series X|S. Навярно софтуерният гигант е възнамерявал да промени този логотип с логотипа на някой външен производител. Това са само предположения – напълно е възможно Microsoft просто да е искал потребителят да се чувства по-уверено след като знае, че притежава оригинална конзола.
Забавления с логотипа
В хакнатата или по-точно, преминалата модинг конзола, е възможно оригиналният логотип да бъде заменен с произволно изображение, понеже в нея криптографските проверки се прескачат и не се изпълняват. По-горе е показано едно от много популярните изображения от подобен род. Виждаме, че хард дискът е с име Retail, но това е възможно само в модифицираната по определен начин конзола.
Искам специално да подчертая, че това са оригинални скрийншоти, а не фотошоп.
Печалните грешки
Защитният сектор се намира в самото начало на хард диска. Ако този диск го включим към нормално работещ компютър с операционната система Windows и го погледнем с помощта на Disk Management, то той се вижда като Not Initialized, понеже Windows не разпознава и не може да работи с начина на разделянето на твърдите дискове на дялове от страна на Xbox 360. Ще се появи и изскачащ прозорец, в който се предлага дискът да бъде инициализиран в MBR или GPT формат, за да бъде подготвен за разделяне на дялове, подходящи за инсталирането на ОС Windows:
За съжаление, в този случай натискането на бутона ОК ще има фатални последствия. Защитният сектор на HDD на Xbox 360 ще бъде презаписан и заменен с таблиците за дяловете на Windows (Windows partition tables). Ако не сте си направили резервно копие, този диск никога повече няма да може да работи на Xbox 360 без модинг или хакване. Непрекъснато получавам имейли за подобни случаи и ми е доста мъчно да казвам на хората, че подобен диск вече е невъзможно да бъде спасен и възстановен. Но този проблем стана толкова разпространен, че през 2015 година добавих в помощната програма на FATXplorer автоматично резервно копиране на сектора за защита. Още при стартирането си програмата прави резервни копия на всички защитни сектори на всички открити от операционната система хард дискове.
За съжаление, към датата на публикуването на този материал, това не спаси нито един хард диск. Не знам защо, но всички някак случайно инициализират и дори форматират своите дискове преди да стартират FATXplorer, а това няма как да свърши работа и от гледна точка на Xbox 360 тези дискове са вече безполезни. Ако все още играете с помощта на Xbox 360, замислете се за едно резервно копиране на защитния сектор в хард диска на конзолата!