
Личное исследование архитектуры Xbox Series
| Поле | Значение |
|---|---|
| Дата | 9–12 марта 2026 г. + 7–? июля 2026 г. |
| Оборудование | Xbox Series S (кодовое имя: Lockhart) |
| Сборка ОС | 26100.7010.amd64fre.xb_flt_2602ge.260212-1010 + 26100.8561.amd64fre.xb_flt_2606ge.260609-2200 |
| Метод доступа | Режим разработчика + SSH + REST API + junction файлового ресурса NTFS |
Этот отчёт представляет собой статический и динамический анализ внутренней архитектуры Xbox Series S, выполненный полностью через официальную инфраструктуру режима разработчика Microsoft. Никакие эксплойты или нарушения политики не использовались; весь доступ осуществлялся в рамках индивидуальной программы разработчика.
В нём содержатся сведения о компонентах от самого высокого уровня, используемых для игрового процесса, до компонентов системных драйверов самого низкого уровня. Ожидается, что большинство этих сведений будет одинаковым и для Xbox One.
ИИ был использован для очень быстрого форматирования большого первоначального исследования (более 200 результатов анализа и более 50 случайных заметок) в этот документ. Все последующие правки вносятся вручную.
Если вы считаете, что какой-либо пункт неясен, недостаточно задокументирован или ложен, не стесняйтесь написать мне, или если у вас есть ответы на мои вопросы (в разделе 12), это тоже будет хорошо. GUID и другие распространённые шаблоны удаляются в pre-commit hook на случай, если я оставлю что-то, идентифицирующее мою учётную запись.
Многое из того, над чем я работаю, основано на предположениях, поэтому это может быть неточно и будет меняться по мере получения дополнительной информации и изучения других бинарных файлов.
По причинам, которые вы, вероятно, понимаете, я ни при каких обстоятельствах не буду делиться непосредственно бинарными файлами, выводами дизассемблирования или чем-либо, что считается интеллектуальной собственностью Microsoft или её дочерних компаний.
ERA = GameOS Partition
SRA = SystemOS Partition
HT = Kinect (possibly "Human Tracking"?)
Arden = Xbox Series X/S GPU Stack
NewBe = Arden shader compiler
Управление драйверами Host OS существует за пределами известной модели SRA/ERA, см. модель доверия (разделы 4.2, 17.5). XVIO.SYS и XSraFlt.sys загружаются напрямую гипервизором (через HostOS) до инициализации Windows и отсутствуют во всех доступных томах. Их невозможно изменить даже при полном доступе к ядру, что является основной границей безопасности.
HVCI намеренно отключён (раздел 18). IsSecureKernelRunning = 0x0 подтверждает, что Secure Kernel (VTL1) не работает. Проверка целостности кода осуществляется только во время загрузки, что оставляет окно TOCTOU после отображения бинарных файлов. Это осознанный компромисс в пользу производительности; границей безопасности является раздел гипервизора, а не защита памяти внутри раздела.
NTFS junction открывает всю файловую систему SystemOS по сети (раздел 1.2). Одна команда mklink /J из SSH-оболочки отображает C:\ или любой другой путь в файловый ресурс Device Portal, делая каждый системный бинарный файл доступным для чтения удалённо без дополнительной аутентификации, кроме PIN-кода режима разработчика.
Архитектура межраздельного взаимодействия почти полностью картирована (разделы 4, 14, 26-28). Игровой раздел ERA общается с SystemOS исключительно через каналы, опосредованные гипервизором: кольцевые буферы XVIO для ввода-вывода, трансляция GPA для общей памяти, HvSocket для IPC и секции порта ALPC для доставки кадрового буфера с нулевым копированием, предоставляемые родительской "Host OS".
Junction Deploy:\ обходит ограничения локального доступа (раздел 25). Том Windows Update доступен только через сетевой ресурс (S:\Deployment\SoftwareDistribution\) из-за некоторого расхождения где-то (возможно, xrfssvc.exe?).
Большинство бинарных файлов имеют просто строки описания; я не знал этого до сегодняшнего дня, поскольку не использовал Windows ни для чего, кроме самого подключения к консоли. Часто это скучно (например, XVUH, XVMCTRL), но в других случаях это очень информативно (например, Durango Virtual XVNC Bus Driver, Xbox Remote File System Service).
Все тесты проводились на одном розничном Xbox Series S в режиме разработчика. Результаты отражают множество сборок, однако со временем я сделаю diff этих сборок и напишу об этом. Результаты могут различаться в зависимости от ревизий оборудования (Series X, Xbox One) и версий прошивки. Некоторые поверхности уровня ядра были недоступны: живые дампы ядра блокируются ограничением NoKernelDumps, а поверхность IOCTL xvmctrl.sys не была полностью перечислена. Открытые вопросы отслеживаются в разделе 12.
Доступ был установлен через недокументированный (официально, но есть документация сообщества) SSH-интерфейс Dev Mode. Метод NTFS junction (раздел 1.2) расширил доступ на чтение от рабочей области D:\DevelopmentFiles до полного системного тома C:\ и всех дополнительных томов с буквами. Весь анализ был только на чтение; никакие системные настройки не изменялись (WdConfig.exe set не использовался). Xbox может запускать стандартные консольные бинарные файлы Windows x86_64 (скомпилированные с /MT) напрямую через SSH-оболочку, которая использовалась для локального запуска инструментов анализа.
Дампы ядра были недоступны: ограничение NoKernelDumps Device Portal блокирует их в розничном режиме разработчика. Пользовательские живые дампы процессов были доступны и использовались там, где это уместно.
Xbox Dev Mode поддерживает Visual Studio, это работает через SSH:
DevToolsUserDevice Portal по адресу https://XBOX:11443 открывает скрытый файловый ресурс NTFS для D:\DevelopmentFiles. Из SSH-оболочки:```batch
mklink /J D:\DevelopmentFiles\C C:\
Это создаёт точку соединения (junction) из рабочего пространства разработчика к корню системного диска C:, предоставляя всю файловую систему SystemOS как доступную для чтения сетевую папку по адресу:
\\XBOX\DevelopmentFiles\C
Это позволяет запускать такие инструменты, как `dumpbin`, с ПК напрямую против системных двоичных файлов Xbox по сети.
---
## 2. Идентификация ОС
| Поле | Значение |
|--------------------|-------------------|
| Название продукта | Xbox Series S |
| Выпуск ОС | SystemOS |
| Версия Windows NT | 10.0 |
| Номер сборки | 26100 |
| Строка сборки | `26100.8561.amd64fre.xb_flt_2606ge.260609-2200` |
| Версия LCU | `10.0.26100.8536` |
| Ветка | `xb_flt_2602ge` |
| Дата сборки | June 09, 2026 |
| Архитектура | x64 |
| Безопасная загрузка UEFI | `NotCapable` |
| Кодовое имя консоли | Lockhart |
| Режим консоли | Default |
| ID песочницы | `XDKS.1` |
ОС идентифицируется как **SystemOS**, а не Windows. Ветка сборки `xb_flt_2602ge`, судя по всему, является отдельным «форком» Xbox кодовой базы Windows, всё ещё очень похожим на Windows 11. Некоторые системные двоичные файлы Windows побитово идентичны своим аналогам для настольных ПК, собраны тем же инструментарием MSVC и, вероятно, происходят из одних и тех же пакетов UUP. Это отдельно от неясной «Host OS».
### 2.1 Идентичность в реестре
Некоторые поля `CurrentVersion` были намеренно заморожены, как и в настольной Windows (в данном случае для совместимости с играми Xbox One):
| Ключ | Значение | Примечания |
|-----|-------|-------|
| `CurrentVersion` | `6.3` | Внутри сообщает Windows 8.1 для совместимости |
| `BuildGUID` | | обнулён/зачищен |
| `InstallDate` | `0` | нет отметки времени установки |
| `EditionID` | `SystemOS` | Никогда не обновляется |
| `ReleaseId` | `2009` | Заморожено на эпохе Windows 10 20H2; никогда не увеличивалось |
---
## 3. Структура томов
Консоль предоставляет 13 букв дисков, большинство из которых, как предполагается, [как и у Xbox One, полностью виртуальны](https://xboxoneresearch.github.io/wiki/operating-system/xbox-operating-system/)
| Диск | Метка | Содержимое | Примечания |
|-------|-------|----------|-------|
| `C:` | System Boot | Файлы ОС Windows | Стандартный раздел SystemOS |
| `D:` | *(нет)* | `DevelopmentFiles\` | Рабочее пространство режима разработчика |
| `G:` | *(нет)* | `GameDVR_VideoBuffer` (272MB), `GameDVR_AudioBuffer` (16MB), `GameDVR_AudioBuffer_SysLoopback` (3MB) | Сырые кольцевые буферы захвата, разделяемая память между ERA и SystemOS |
| `J:` | Sys Tools | Инструментарий XTF, драйверы, QuickActions | См. раздел 5 |
| `M:` | Misc | Содержит специфичные для консоли NTFS-оверлеи для библиотек и драйверов | Раздел System OS? |
| `N:` | *(нет)* | `BlackBox\`, `EtwPlus\`, `CMS\`, `errorstrings\`, `usersettings\` | Диагностический и телеметрический раздел, см. раздел 3.2 |
| `Q:` | *(нет)* | `Users\DevToolsUser\` | домашний каталог пользователя |
| `S:` | *(нет)* | `apps\`, `Clip\`, `Deployment\`, `Prefetch\`, `Microsoft\`, `ProgramData\` | вероятно, раздел Host OS (также содержит стандартные приложения и другие ресурсы) |
| `T:` | *(нет)* | `GameDVR\`, `Update\`, переходы к Harddisk16 | Метаданные GameDVR + конвейер обновлений |
| `U:` | *(нет)* | `ShellState\`, `BackCompatLicenses\`, `UserDataCache\` | Состояние оболочки и пользователя |
| `V:` | *(нет)* | *(пусто)* | Неизвестное назначение |
| `X:` | SystemAux | `Apps\`, `Catalog000.bin` (2.3MB) | Двоичные файлы системных приложений: 63 приложения, включая `AdsLauncher`, `Xbox.DiscordComponent`, `Xbox.SingleUserProxy`, `Xbox.NTSCaptivePortal`, `Xbox.Xmap`, `Xbox.XboxIDP`, см. раздел 3.3 |
| `Y:` | SystemAuxF | `Apps\`, `Catalog000.bin` (6.5MB) | Вторичные двоичные файлы системных приложений |
Кроме того, существует `\\.\HarddiskVolume10` без назначенной буквы диска. Есть скрытый раздел WER (Windows Error Reporting), содержащий `CrashDumps\`, `ReportArchive\`, `ReportQueue\` и `Temp\`. Существует как минимум **18 объектов физических дисков** (`PhysicalDrive0`–`PhysicalDrive17`), все присутствуют как объекты ядра, но недоступны на сыром уровне из пользовательского пространства. `HarddiskVolume16` и `HarddiskVolume18` существуют как реальные доступные тома, но заблокированы для `DevToolsUser`.
### 3.1 Скрытые пути устройств ядра
Следующие пути существуют как объекты устройств ядра, но недоступны из пользовательского пространства (обычно):
- `\??\Deploy:\` раздел конвейера обновления/развёртывания Xbox (доступен через переход по сетевой папке `S:\Deployment\`)
### 3.2 Диагностический раздел N:\
Несколько каталогов на `N:\` активно скрываются драйвером-фильтром файловой системы на уровне ядра: они выглядят пустыми для всех инструментов пользовательского пространства, но подтверждено, что в них ведётся запись во время выполнения:
| Путь | Статус | Примечания |
|------|--------|-------|
| `N:\EtwPlus\` | **Скрыто ядром** | Содержимое скрывается драйвером-фильтром файловой системы |
| `N:\BlackBox\` | Доступно | Содержит специфичные для Xbox ETL-данные телеметрии о сбоях |
| `N:\errorstrings\en-US.json` | Доступно | Полная база строк ошибок Xbox содержит 797 записей, см. раздел 3.4 |
| `N:\usersettings\18\public\` | Доступно | Полнокачественное изображение игрока (gamerpic), хранящееся как PNG без расширения (1080×1080 RGBA, стандартный формат PNG) |
`N:\usersettings\18\public\` хранит и `AppDisplayPic`, и `GameDisplayPic` как файлы без расширения. Хеширование SHA256 подтверждает, что они побайтово идентичны: изображение приложения и изображение игрока — это один и тот же файл, записанный по двум путям.
### 3.3 X:\ SystemAux
`X:\ht\versions\` содержит активный стек компьютерного зрения Kinect с **тремя одновременными версиями**, установленными бок о бок (1.0.0, 1.0.1, 1.0.2), общим объёмом 119 МБ. Они соответствуют сборкам `vvtechs.dll` версий 1.67MB->1.70MB->1.85MB соответственно.
**Модели ML отслеживания тела** (по каталогам версий):
| Файл | Размер | Назначение |
|------|------|---------|
| `exemplardb.xmplr` | 36.7MB | База эталонов поз всего тела |
| `FernsModel.bin` | 932KB | Детектор ключевых точек глубины (классификатор random ferns) |
| `HeadPosition.mshdf` | 262–393KB | Оценщик положения сустава головы (меняется в зависимости от версии) |
| `LSVMGripReleaseRight.gbd` | 7.5KB | Латентный SVM-классификатор захвата/отпускания, правая рука |
**Модели ML отслеживания лиц** (системные, `C:\Windows\System32\ht\`):
| Файл | Размер | Назначение |
|------|------|---------|
| `FaceDetector.bin` | 3.0MB | Поиск лиц в кадре |
| `FaceRecognition.bin` | 3.4MB | Распознавание личности по глубине/ИК |
| `FaceRecognition_Color.bin` | 5.9MB | Распознавание личности по цветовому каналу |
| `ExpressionRandomForest.model` | 150KB | Классификатор эмоций |
| `EyeLeftRandomForest.model` | 55KB | Состояние левого глаза |
| `EyeRightRandomForest.model` | 65KB | Состояние правого глаза |
| `LookingAwayRandomForest.model` | 42KB | Определение взгляда/внимания |
| `MouthOpenRandomForest.model` | 58KB | Состояние открытого рта |
| `MouthMovedRandomForest.model` | 35KB | Движение губ |
| `FacialHairIRRandomForest.model` | 126KB | Растительность на лице (только ИК-датчик) |
| `GlassesIRRandomForest.model` | 206KB | Определение очков (только ИК-датчик) |
Все классификаторы атрибутов лица — это модели **Random Forest**. Выходные данные охватывают идентичность, выражение лица, взгляд, состояние губ и атрибуты внешности.
`vvtechs.dll` в этом стеке экспортирует единственную функцию: `NuiVisionCreateFactory`. Он импортирует `EtwPlus.dll` и `D3D11`, что подтверждает: конвейер компьютерного зрения Kinect работает на GPU и использует специфичный для Xbox путь телеметрии. Это активно на оборудовании без физически подключённого Kinect (см. также `KinectSensorEnabled=true` в разделе 6 и полный конвейер `nuiservice.exe` в разделе 33).
### 3.4 База кодов ошибок `N:\errorstrings\en-US.json`
797 записей строк ошибок Xbox. Примечательные коды, значимые с точки зрения безопасности или архитектуры:
| Код ошибки | Строка | Примечания |
|------------|-----------------|-------|
| `0x887E0002` | Несоответствие среды выполнения/драйвера D3D12.X | Подтверждает, что D3D12.X — это специфичный для Xbox вариант D3D12, а не универсальный D3D12 |
| `0x80A40406` | Расширенная телеметрия Microsoft включена в режиме разработчика | Режим разработчика явно переводит консоль в режим расширенного сбора телеметрии |
---
## 4. Архитектура гипервизора
В Xbox используется собственный гипервизор на базе Hyper-V с двумя разделами:
- **SystemOS** — раздел SRA
- **раздел ERA** — среда выполнения GameOS / Title OS
### 4.1 Стек драйверов
User space: xpal.dll
↓
Kernel: xpalk.dll
↓
xvmctrl.sys (364KB)
↓
Hypervisor: XVIO.SYS
### 4.2 Ключевые драйверы гипервизора
| Драйвер | Размер | Назначение |
|-------------------|---------|----------------------------------------------------------------------|
| `xvmctrl.sys` | 364KB | Управление виртуальными машинами, основной интерфейс гипервизора, поверхность IOCTL |
| `XVIO.SYS` | неизвестно | Xbox Virtual I/O, прямой ABI гипервизора (отсутствует в файловой системе SystemOS) |
| `xvioc.sys` | неизвестно | Клиент XVIO, интерфейс к XVIO на стороне SystemOS |
| `xvbus.sys` | 73KB | Корень виртуальной шины + провайдер HvSocket XVIO |
| `hvsocket.sys` | 185KB | Реализация Hyper-V socket |
| `VMNP.SYS` | 106KB | Называется «NPFS Driver», также обрабатывает имперсонализацию. |
| `Xrfs.sys` | 135KB | Драйвер файловой системы Xbox |
| `XRmnt.sys` | 49KB | Драйвер монтирования Xbox |
| `XRo.sys` | 95KB | Фильтр только для чтения Xbox |
| `VerifierExt.sys` | 274KB | Расширение Driver Verifier |
**Критическая находка:** `XVIO.SYS` и `xpalk.dll` **не имеют записей служб в реестре** и **отсутствуют в файловой системе SystemOS**. Вероятно, они загружаются Host OS до запуска SystemOS, полностью вне локальной модели драйверов. Это и есть фактический механизм безопасности: даже при полном доступе к ядру SystemOS эти компоненты нельзя изменить.
### 4.3 Поверхность API XVIO (восстановлена по импортам)
Информацию о XVIO [можно найти здесь](https://xboxoneresearch.github.io/wiki/development/xvio/xvio-overview/), однако я не могу подтвердить, что с времён Xbox One ничего не изменилось.
Из импортов `xvmctrl.sys`, `xviomonc.sys` и `srakmd_arden.sys` против `XVIO.SYS`:
XvioInitialize / XvioCleanup
XvioCreateEvent
XvioPostMessage
XvioGetCurrentPartitionId (identifies active partition, from xviomonc)
XvioGetReservedMemory (hypervisor carve-out RAM access, from srakmd_arden)
XvioRegisterGpaMdl / XvioUnregisterGpa (Guest Physical Address mapping)
XvioSfrMapPages / XvioSfrUnmapPages (Shared Frame Region, cross-partition GPU memory)
XvioSfrCounterGet / XvioSfrPerfCounterSet
XvioSfrReadEvent
XvioSetFocus (switches input focus between partitions)
XvioSetSystemTime
XvioSaveProvidersState / XvioRestoreProvidersState
XvioPerfMonitoringEnabled
XvioCreateRingBuffer / XvioDestroyRingBuffer
XvioGetRingBufferContext
XvioReadRingBuffer / XvioReadRingBufferEx / XvioWriteRingBuffer
XvioAcquireRingBufferRundown / XvioReleaseRingBufferRundown
`XvioRegisterGpaMdl` и функции SFR — это механизм совместного использования памяти гипервизором: страницы сырой ОЗУ и кадрового буфера GPU отображаются через границу разделов.
### 4.4 Межраздельные службы HvSocket
`hvsocket.sys` предоставляет службы для межраздельной сокетной связи:
- `HvSocketGetPartitionConnections` / `HvSocketGetPartitionListeners` перечисляют активные каналы
- `HvSocketGetVmIdFromVmbusHandle` разрешение дескриптора VMBus
- `HvSocketUpdateServiceTable` реестр всех межраздельных служб
DLL с GUID-именем `[REDACTED]_hvsocket.dll` регистрирует провайдера службы HvSocket. GUID скрыт на случай, если он может быть идентифицируемым.
Четыре GUID-идентификатора конечных точек HvSocket с подстановочными знаками были разрешены через вычисление служебного SID с помощью SHA1; полные подробности, включая межраздельные каналы DiagTrack, RpcSs и EventLog, см. в разделе 20.
---
## 5. Раздел J:\ «Sys Tools» XTF / Dev
> **Воздействие:** Раздел `J:\` присутствует на каждой розничной Xbox. В режиме разработчика полный набор инструментов XTF доступен без дополнительной аутентификации помимо PIN-кода режима разработчика. Это включает удалённую отладку, потоковую передачу экрана, профилирование GPU через PIX и API управления консолью, не предназначенные для доступа конечных пользователей.
Самая значимая находка этого исследования. Раздел `J:\` (с меткой «Sys Tools») содержит **Xbox Tools Framework (XTF)** — внутренний инструментарий Microsoft для разработчиков, который, судя по всему, просто присутствует на каждой розничной Xbox. Полное перечисление: **132 файла, 52 МБ** по всему разделу.
### 5.1 Реестр расширений XTF (`J:\tools\xtfextensions.txt`)
Все 20 расширений XTF зарегистрированы с COM CLSID:
| DLL | CLSID |
|----------------------------|------------------|
| `XtfApplicationServer.dll` | `{10B16182-...}` |
| `XtfConsoleControl.dll` | `{5B45D0E0-...}` |
| `XtfConnectedStorage.dll` | `{9D610BBD-...}` |
| `XtfDebugMonitor.dll` | `{9141933C-...}` |
| `XtfDebugCaptureServer.dll` | `{F306F5C7-...}` |
| `XtfFileIO.dll` | `{8A8B4D4C-...}` |
| `XtfInput.dll` | `{7CC4D09B-...}` |
| `XtfPix.dll` | `{9BD151A3-...}` |
| `XtfGameStreaming.dll` | `{AA627F22-...}` |
| `XtfDiagInfo.dll` | `{FD21AC23-...}` |
| `XtfStressServer.dll` | `{6B5B0C75-...}` |
| `XtfSymbolProxyServer.dll` | `{69ABF3A1-...}` |
| `XtfPerf.dll` | `{F82AF734-...}` |
| `XtfRemoteRun.dll` | `{D77FE8B8-...}` |
| `XtfUser.dll` | `{2E302BAA-...}` |
| `XtfAuditioning.dll` | `{B91F5206-...}` |
| `XtfCleanup.dll` | `{9CF818E5-...}` |
| `XtfCredentialsServer.dll` | `{8582A384-...}` |
| `XtfEventServer.dll` | `{749FDEFA-...}` |
| `XtfUpdateT_s.dll` | `{DCDD4E77-...}` |
### 5.2 Удалённый отладчик Visual Studio (`J:\tools\debugmon\`)
msvsmon.exe
vsdebugeng.dll (1.5MB)
vsdebugeng.impl.dll (1.6MB)
msdia120.dll
diagnosticsscripthost.dll
vsdebuglaunchnotify.exe
Версионированные отладочные пакеты для VS 2015–VS 2022 (от `debugmondev14payload` до `debugmondev16payload`). **Три поколения удалённого отладчика Visual Studio присутствуют и зарегистрированы одновременно: VS2015, VS2017 и VS2019** — все сосуществуют в файловой системе одной розничной консоли.
### 5.3 Другие примечательные инструменты
| Двоичный файл | Назначение |
|---|---|
| `agent-xbox.exe` (1.5MB) | Основной агент XTF |
| `xtfrtservice.exe` (1.3MB) | Хост службы времени выполнения XTF |
| `xstudioserviceexe.exe` | Служба Xbox Studio |
| `xperf.exe` | Профилировщик производительности Xbox, присутствует и работоспособен, однако **трассировка ядра ETW полностью заблокирована независимо от инструмента** (см. раздел 5.5) |
| `videoserver.exe` (RTSP) | Автономный RTSP-сервер потоковой передачи экрана |
| `wdapp.exe`, `wdconfig.exe` | Wave Debugger / инструменты конфигурации |
| `wdcapture.exe` | Захват скриншотов/видео |
| `wdgamestream.exe` | Управление потоковой передачей игр |
| `xboxnetapidiagsystem.exe` | Сетевая диагностика Xbox Live |
| `xbtp.dll` (503KB) | Протокол Xbox Broadband Transfer |
| `xraytool.exe` | Инструмент производительности консоли Xbox (раскрывает факт существования Host OS) |
| `xstudioclient.dll` | Клиентская библиотека Xbox Studio |
| `unattendedsetuphelper.exe` | Полный набор инструментов управления консолью, см. раздел 5.6 |
### 5.4 Формат QuickActions `.xboxunattend`
`J:\QuickActions\` содержит скрипты автоматизации в формате `.xboxunattend`. Это обычные пакетные скрипты Windows, запускаемые через Device Portal. Доступные действия:
- `Capture_Screenshot.xboxunattend` вызывает `wdcapture.exe screenshot`
- `Capture_Video.xboxunattend`
- `Toggle_ConsoleMode.xboxunattend` переключает режимы эмуляции оборудования через `WdConfig.exe`
- `Toggle_HDR.xboxunattend`
- `Toggle_Resolution.xboxunattend`
- `Launch_DevHome.xboxunattend` / `Launch_RetailHome.xboxunattend`
- `Suspend_Title.xboxunattend`
`Toggle_ConsoleMode.xboxunattend` раскрывает полный список идентификаторов режимов профилирования, передаваемых в `WdConfig.exe`: `AnacondaProfiling`, `LockhartProfiling` и **`Scarlett 40 GB`**.
### 5.5 xperf / WPR
`xperf.exe` и WPR полностью присутствуют и работоспособны, включая профиль WPR `NeuralProcessing`. Однако вся трассировка ядра ETW блокируется двумя различными кодами ошибок:
| Код ошибки | Значение |
|------------|---------|
| `0x80070005` | Отказано в доступе, стандартный отказ ACL Windows |
| `0xc5585011` | Блокировка политикой Xbox, **для этого кода не существует пользовательской строки ошибки** (отсутствует в `N:\errorstrings\en-US.json`) |
Перечисление поставщиков ETW показывает **ноль специфичных для Xbox поставщиков** в стандартном пространстве имён ETW. Вся телеметрия Xbox проходит через `EtwPlus.dll` с использованием функций с префиксом `Etx` — это полностью отдельный конвейер от стандартного Windows ETW (см. раздел 19.3).
### 5.6 unattendedsetuphelper.exe — инструмент управления консолью
`unattendedsetuphelper.exe` — это исполняемый файл управления консолью, охватывающий:
- Сброс к заводским настройкам
- Обновление прошивки по сети
- Инъекцию toast-уведомлений/уведомлений
- Управление Device Portal
Он также служит средой выполнения для скриптов `.xboxunattend` (формата QuickActions, описанного в разделе 5.4).
---
## 6. Поверхность настроек WdConfig
`J:\tools\WdConfig.exe` (сборка `10.0.26100.7010`) предоставляет полный API конфигурации консоли. Примечательные настройки:
### Категория «Отладка»
| Настройка | Значение | Примечания |
|---|---|---|
| `ConsoleType` | `Lockhart` | Идентификатор оборудования |
| `ConsoleMode` | `Default` | `AnacondaProfiling`, `LockhartProfiling`, `Scarlett 40GB` |
| `EraGraphicsDriverMode` | `Title Configured` | Варианты: `Retail`, `Instrumented`, `Validated`. Эквивалент SRA — `SraGraphicsDriverMode = Retail`; ERA и SRA используют отдельные настройки режима драйвера |
| `EnableKernelDebugging` | `false` | Предотвращает завершение аварийного режима ERA для подключения отладчика ядра |
| `EnablePixMemory` | `false` | Резервирует дополнительные 6048 МБ для PIX в режиме Lockhart Profiling |
| `CrashDumpType` | `None` | Варианты: `Triage`, `Mini`, `Heap` |
| `TitlePerformanceOverlay` | `false` | Наложение HUD GPU/CPU в реальном времени на запущенные игры |
| `ExtraTitleMemory` | `0` | Максимум 6048 МБ в режиме Lockhart Profiling |
| `LastShutdownReason` | `Console crash` | Сохраняется между перезагрузками; моя консоль упала при последнем завершении работы |
| `KinectSensorEnabled` | `true` | **Установлено в true на оборудовании без подключённого Kinect**, стек подготавливается независимо от наличия оборудования |
### Категория «Сеть»
| Настройка | Значение | Примечания |
|---|---|---|
| `UseDebugNicForAllTraffic` | `false` | Существует отдельный отладочный сетевой адаптер, отличный от серийного NIC. |
### Категория «Хранилище»
| Настройка | Значение | Примечания |
|---|---|---|
| `DevkitUseRetailConnectedStorage` | `false` | Если включено, режим разработчика будет использовать раздел подключённого хранилища розничной консоли. Не проверено. |
| `RunFromPcDataCacheSizeInGB` | `100` | **По умолчанию зарезервировано 100 ГБ для кэша игр Run-From-PC; заблокировано, пользователь не может изменить** |
### Категория «Без участия пользователя»
| Настройка | Значение | Примечания |
|---|---|---|
| `AllowUsbUnattendScript` | `true` | Скрипты `.xboxunattend` на USB запускаются автоматически |
| `RunUnattendScriptImmediately` | `false` | Если true, USB-скрипты запускаются при загрузке без запроса на отмену |
### Замечания по безопасности
**Адрес электронной почты учётной записи Microsoft хранится в открытом виде.** Хранилище WdConfig режима разработчика содержит адрес электронной почты связанной учётной записи Microsoft в открытом виде. Вероятно, он доступен для чтения любому процессу с доступом SRA.
---
## 7. XCRDAPI.dll — API доставки контента Xbox
`XCRDAPI.dll` — это ядро управления контентом платформы Xbox. Оно обрабатывает DirectStorage, прогрессивную установку, DRM, xCloud и блоб-хранилище в одной библиотеке.
### 7.1 DirectStorage
DStorageGetFactory
DStorageGetMappedControlPage
Реализация DirectStorage для Xbox встроена в XCRDAPI, а не в отдельный SDK.
### 7.2 Жизненный цикл XVDXCrdOpenAdapter / XCrdCloseAdapter
XCrdMount / XCrdMountContentType / XCrdUnmount / XCrdUnmountEx
XCrdCreateXVD / XCrdDeleteXVD / XCrdResizeXVD / XCrdGrowDynamicXvd
XCrdSetEraLaunchMapping associates XVD with ERA partition pre-launch
XCrdUpdateXvc / XCrdUpdateXvcEx
XCrdDefragXvc / XCrdTrimXvc / XCrdTrimXvd
XCrdRepairXvc
### 7.3 Прогрессивная потоковая установка
XCrdStreamingStart / XCrdStreamingStop
XCrdStreamingQueryActiveInstanceId
XCrdStreamingQueryInformation / InformationByPath / InformationEx
XCrdStreamingQueryRegionInformation / ByPath
XCrdStreamingQueryRegionSpecifiers / ByPath
XCrdStreamingQueueInsertRegion
XCrdStreamingQueueQueryRegionList / ByPath
XCrdStreamingAdjustStreamingFlags
XCrdStreamingQueryRegionIdByOffset
Полный конвейер прогрессивной установки с приоритетной очередью. Регионы — это адресуемые фрагменты игрового контента.
### 7.4 Интеграция с xCloud
XCloudQueryFeatureBits
XCloudSetFeatureBits
Флаги функций потоковой передачи xCloud управляются через тот же API, что и локальный контент.
### 7.5 DRM / Аттестация
XCrdQueryAttestationBlob
XCrdQueryEncryptedInfo / XCrdQueryUnlockInfo
XCrdIsSideloadedKeyPresent
XCrdEnableSharedPls / XCrdSetExternalPlsMapping
### 7.6 Система BLOB-хранилища
XCrdStorageCreateBlob / DeleteBlob / MoveBlob / CopyBlob
XCrdStorageReadBlob / ReadBlobEx / WriteBlob / WriteBlobEx
XCrdStorageQueryBlobAttributes
XCrdXBlobCreate / Delete / Copy
XCrdFindFirstBlob / FindNextBlob / FindCloseBlob
### 7.7 Конвейер передачи XVD
XCrdXvdXferInitialize / Uninitialize
XCrdXvdXferStart / Stop
XCrdXvdXferRead
XCrdXvdXferGetResult
### 7.8 Системы путей
XCrdXasBuildPath / XasBuildPathEx / XasKeyQueryValue (XAS App Store paths)
XCrdXdsGetVolumeMapping / XdsSetVolumeMapping (XDS Delivery Service volumes)
XCrdBuildPath / XCrdParsePath / XCrdUpdatePath
XCrdQueryDevicePath / QueryDevicePathByPath
XCrdSetFlatContentPath
---
## 8. xpal.dll — уровень абстракции платформы Xbox (50 экспортов)
Ранее недокументированный API для идентификации оборудования, возможностей и управления питанием.
### Идентификация оборудования
XpalGetConsoleCertificate hardware certificate
XpalGetConsoleIdCch console hardware ID
XpalGetConsoleSerialNumberCch serial number
XpalGetSmcFirmwareId SMC firmware version
XpalGetSouthBridgeType chipset variant
### Определение поколения / SKU
XpalIsGen8 Xbox One
XpalIsGen9 Series X/S
XpalGetGenerationType
XpalIsHyperV hypervisor active
XpalIsExternalDevkit / XpalIsInternalDevkit
XpalGetVmType
XpalGetSystemType / XpalGetServerType / XpalGetConsoleMode
### Флаги возможностей
XpalIsCapabilityEnabled
XpalIsCapabilityEnabledByVm
XpalIsFactorySettingEnabled
XpalGetFactorySettings
XpalGetCapabilities
XpalIsFeatureEnabled
### Управление питанием
XpalInitiateDump trigger crash dump on demand
XpalInitiatePowerStateToggle
XpalInitiateSystemShutdown
XpalSetWakeupTimer
XpalQueryPowerToggleSource
XpalIsInForcedCs / XpalIsTransitioningToConnectedStandby
XpalIsSilentBootMode
XpalNotifyForcedCsHeartbeat
XpalIsRebootRequested
XpalRefreshPowerChimeMode
### Конфигурация
XpalGetXConfig / XpalSetXConfig Xbox config store (modern EEPROM equivalent)
XpalSetSystemTime
XpalSetInformation
XpalReportUem trigger UEM (Universal Error Message)
### ERA / игровая VM
XpalQueryTitleVmInfo
XpalWaitForTitleVmTermination
XpalBackgroundActivityRequest
---
## 9. eracontrol.exe — менеджер жизненного цикла раздела ERA
`C:\Windows\System32\eracontrol.exe` работает как LocalSystem (ручной запуск) и управляет полным жизненным циклом игрового раздела ERA. Полный анализ импортов приведен в разделе 28. Краткое описание ключевых импортов:
- `NtOpenPartition` напрямую открывает дескриптор раздела ERA в Hyper-V
- `RtlSetProcessIsCritical` помечает себя как критический (система получит BSOD при его сбое)
- `XCRDAPI.dll` монтирует/размонтирует игровые XVD через `XCrdSetEraLaunchMapping`
- `RIMAddInputObserver` / `RIMRemoveInputObserver` перехватывает необработанный ввод контроллера для маршрутизации в ERA
- `XblaInitialize` выполняет начальную загрузку контекста аутентификации Xbox Live консоли
- `LogonUserExExW` создает токены входа пользователя для сеанса ERA
- `UMgrOpenProcessHandleForAccess` доступ к дескриптору процесса через User Manager
- `PsmQueryBackgroundActivationType` состояние фоновой активации
Также в том же каталоге находится `eraproxyapp.exe` (339KB) — компоновщик на стороне SystemOS и IPC-мост между ERA и оболочкой. Полный анализ импортов — в разделе 29.
---
## 10. Трассы ETL BlackBox (N:\BlackBox\)
Каталог `N:\BlackBox\` содержит «живые» трассы самописца ETW. По результатам анализа захваченной трассы:
**Примечание:** формат ETL Xbox может быть обработан только с помощью 'tracerp'
### Внутренние пути исходного дерева (встроены в отладочную инструментовку)
onecoreuap\xbox\xblauth\lib\authmanagerimpl.cpp
onecoreuap\xbox\xblauth\lib\authmanagertokens.cpp
onecoreuap\xbox\xblauth\lib\xstsauthorizer.cpp
onecoreuap\xbox\xblauth\util\httprequest.cpp
### Проверяющие стороны аутентификации Xbox Live
http://xdes.xboxlive.com/ Xbox Dev/Engineering Services
http://xboxlive.com Standard XBL
http://mp.microsoft.com/ Microsoft Passport (MSA)
http://instance.mgt.xboxlive.com Instance/session management
### Зафиксированные сбои
1. **`XboxUI.exe` BEX64** Оболочка панели управления столкнулась с переполнением буфера стека (`STATUS_STACK_BUFFER_OVERRUN`, `0xc0000409`) в `XboxUI.Data.dll` по смещению `0x13eb0`
2. **`MoAppHang`** Зависание UWP-приложения для пакета `REDACTED_GUID`
---
## 11. Дополнительные примечательные находки
### Наличие WSL на Xbox
Службы `LxssManager` и `lxcore` присутствуют с `LaunchProtected: 0x2` (защищенный процесс) и `SeTcbPrivilege`. WSL на Xbox работает с доверием на уровне ОС и, судя по характеру использования, почти наверняка обеспечивает работу чего-то или, по крайней мере, каким-то образом связана с `Xbox.ConsoleXCloudPlayer` (клиентом потоковой игры xCloud).
wsl.exe присутствует, однако он **не** читаем.
### Эксклюзивные для Xbox двоичные файлы System32
Примечательные DLL, отсутствующие в стандартной Windows:
- `XCRDAPI.dll` доставка контента (описано в разделе 7)
- `XBBlackbox.dll` самописец (описано в разделе 30)
- `XBCastRecv.dll` приемник Xbox Cast / Miracast (описано в разделе 30)
- `XVMAudioServer.dll` межраздельный аудиосервер виртуальных машин
- `Xbox.Shell.Api.dll` / `Xbox.Shell.OneStoreServices.dll` API оболочки (описано в разделе 30)
- `XboxCommandService.dll` команды/автоматизация
- `XboxUserSim.dll` автоматизация тестирования пользовательского интерфейса
- `xboxgipsynthetic.dll` / `xboxsynthetickm.dll` инъекция синтетических виртуальных контроллеров GIP (описано в разделе 30)
- `AppXDeploymentExtensions.xbox.dll` развертывание AppX для Xbox
- `xvnapi.dll` API виртуальной сети Xbox
- `xbsc_xs.dll` компилятор шейдеров Xbox Series (описан в разделе 16.2)
### Службы, присутствующие, но не документированные
- `EraControlService` жизненный цикл раздела ERA
- `XvdStreamSvc` (`xnetsharedservice.exe`) потоковая передача XVD / прогрессивная установка
- `XUpdMgr` менеджер обновлений Xbox (каким-то образом отдельная от Windows Update?)
- `XSraFlt` драйвер фильтра SRA для Xbox
- `Manufacturing Broker` служба заводской настройки
- `TestSirepSvc` внутренний протокол тестирования SIREP
- `GameCoreController` служба контроллера игрового ядра GDK
- `ConnectedStorage` служба облачных сохранений Xbox
- `VideoManagerService` управление видеовыходом
- `XBBlackbox` служба самописца
- `xbdiagservice` служба диагностики Xbox
- `XtfRtService` служба среды выполнения XTF
Дополнительные устаревшие/низкоуровневые драйверы, наличие которых подтверждено в реестре служб (см. раздел 11.2):
- `Zurich` виртуальный драйвер DVB
### `xvnc` / `xvncbus` — виртуальная сетевая карта Xbox
`xvnc.sys` и `xvncbus.sys` представляют собой **стек виртуальных сетевых интерфейсов (NIC)**; перечисление службы `xvnc` показывает:
ROOT\xvnc\0000 root/loopback virtual NIC
{e720983a-...}\wifi\01
{e720983a-...}\wfd\01 Wi-Fi Direct
{e720983a-...}\wfd_role0\01
`xvncbus` — это шинный драйвер WDF 1.15, который перечисляет виртуальные сетевые карты поверх физического беспроводного адаптера. Раздел ERA не обращается к сетевому стеку напрямую — он взаимодействует через `NetXVmService`, которому принадлежит уровень виртуальных сетевых карт `xvnc`. GUID `{e720983a-...}` идентифицирует аппаратное обеспечение беспроводного адаптера Xbox.
### `xviomonc.sys` — клиент монитора XVIO
Драйвер автозапуска (`Start: 0x1`), управляющий фокусом раздела отображения. Анализ импортов:
XVIO.SYS: XvioInitialize, XvioCleanup, XvioPostMessage,
XvioSetFocus, XvioGetCurrentPartitionId - new XVIO export
VMNP.SYS: NpSetupVmImpersonation
xpalk.dll: XpalIsCapabilityEnabled
`xviomonc` **не** обрабатывает данные кадрового буфера — это только драйвер сигнализации и управления фокусом. `XvioSetFocus` переключает, какой раздел имеет фокус отображения/ввода; `XvioGetCurrentPartitionId` определяет активный раздел. Собственно захват кадров выполняется `srakmd_arden.sys`.
`NpSetupVmImpersonation` из `VMNP.SYS` позволяет драйверу монитора олицетворять учетную запись безопасности раздела ERA при доступе к ресурсам отображения ERA через границу разделов.
### Буферы GameDVR на G:\
Три файла на G:\ представляют собой необработанные циклические буферы, отображаемые в память и совместно используемые ERA и SystemOS:
- `GameDVR_VideoBuffer` 272MB кольцевой захват видео
- `GameDVR_AudioBuffer` 16MB игровое аудио
- `GameDVR_AudioBuffer_SysLoopback` 3MB системное аудио/аудио интерфейса (отдельный поток)
---
## 11.1 Находки в реестре
### Ссылка на диск K:\ только для девкита
`HKLM\SOFTWARE\Microsoft\Durango\XTF` содержит жестко заданный путь:
K:\TDK\Tools\XtfJuno.dll
### `HKLM\SYSTEM\ResourcePolicyStore`
| Уровень | Бюджет памяти |
|------|--------------|
| `BackgroundSmall` | 40MB |
| `Background` | (стандартный фон) |
| `Balloon` | 5120MB |
Уровни политики CPU:
| Политика | Выделение CPU |
|--------|---------------|
| `Paused` | 1% |
| `SoftCapLow` | 10% |
| `SoftCapFull` | 100% |
| `HardCap0` | 0% - полностью заморожен |
**Политика BeanHog** (возможно, бюджет процесса активной игры?):
- Память: уровень переднего плана
- CPU: 100%
- `DoNotKill`: true
- Приоритет: наивысшая важность
---
## 11.2 Археология наследия Xbox One
В реестре служб Series S сохранились три драйвера времен Xbox One. Два отключены; один активно работает.
### Стек декодера ТВ-тюнера `Zurich`
`zurichs.sys` — это виртуальный драйвер DVB Xbox One. Статус: **отключен**, но все еще зарегистрирован.
Ключевая находка: `zurichs.sys` импортирует кольцевые буферы `XVIO.SYS`. ТВ-тюнер архитектурно был спроектирован для доставки своего декодированного видеопотока через кольцевые буферы гипервизора XVIO. Тюнер также использовал `ZwUpdateWnfStateData` для публикации состояния тюнера через Windows Notification Facility (WNF).
### `PetraXC` — устройство управления сенсором Kinect
Драйвер виртуального устройства WDF, теперь идентифицированный как **устройство KinectSensorControl**, — аппаратная абстракция на стороне ядра для камеры Kinect. Статус: **отключен до появления устройства** (модель запуска по требованию WDF).
Примечательные характеристики:
- Собран на базе **WDF 1.11**, что соответствует Windows 8 и относит его происхождение к исходной базе ядра Xbox One
- Импортирует `XVIO.SYS`, то есть взаимодействует через транспорт кольцевых буферов гипервизора
- Предоставляет `\\.\KinectSensorControl` в качестве интерфейса устройства, который используется `KinectMediaSource.dll` в конвейере nuiservice через `DeviceIoControl` (см. раздел 33)
### `pspsra.sys` — мост AMD PSP к SRA
Статус: **активно работает** (`Start: 0x0`, запуск при загрузке). Доступ запрещен на уровне ядра; драйвер заблокирован и не может быть исследован далее.
`pspsra.sys` располагается непосредственно под разделом SRA в цепочке загрузки как **мост между AMD Platform Security Processor (PSP) и уровнем SRA**. AMD PSP обрабатывает аттестацию fTPM и сертификат консоли на уровне «голого металла», а `pspsra.sys` — это мост, который выводит эту цепочку доверия в SRA. Это помещает его в тот же уровень доверия, что и `XVIO.SYS` и `XSraFlt.sys`: он инициализируется до SystemOS, непрозрачен для нее и недостижим даже при полном доступе к ядру.
---
## 12. Нерешенные вопросы и драйверы
Вопросы:
1. **Расположение XVIO.SYS** отсутствует в любой доступной файловой системе; загружается гипервизором при загрузке
2. **Использование WSL** подтверждено наличие и использование, но конкретная роль в ОС Xbox полностью не определена
3. **`XCrdXpfOp`** неопознанная функция XCRDAPI (XPF = ?)
4. **Расположение `XSraFlt.sys` + `XRmnt.sys`** подтверждено отсутствие во всех доступных файловых системах; загружаются Host OS вместе с XVIO.SYS
5. **GUID `{REDACTED_GUID}` для `xvnc`** GUID беспроводного адаптера; полная цепочка драйверов не установлена
6. **Цель точки повторной обработки `S:\Shares\TitleScratch`** активно скрывается ОС в листингах каталогов; требуется `FSCTL_GET_REPARSE_POINT` ниже уровня cmd.exe. Почти наверняка это `\Device\Xrfs\<partition-guid>` (см. раздел 26)
7. **Поверхность IOCTL `xvmctrl.sys`** живой дамп ядра заблокирован (ограничение `NoKernelDumps` в розничном режиме разработчика); таблица диспетчеризации IOCTL еще не перечислена
8. **GUID раздела ERA** не раскрывается ни через один доступный путь реестра; был бы виден в дампе ядра (заблокировано, изучаются обходные пути)
9. **Содержимое `N:\EtwPlus\`** активно скрывается драйвером-фильтром файловой системы в ядре; листинги каталогов возвращают пустоту, несмотря на подтвержденную активность записи. Личность драйвера-фильтра не установлена (см. раздел 3.2)
10. Host OS в целом — даже не до конца ясно, что она делает.
Драйверы:
1. **`xtcc.sys`**, вероятно, отвечает за что-то связанное с безопасностью, учитывая огромное количество импортов `ntoskrnl.exe` и `XVIO.sys`
2. **`FLTMGR.SYS`** импортируется `XRmnt.sys`, `XRo.sys`
---
## 13. Виртуализированный ввод-вывод и удаленный доступ (XVIO/SRA)
Анализ экспортов `xboxcloudstreaming.dll` и записей реестра `CurrentControlSet\Services` показывает глубокую интеграцию на уровне ядра для удаленных подключений, использующую «синтетическую» модель оборудования, а не стандартную программную эмуляцию. Виртуальная машина ERA видит одни и те же синтетические устройства независимо от источника ввода (удаленный, USB, беспроводной и т.д.).
### 13.1 Стек XVIO (виртуальный ввод-вывод)
Платформа XVIO, по-видимому, является основным методом инъекции событий аппаратного уровня в SystemOS из внешних или межраздельных источников.
| Служба | Категория | Функция |
| --- | --- | --- |
| `hvsocketxvio` | Транспорт | Служба-мост, соединяющая сокеты Hyper-V с протоколом XVIO. |
| `InputXVIOClient` | Координатор | Управляет сопоставлением пакетов удаленного ввода с узлами виртуальных устройств. |
| `xviokbdbus` / `xviomoubus` | Шинный драйвер | Перечисляет виртуальные HID-устройства на синтетической внутренней шине. |
| `xviokbd` / `xviomou` | Драйвер устройства | Специфические функциональные драйверы для виртуализированных клавиатур и мышей. |
### 13.2 Конвейер синтетического контроллера
Двоичный файл `xboxcloudstreaming.dll` использует `XboxgipSynthetic.dll` для создания того, что ОС воспринимает как физически подключенные локальные периферийные устройства.
- **Виртуализация аудио:** через `SyntheticController_AddAudioHeadset` система может направлять удаленное сетевое аудио в локальный аудиостек консоли как устройство, привязанное к оборудованию.
- **Инъекция ввода (RIM):** использование Remote Input Manager (`ext-ms-win-ntuser-rim-l1-1-0.dll`) подтверждает, что сеансы xCloud и удаленной игры используют те же методы инъекции с высокими привилегиями, что и удаленный рабочий стол Windows, а именно `InjectKeyboardInput` и `InjectPointerInput`.
### 13.3 Драйверы SRA и «Arden»
> **Примечание:** драйвер `SraKmdArden` является аппаратно-специфичным для архитектуры Series X/S (Arden). Этот драйвер, вероятно, позволяет системе перехватывать буфер дисплея на уровне ядра, минимизируя накладные расходы на задержку, обычно связанные с межвиртуальной отрисовкой.
### 13.4 Мост HvSocket (GUID `4545ffe2-...`)
Ранее неопознанный GUID HvSocket был сопоставлен со службой `hvsocketxvio`. Это подтверждает, что XVIO — это не самостоятельный протокол, а уровень, работающий поверх внутреннего сокетного транспорта Hyper-V.
Это позволяет предположить, что **раздел ERA (игровой)** не обращается к сети напрямую для ввода; вместо этого:
1. **SystemOS** получает сетевые пакеты через `XboxNetApiSvc`.
2. **`xboxcloudstreaming.dll`** обрабатывает поток.
3. **`hvsocketxvio`** передает необработанные данные ввода через границу разделов по **HvSocket**.
4. Уровень гипервизора/Host внедряет их в целевой раздел как аппаратное событие.
---
## 14. Том M:\ | Архитектура оверлеев
M:\ (с меткой «System OS Misc») функционирует как **оверлейный том** — дерево, содержащее компоненты, монтируемые поверх базового образа C:\. Такая архитектура позволяет Microsoft поставлять единый образ ОС и применять определенные наборы функций через оверлеи во время монтирования.
### 14.1 Структура тома
M:\
├── Catalog000-003.bin volume-specific code integrity catalogs
└── windows\
├── system32\
│ ├── drivers\ kernel drivers
│ ├── ht\ Kinect support (see section 33)
│ └── [~120 DLLs] userspace components
├── SystemApps\ system apps
├── DefaultApp\
├── Fonts\
├── Speech_OneCore\
├── textinput\
└── WebManagement\
### 14.2 Символические ссылки файловой системы
C:\ ссылается на компоненты M:\ через символические ссылки NTFS. Ссылки существуют на двух уровнях:
**Уровень драйверов System32:**
C:\Windows\System32\drivers\srakmd_arden.sys -> M:\windows\system32\drivers\srakmd_arden.sys
**Уровень каталога Windows**
C:\Windows\DefaultApp -> M:\Windows\DefaultApp
C:\Windows\Fonts -> M:\Windows\Fonts
C:\Windows\SystemApps -> M:\Windows\SystemApps
C:\Windows\WebManagement -> M:\Windows\WebManagement
Оверлей M:\ более всепроникающий, чем простая замена драйверов/DLL: основные каталоги подсистем Windows, включая хранилище шрифтов, системные приложения и интерфейс веб-управления, полностью размещаются на M:\. Это может означать, что конкретный оверлей управляет не только драйверами GPU и захвата, но в определенной степени и всем слоем системных приложений и оболочки пользовательского интерфейса.
Полное рекурсивное перечисление символических ссылок C:\, указывающих на M:\, не завершено.
### 14.3 Аппаратно-специфичные драйверы (M:\windows\system32\drivers\)
| Драйвер | Размер | Назначение |
|---|---|---|
| `srakmd_arden.sys` | 274KB | KMD захвата SRA -> аппаратно-специфичный захватчик кадров Arden |
| `acpi.sys` | 873KB | ACPI -> аппаратно-специфичная сборка (больше стандартной) |
| `spaceport.sys` | 1MB | Порт хранилища -> криптография XVD + проверка лицензий |
| `spacedump.sys` | 304KB | Драйвер дампа хранилища |
| `buttonconverter.sys` | 90KB | Преобразование HID питания/извлечения в события консоли |
| `qwavedrv.sys` | 90KB | Драйвер QoS/качества сети |
| `acpiex.sys` | 181KB | Расширения ACPI |
| `AcpiDev.sys` | 61KB | Расширения устройств ACPI |
| `acpitime.sys` | 57KB | Таймер ACPI |
**Находка:** `XSraFlt.sys` отсутствует как в драйверах M:\, так и в C:\. Он не хранится ни в одном доступном томе файловой системы, что позволяет предположить, что он загружается Host OS при загрузке вместе с `XVIO.SYS` и `FLTMGR.sys`.
### 14.4 Аппаратно-специфичные компоненты пользовательского пространства (M:\windows\system32\)
Примечательные DLL/EXE, уникальные для M:\:
**Стек GPU / шейдеров:**
- `umd12ddi_arden.dll` (1.56MB) Пользовательский DDI драйвера D3D12, оборудование Arden
- `umd12ddi_d.dll` (1.5MB) UMD D3D12, отладочная/инструментированная для PIX сборка
- `umd12ddi_i.dll` (1.14MB) UMD D3D12, встроенная/запасная сборка
- `newbe_xs.dll` (26MB) Бэкенд компилятора шейдеров «NewBe» для GPU Arden
- `xbsc_xs.dll` (3.9MB) Фронтенд компилятора шейдеров Xbox Series
- `dxcompiler_xs.dll` (17.8MB) Компилятор HLSL для Xbox Series
- `dxbc2dxil_xs.dll` (2.9MB) Конвертер байткода DXBC в DXIL
- `pixrtddi.dll` (679KB) DDI рендеринга/отладки PIX
**Инструментарий разработчика / PIX:**- `VsGraphicsRemoteEngine.exe` (4.75MB) — удалённый движок GPU-профилировщика PIX
- `VsGraphicsCapture.dll` (225KB) — захват кадров PIX
- `VsGraphicsExperiment.dll` (327KB) — каркас экспериментов PIX
- `DXCaptureReplay.dll` (18MB) — движок воспроизведения захвата GPU
- `DXCap.exe` (1.19MB) — инструмент захвата GPU
- `DXToolsMonitor.dll` / `DXToolsOfflineAnalysis.dll` / `DXToolsReporting.dll` — стек анализа PIX
- `DXGIDebug.dll` (151KB) — отладочный слой DXGI
- `d3d12SDKLayers.dll` (4.8MB) — слои проверки/отладки D3D12
- `d3d11_3SDKLayers.dll` (1.19MB) — отладочные слои D3D11
- `d2d1debug3.dll` (618KB) — отладочный слой D2D
- `VSD3DWARPDebug.dll` (155KB) — отладочная сборка программного растеризатора WARP
- `plmdebug.exe` (204KB) — отладчик PLM (жизненного цикла процессов)
**Потоковая передача / удалённый доступ:**
- `rdpbase.dll` (1.8MB) — базовая библиотека RDP
- `rdpserverbase.dll` (2.3MB) — серверная база RDP
- `XboxDevService.exe` (3.7MB) — хост службы разработчика Xbox
- `XboxDevService.ProxyStub.dll`
**Социальный / плагинный стек:**
- `DiscordPlugin.dll` (139KB) — интеграция Discord
- `TwitchPlugin.dll` (639KB) — интеграция потоковой передачи Twitch
**Прочее примечательное:**
- `XboxSyntheticKM.dll` (36KB)
- `xrmntcl.exe` (90KB) — клиент монтирования среды выполнения Xbox
- `xtfupdateT_s_i.dll` (98KB) ?
- `xtcapi.dll` (57KB) — API XTC (коммуникации игр Xbox?)
- `wusys.dll` (308KB) — системная интеграция Центра обновления Windows
---
## 15. Графический стек | Конвейер компиляции шейдеров
Полный конвейер компиляции шейдеров Xbox Series S/X находится на M:\ и отсутствует на C:\. Компиляция шейдеров невозможна без смонтированного аппаратно-зависимого оверлея.
### 15.1 `newbe_xs.dll`
DLL размером 26MB. Серверный компилятор шейдеров GPU Arden. Всего 6 экспортов:
NB_CompileShader компиляция отдельной стадии шейдера
NB_CompilePipeline компиляция полного объекта состояния конвейера
NB_CreateOptimizer создание распределителя регистров / планировщика инструкций
NB_GetRegPressure анализ регистрового давления (для PIX)
NB_GetShaderStats аппаратная статистика шейдеров
NB_CreatePixDwarfApi генерация отладочной информации DWARF для GPU-шейдеров
Секция `.pass` может указывать на конвейер проходов в стиле LLVM. `NB_CreatePixDwarfApi` генерирует отладочную информацию на уровне исходного кода шейдеров для PIX.
### 15.2 `xbsc_xs.dll`
41 экспорт, покрывающий полный API компиляции:
XBSC_PipelineCompile / XBSC_GetPipelineCompileOutput
XBSC_CompileRootSignature / XBSC_GetCompiledRootSignature
XBSC_AssembleShader / XBSC_GetAssembledShader
XBSC_DisassembleHwPipeline / XBSC_DisassembleHwPipelineWithCallback
XBSC_DisassembleRawShader / XBSC_GetDisassembly
XBSC_GetRegPressure / XBSC_GetShaderStats / XBSC_DumpShaderStats
XBSC_CompressBuffer / XBSC_DecompressBuffer (сжатие кэша шейдеров)
XBSC_Serialize* / XBSC_Deserialize* (сериализация состояния конвейера)
SCCompileMultiShadersXbox / SCDumpHwShader* (пакетная компиляция)
SC_ConvertRootSignatureToSCInputs
Секции `_mmddu` и `_MMDDT0` PE содержат **аппаратные данные Microsoft Machine-Dependent Driver Data** — таблицы микроархитектуры, встроенные в компилятор (задержки инструкций, топология регистрового файла, количество исполнительных блоков для Arden).
### 15.3 `dxcompiler_xs.dll`
17.8MB. Форк компилятора HLSL DXC для Xbox Series. 4 экспорта:
DxcCreateInstance / DxcCreateInstance2 стандартная фабрика DXC (совместима с публичным API)
CreateXdxrCompiler / CreateXdxrCompiler2 компилятор Xbox DXIR (специфичный для Xbox формат IR)
### 15.4 `dxbc2dxil_xs.dll` Конвертер байт-кода
2.9MB. Один экспорт:
SCDxil_ConvertDxbcToDxil преобразование байт-кода DX11 DXBC в DXIL для конвейера DX12
Позволяет обратно совместимым шейдерам DX11 работать на конвейере Arden, поддерживающем только DX12.
### 15.5 Полная цепочка компиляции шейдеров
Игра/приложение отправляет HLSL или устаревший шейдер DXBC
↓
[путь HLSL] [устаревший путь DXBC]
dxcompiler_xs.dll dxbc2dxil_xs.dll
(DxcCreateInstance -> DXIL) (SCDxil_ConvertDxbcToDxil -> DXIL)
↓ ↓
└──────────┬──────────────────┘
↓
xbsc_xs.dll (XBSC_PipelineCompile)
вызывает серверную часть NB_ из newbe_xs.dll
использует таблицы микроархитектуры Arden _MMDDT0
↓
umd12ddi_arden.dll
(отправляет скомпилированный ISA через DDI D3D12)
использует xg_xs.dll для компоновки текстур
↓
srakmd_arden.sys (ядро)
XvioGetReservedMemory -> выделение RAM гипервизором
framebuffer с нулевым копированием -> раздел ERA
---
## 16. `xg_xs.dll` Библиотека компоновки текстур Xbox
Расположена на **C:\** (не на M:\). Содержит 27 экспортов, охватывающих тайлинг текстур, компоновку BVH для трассировки лучей и сжатие DCC.
### 16.1 Поверхность экспортов
XGComputeBufferLayout
XGComputeTexture1DLayout / 2DLayout / 3DLayout
XGComputeOptimalSwizzleMode / OptimalDepthStencilSwizzleMode
XGComputeTileShape
XGSuggestSwizzleMode
XGValidateDepthStencilSwizzleMode / XGValidateDescriptor
XGCreateTexture1DComputer / 2DComputer / 3DComputer
XGCreateTextureComputer / XGCreateTextureComputerFromDescriptor
XGCreateBVHComputer / XGCreateBVHComputer2 компоновка BVH для трассировки лучей
XGEncodeDCC / XGDecodeDCC / XGDecodeDCCSurface сжатие AMD Delta Color Compression
XGShuffleTextureBufferForDirectStorage тайлинг текстур на стороне GPU для DirectStorage
XGSetHardwareVersion настройка для Series S или Series X (компоновка памяти)
XGInitializeLibrary / XGTerminateLibrary
XGEnableExclusiveLocking / XGEnterExclusiveLock / XGLeaveExclusiveLock
### 16.2 Ключевые выводы
**Компоновка BVH для трассировки лучей аппаратно-зависима.** `XGCreateBVHComputer2` предоставляет API компоновки BVH второго поколения, что указывает на наличие у архитектуры Arden отдельного формата узлов BVH, отличающегося от стандартного DXR.
**Реализовано сжатие AMD DCC.** `XGEncodeDCC` / `XGDecodeDCC` реализуют сжатие AMD Delta Color Compression — аппаратное сжатие кадрового буфера без потерь, используемое на GPU RDNA. `XGDecodeDCCSurface` — это API, который PIX использует при чтении захваченных кадровых буферов, сжатых DCC.
**Тайлинг DirectStorage.** `XGShuffleTextureBufferForDirectStorage` выполняет перемешивание на стороне GPU, преобразующее компоновку текстур на диске в аппаратный формат тайлинга Arden во время распаковки на GPU, обеспечивая загрузку в VRAM без копирования.
**`XGSetHardwareVersion` управляет всеми алгоритмами компоновки.** Библиотека содержит реализации компоновки для нескольких ревизий оборудования. Вызов `XGSetHardwareVersion` с идентификатором Series S или Series X даёт разные результаты тайлинга, отражающие различия в ширине шины памяти и геометрии кэша.
### 16.3 Секция метаданных сборки `.xbld`
`xg_xs.dll` содержит PE-секцию `.xbld`, отсутствующую во всех остальных бинарных файлах Xbox, что указывает на её происхождение из отдельного конвейера CI GDK, а не из системы сборки ОС Xbox. Система сборки ОС обнуляет временные метки и удаляет секции метаданных; CI GDK этого не делает.
_xbld_edition_build = GXDK, 0x65F41B62
_xbld_edition_full_productbuild = GXDK, 10.0.26100.7010
_xbld_edition_sdktype = GXDK, 260400
_xbld_edition_name = GXDK, April 2026 GXDK
_xbld_edition_mscver = GXDK, 193833145.100
Значение `edition_name` **"April 2026 GXDK"** предшествует публичному выпуску этой редакции SDK (на момент написания — 9 марта 2026 года), что подтверждает: розничная ОС поставляется с компонентами GDK, собранными против следующего, ещё не выпущенного цикла SDK. Версия `sdktype=260400` следует шаблону `YYMMRR` (год/месяц/ревизия).
Временная метка `edition_build` `0x65F41B62` декодируется в **13 марта 2024 года**, более чем за год до даты сборки ОС (12 февраля 2026 года), что указывает: алгоритмы компоновки текстур стабильны и не изменялись как минимум на протяжении 5 циклов выпуска GDK.
Значение `mscver=193833145.100` идентифицирует компилятор как **MSVC 19.38** (Visual Studio 2022 17.8.x).
### 16.4 Вывод о конвейере сборки (UUP?)
Конвейер CI GDK собирает xg_xs.dll (с нетронутыми метаданными .xbld)
↓
┌─────────────────────────┐
↓ ↓
Образ ОС Xbox забирает Пакет GDK April 2026
артефакт напрямую поставляет тот же бинарник разработчикам
↓
Поставляется на каждой розничной консоли
Это означает, что `xg_xs.dll` на розничных консолях побитово идентичен тому, что разработчики получают в GDK. Проверка хеша против публичного выпуска GDK April 2026 (когда он станет доступен) подтвердила бы это.
---
## 17. Модель целостности кода Trust-by-Catalog
### 17.1 Формат PE-контейнера
Файлы `Catalog*.bin` на каждом томе — это **исполняемые PE32+ с подсистемой `0x11`** ("Xbox Code Catalog"), недокументированной подсистемой, отсутствующей в любой публичной документации. Ключевые характеристики PE-заголовка:
Magic: PE32+ (64-бит)
Subsystem: 0x11 ("Xbox Code Catalog", получено из строк внутри MSVC link.exe)
Entry point: 0 (никогда не выполняется)
Code size: 0 (нет исполняемого кода)
DLL Chars: IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY <- критично
IMAGE_DLLCHARACTERISTICS_NX_COMPAT
Sections: 1 безымянная секция только для чтения (сырая полезная нагрузка)
Что касается того, как они работают, я не уверен; Xbox One
### 17.2 Цепочка доверия
Гипервизор/ОС-хост проверяет подпись Authenticode PE-файла Catalog*.bin при загрузке (FORCE_INTEGRITY)
↓
Полезная нагрузка каталога содержит хеши защищённых бинарных файлов этого тома
↓
Code Integrity проверяет хеш каждого бинарного файла по каталогу во время загрузки
↓
Отдельные бинарные файлы не несут собственных подписей Authenticode
Это модель **trust-by-catalog** (доверие через каталог). Одна подпись Microsoft покрывает огромное количество файлов на томе. Отдельные бинарные файлы и, вероятно, другие типы файлов не подписаны; их целостность гарантируется членством в каталоге.
**Количество записей и размеры:**
| Том | Каталог | Размер полезной нагрузки | Записей (÷32) |
|---|---|---|---|
| C:\ | Catalog000.bin | 5 533 696 байт | 172 928 |
| C:\ | Catalog001.bin | 253 952 байт | 7 936 |
| C:\ | Catalog002.bin | 57 344 байт | 1 792 |
| C:\ | Catalog003.bin | 176 128 байт | 5 504 |
| M:\ | Catalog000.bin | 5 537 792 байт | 173 056 |
| M:\ | Catalog001.bin | 258 048 байт | 8 064 |
| M:\ | Catalog002.bin | 61 440 байт | 1 920 |
| M:\ | Catalog003.bin | 180 224 байт | 5 632 |
Длина полезной нагрузки каждого каталога (внутри PE-секции) делится на 32 без остатка и не делится последовательно на 36, 40 или другие распространённые размеры записей. Это убедительно указывает на то, что полезная нагрузка представляет собой плоский массив **записей по 32 байта**.
**Алгоритм хеширования:** Целофайловые SHA-256 и SHA-1 известных бинарных файлов не были найдены в каталогах, что исключает простое хеширование всего файла. Наиболее вероятный формат — **page-хеши Authenticode**, стандарт Windows CI, при котором каждая выровненная по 4KB страница отображаемых секций PE-файла хешируется отдельно. Это дало бы одну запись по 32 байта (SHA-256) на страницу на файл, что объясняет большие количества записей (172 928 записей только для C:\).
**Порядок:** Полезная нагрузка не отсортирована по значению хеша. Схема порядка не установлена; возможные варианты включают сортировку по хешу пути к файлу, по установочному пакету, по смещению страницы в наборе файлов тома или даже по какому-то признаку NTFS.
**Отсутствие заголовка:** Первые 128 байт полезной нагрузки не содержат узнаваемой магической строки ASCII, полей с малыми целыми числами, которые могли бы указывать на количество или версию, и структуры, согласующейся со стандартным заголовком. Массив хешей начинается с байта 0 полезной нагрузки без преамбулы.
### 17.3 Принуждение только во время загрузки
Применение Code Integrity — **только во время загрузки**. После того как бинарный файл проходит проверку хеша каталога и страницы отображаются в память, CI больше не участвует. HVCI (защищаемая гипервизором целостность кода), если бы была активна в SystemOS, закрыла бы возникающее окно TOCTOU (проверка во время проверки — использование во время использования), делая загруженные страницы кода аппаратно доступными только для чтения на уровне таблиц страниц гипервизора. **Подтверждено, что HVCI выключена в SystemOS**: `IsSecureKernelRunning = 0x0` (см. раздел 18). Окно TOCTOU, следовательно, присутствует.
### 17.5 Компоненты ОС-хоста
Подтверждено отсутствие двух драйверов во всех доступных файловых томах; они загружаются напрямую ОС-хостом до инициализации SRA:
- `XVIO.SYS` — ядро Xbox Virtual I/O (нет записи службы в реестре, нет ни на одном томе)
- `FLTMGR.sys` — диспетчер фильтров
- `XSraFlt.sys` — фильтр SRA (запись службы есть, соответствующего файла нет ни на одном томе)
Эти компоненты полностью находятся вне модели доверия каталога. Их нельзя изменить, даже имея полный доступ к ядру SystemOS, поскольку они отображаются загрузчиком до того, как HostOS (родительская SystemOS) начинает загрузку.
Информацию о компонентах Xbox One [можно найти здесь](https://xboxoneresearch.github.io/wiki/boot/vbi/), однако я не могу быть полностью уверен, что HostOS на данный момент не изменилась.
---
## 18. Статус HVCI
> **Влияние:** При выключенной HVCI целостность кода действует только во время загрузки. После отображения бинарного файла в память нет аппаратного принуждения, предотвращающего модификацию в памяти. Описанное в разделе 17.3 окно TOCTOU, следовательно, открыто. Предполагаемая граница безопасности по-прежнему полностью зависит от того, что SystemOS не взаимодействует с ERA (GameOS).
`HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\KeyGuard\Status`
IsSecureKernelRunning = 0x0
Secure Kernel (VTL1) не запущен в SystemOS, что подтверждает: HVCI не может быть активна. Это осознанный компромисс в пользу производительности — никаких накладных расходов VTL1 на активность ядра в игровом цикле. Граница безопасности — это сам раздел гипервизора, а не защита памяти внутри раздела. Модель целостности кода (раздел 17), следовательно, действует только во время загрузки и не имеет защиты TOCTOU.
---
## 19. Пространство имён IPC гипервизора sevpipe
Пользовательское пространство имён именованных каналов Windows (`\\.\sevpipe\`), служащее основной магистралью IPC для всех специфичных для Xbox межпроцессных и межраздельных коммуникаций. На уровне протокола это не конструкция гипервизора — под ним стандартная семантика именованных каналов Windows, зарегистрированная в пользовательском пространстве имён устройств, чтобы скрыть её от обычных инструментов перечисления каналов.
### 19.1 Полная опись каналов
EtxForwarder <- телеметрические данные
EtxForwarderToUploaderControl <- управление телеметрией
XrfsPipe <- межраздельная файловая система
ERASwapChainPipe <- кадровый буфер ERA (динамический)
ERAPresentPipe <- сигналы present ERA (динамический)
XvioAudioPipe <- аудио ERA (динамический)
XvioAudioEventPipe <- аудиособытия ERA (динамический)
XboxOneAudioStatePipe <- состояние системного аудио
XTF_SYSTEM_TO_TITLE <- канал команд XTF (динамический)
XTF_TITLE_TO_SYSTEM <- канал ответов XTF (динамический)
CloudStreamingServer <- xCloud (динамический)
\SEVPipe\epmapper <- сопоставитель конечных точек RPC Xbox
\SEVPipe\epmapperX <- расширенный сопоставитель конечных точек RPC
Динамические каналы существуют только когда активна ERA, запущена сессия XTF или идёт потоковая передача xCloud.
### 19.2 Карта контроля доступа
EtxForwarder <- DevToolsUser WRITE
EtxForwarderToUploaderControl <- DevToolsUser WRITE
XrfsPipe <- только SYSTEM
ERASwapChainPipe <- только SYSTEM
ERAPresentPipe <- только SYSTEM
XvioAudioPipe <- только SYSTEM
XTF_SYSTEM_TO_TITLE <- только SYSTEM
### 19.3 Конвейер телеметрии
Процесс вызывает EtxEventWrite()
↓
EtwPlus.dll
↓ записывает в
\\.\pipe\EtxUploader
↓
EtwUploader.exe (PID 1808, SYSTEM)
↓ пересылает в
\\.\sevpipe\EtxForwarder <- данные
\\.\sevpipe\EtxForwarderToUploaderControl <- управление
↓
NetworkTransferManagerService.exe (PID 2040, SYSTEM)
↓
[неизвестная конечная точка, динамическая загрузка библиотеки]
↑
DevToolsUser может внедряться в EtxForwarder и управлять каналом
`EtwPlus.dll` является специфичным для Xbox (`FileDescription: Xbox ETW Plus API`), версия `10.0.26100.7010`. Экспорты приостановки/возобновления, вероятно, являются заглушками в розничных сборках: три экспорта используют один и тот же RVA.
### 19.4 videoserver.exe — захват экрана по RTSP (скорее всего, остаток от [Xbox Dev Mode Companion](https://apps.microsoft.com/detail/9nblggh519cp))
Порт: 11442 (захардкожен в бинарнике). Зависимости:
Windows.Xbox.Graphics.Display.Internal.DisplayManager
Windows.Xbox.System.Internal.GameStreaming.GameStreamingAgent
Windows.Xbox.Media.Capture.ApplicationClipShell
**Ключевой вывод:** Похоже, не работает должным образом. Не найден способ доступа к видеопотоку изнутри или снаружи консоли.
Захардкоженные пути/флаги:
DisableXboxDevToolsTelemetry <- переменная окружения для подавления его телеметрии
VideoServerMaxPacketSize <- настраивается через переменную окружения
EnableVideoServer <- флаг WdConfig, подтверждён здесь
OSDATA\...\DevkitProperties <- читает свойства devkit во время выполнения
### 19.5 OneSettings / схема Центра обновления Windows
Xbox несёт полную схему нацеливания Центра обновления Windows, включая записи нацеливания `XBOXMOBILE` и пути в кусте реестра `WCOS`, что подтверждает: Xbox Series S работает на фундаменте Windows Core OS (WCOS), общем с HoloLens и Surface Hub. ОС — это слегка кастомизированная Windows 11 24H2, а не специально созданная платформенная ОС.
---
## 20. Топология разделов гипервизора
`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\HvSocket\Addresses`
LocalAddress = {REDACTED_GUID} GUID раздела SystemOS
ParentAddress = {REDACTED_GUID} нулевой родитель
SystemOS считает себя **корневым разделом** (это ложь; корень — Host OS). Игровой раздел ERA является дочерним для SystemOS. GUID раздела ERA не доступен SystemOS ни через один доступный путь реестра и, возможно, рандомизирован.
### Подстановочные конечные точки HvSocket между разделами
`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\HvSocket\WildcardDescriptors`
Четыре GUID служб, вычисленные через SHA1-вычисление SID службы:
| GUID | Служба | Назначение |
|------|--------|------------|
| `REDACTED_GUID` | DiagTrack | Канал телеметрии 1 |
| `REDACTED_GUID` | DiagTrack | Канал телеметрии 2 |
| `REDACTED_GUID` | RpcSs | Межраздельный RPC |
| `REDACTED_GUID` | EventLog | Пересылка событий между разделами |
DiagTrack, RpcSs и EventLog — полноправные граждане межраздельного взаимодействия. Телеметрия игр, RPC-вызовы и события передаются из ERA в SystemOS через выделенные каналы сокетов гипервизора, невидимые для всего, что работает внутри ERA.
---
## 21. Конфигурация графики
`HKLM\SYSTEM\CurrentControlSet\Control\GraphicsDrivers`
WddmVersion_Max = WddmVersion_Min = 0x9C4 (WDDM 2.5) зафиксировано, не согласовывается
DisableCcdDatabase = 1
DisableHpdHandling = 1
DisableUsingMonitorPowerForSimulatedMonitor = 1
DirectFlipMemoryRequirement = 0x40 (64MB)
PinnedMemoryLimit = 0x59 (89MB)
AdapterMPO_3 = 1 включён MPO уровень 3
Версия WDDM зафиксирована, а не согласовывается; конвейер отображения принадлежит прошивке и гипервизору, WDDM не участвует в обработке мониторов. MPO уровень 3 (`AdapterMPO_3`) — это то, как кадровый буфер игры ERA и UI SystemOS объединяются без программного блита между разделами: каждая поверхность занимает отдельную аппаратную плоскость оверлея.
---
## 22. WdApp.exe — менеджер пакетов и инструмент управления жизненным циклом приложений
`J:\tools\WdApp.exe` — это полноценный менеджер пакетов и менеджер жизненного цикла приложений для платформы приложений Xbox. Полная поверхность команд:| Команда | Назначение |
|---------|------------|
| `install` | Потоковая установка собранного пакета с веб-сервера, сетевой шары или локального пути |
| `register` / `unregister` | Регистрация/отмена регистрации пакетов приложений из свободных файлов |
| `registerdrive` | Регистрация всех приложений на целевом диске за один раз |
| `registernetworkshare` | Установка из UNC-сетевой шары с опциональными учётными данными |
| `registerscratch` | Регистрация с scratch-диска разработчика |
| `registertitlescratch` | Регистрация с ERA title scratch-диска |
| `launch` | Запуск по AUMID, пути к exe или URI |
| `terminate` / `suspend` | Остановка или приостановка запущенного приложения |
| `uninstall` | Удаление приложения или его частей |
| `list` | Вывод списка всех зарегистрированных приложений |
| `listdlc` | Вывод списка установленного DLC |
| `move` / `copy` | Перемещение или копирование пакета |
| `movedrive` / `copydrive` | Перемещение или копирование всех пакетов на диске |
| `applyconfig` | Запуск ERA game OS с указанными настройками или `game.config`/`.xvd` |
| `queryconfig` | Вывод 4-частного номера версии запущенной game OS |
| `queryversioninfo` | Запрос версии game OS для указанного пакета |
| `collectxip` | Сбор XIP-трассировки |
| `lastgamedetails` | Получение сведений о последней запущенной игре |
| `installkey` | Установка ключа на консоль |
| `installplan` | Установка плана на консоль |
| `overlayfolder` | Управление папками наложения пакетов |
### Примечательные находки
**`applyconfig [game.config | ERA.xvd]`** — прямое управление загрузкой раздела ERA из командной строки. Принимает либо `.xvd`-образ диска XVD, либо файл настроек `game.config`. При запуске без аргументов запускает последнюю использовавшуюся game OS. В системе без предыдущего игрового контекста возвращается `0x87E50002` (подсистема ERA, XVD не найден).
**`/drive=Retail`** — команда `install` принимает `Retail`, `Development` и `Ext1-Ext7` в качестве указателей целевого диска, что позволяет устанавливать пакеты непосредственно в розничный раздел хранения из оболочки разработчика.
**`/WaitToExit`** — при использовании в `launch` заставляет WdApp выступать родительским процессом для запущенного процесса и перехватывать коды выхода. Системные приложения отклоняют это с `0x8D160121` (подсистема Xbox PLM, неверный родительский жизненный цикл). Запуск без `/WaitToExit` выполняется успешно, поскольку ShellCoreService сохраняет владение жизненным циклом.
**Кодировка AUMID в `launch`** — AUMID системных приложений требуют кодировки base64, соответствующей шаблону, используемому в QuickActions-скриптах `.xboxunattend`:```
WdApp.exe launch <base64(FamilyName!AppId)>
Веб-сервер Device Portal (WebManagement.exe, PID 2344) обслуживает свой фронтенд из M:\windows\WebManagement\www\default\. Полная схема REST API задокументирована в js\RestDocumentation.json (40 КБ).
Аутентификация: HTTP Basic auth через HTTPS-порт 11443. Учётные данные — имя пользователя Device Portal и PIN-код, заданные при активации режима разработчика.
Некоторые конечные точки несут флаги ограничений, которые отключают их на retail-консолях в режиме разработчика:
Живые дампы процессов пользовательского режима (/api/debug/dump/usermode/live?pid=<pid>) являются nonRestrictable и успешно выполняются в retail dev mode.
Получен через GET /api/resourcemanager/processes. Избранные примечательные процессы:
Три экземпляра xnetsharedservice.exe (PID 2032, 2764, 2844) работают одновременно под SYSTEM, что указывает на отдельные экземпляры сетевого моста для разных межраздельных каналов.
Рабочий набор eracontrol.exe объёмом 991 КБ при отсутствии запущенной игры подтверждает, что он полностью управляется событиями: в простое он почти не хранит состояние, пробуждаясь только на события жизненного цикла ERA.
Воздействие: том
Deploy:\локально ограничен для доступа из пользовательского пространства, но это ограничение обходится через путь сетевого ресурса посредством junctionS:\Deployment\SoftwareDistribution\. ETL-трассировки обновлений, путь к базе данных WU и URL конечной точки SLS (включая идентификатор платформы и установленные языковые пакеты) полностью читаемы.
S:\Deployment\SoftwareDistribution\ — это junction на скрытый том устройства ядра Deploy:\.
Было захвачено два сеанса обновления:
Сеанс 1: 9 марта 2026 г., 18:25:23
DataStore.edb не существовал (создан заново в этом сеансе)https://slscr.update.microsoft.com/SLS/{REDACTED_GUID}/x64/10.0.26100.7010/00x8024402C (нет интернета). Проверка обновлений не завершена.Сеанс 2: 10 марта 2026 г., 03:59:18
DataStore.edb0x8024402C03:59:24, через 6 секунд после того, как служба уже завершилась сбоем и отказалась от сеанса04:09:19 с кодом выхода 0x240001Примечание: в обоих сеансах сеть была недоступна при инициализации службы WU, из-за чего она отказалась от проверки обновлений. Сеанс 2 вышел в сеть через 6 секунд после того, как служба уже вышла из фазы обнаружения, что указывает на отсутствие повторной попытки подключения в конвейере обновлений после неудачи первоначальной проверки сети.
https://slscr.update.microsoft.com/SLS/{SERVICE_GUID}/x64/{BUILD}/0
?CH=928 catalog hash / change counter (928 in session 1, 19 in session 2)
&L=en-US;... 31 installed language packs
&PT=0xc0 platform type: Xbox
&WUA=1451.2510.27012.0 Windows Update Agent version
PT=0xc0 — это идентификатор платформы Xbox, встраиваемый в каждую проверку обновлений. CH уменьшился с 928 до 19 между сеансами, что согласуется со счётчиком состояния каталога, который сбрасывается при пересоздании базы данных.
[REDACTED] — идентификатор конфигурации службы Xbox Windows Update, присутствующий в подкаталоге SLS\ и встраиваемый в каждый URL SLS-запроса.
Внутренние пути сборки Azure DevOps, раскрытые через отладочную инструментовку:
C:\__w\1\s\src\Client\comapi\DiscoveryJob.cpp
C:\__w\1\s\src\Client\comapi\XxxJob.cpp
C:\__w\1\s\src\Client\lib\DownloadFile\DownloadSession.cpp
C:\__w\1\s\src\Client\Engine\handler\UHManager\uhmgr.cpp
C:\__w\1\s\src\Client\lib\util\fileutil.cpp
C:\__w\1\s\src\Client\lib\wusyshelper\wusyshelper.cpp
C:\__w\1\s\ — стандартный путь рабочей области self-hosted агента Azure DevOps. Клиент Xbox Windows Update использует общий исходный код с настольным Windows Update: это одна и та же кодовая база, скомпилированная для целевой платформы Xbox.
GUID таймера REDACTED_GUID был установлен в сеансе 1 и пережил перезагрузку в сеанс 2. Он хранится вне DataStore.edb (вероятно, в реестре) и планирует следующую проверку обновлений независимо от жизненного цикла базы данных.
xbtplinkc.sys — клиент транспортной связи XVIO (XVIO Transport Link Client)Анализ импортов раскрывает всю поверхность API кольцевого буфера XVIO и механизм трансляции GPA:
XvioAcquireRingBufferRundown / XvioReleaseRingBufferRundown
XvioSignalFlag
XvioWriteRingBuffer
XvioGetIncomingRingBufferAvailableBytes
XvioReadRingBufferEx
XvioInitialize
XvioGetRingBufferContext
XvioCreateRingBuffer
XvioGetReservedMemory reserved hypervisor memory carve-out
XvioTranslateXrfsGuestGpa translate ERA guest physical address for SystemOS access
XvioTranslateXrfsGuestGpa — это примитив межраздельной разделяемой памяти. ERA передаёт SystemOS физический адрес гостя (Guest Physical Address); SystemOS вызывает эту функцию, чтобы получить пригодное к использованию отображение. Это механизм, стоящий за захватом GameDVR, компоновкой кадрового буфера и межраздельным аудио.
xbtplinkc также импортирует XpalIsCapabilityEnabledByVm из xpalk.dll; суффикс ByVm означает запрос состояния возможности на уровне гипервизора, а не на уровне ОС, что подтверждает: перед продолжением проверяется, включил ли возможность сам гипервизор.
xrfs.sys — файловая система Xbox RuntimeПолноценный драйвер файловой системы NT. Анализ импортов подтверждает, что он реализует настоящую семантику файловой системы: Cache Manager (Cc*), MDL I/O, блокировки файлов (FsRtl*), построение дескрипторов безопасности, обобщённые таблицы AVL-деревьев для индексации каталогов.
Ключевые отличительные импорты:
FsRtlRegisterFileSystemFilterCallbacks
IoRegisterFileSystem
RtlCreateSecurityDescriptor / RtlCreateAcl / RtlAddAccessAllowedAce
XpalIsCapabilityEnabled
WppRecorder.sys in-memory ETW trace recorder
xrfs.sys не импортирует XVIO напрямую. Вместо этого xbtplinkc.sys импортирует XvioTranslateXrfsGuestGpa: XRFS — это уровень файловой системы, а XVIO обеспечивает трансляцию GPA под ним.
ERA game process
↓
ERA kernel / XVIO guest side
↓ [hypervisor shared memory / GPA translation via XvioTranslateXrfsGuestGpa]
SystemOS: xbtplinkc.sys (ring buffer transport)
↓
SystemOS: xrfs.sys (NT filesystem semantics)
↓
S:\Shares\TitleScratch (junction, target redacted by OS)
↓
SystemOS userspace / shell
Ключевые Xbox-специфичные импорты:
XCRDAPI.dll — прямое управление монтированием XVD:
XCrdSetEraLaunchMapping associates XVD content with ERA partition pre-launch
XCrdMountContentType mounts content categories into ERA
XCrdUnmount tears down ERA content mounts
XCrdOpenAdapter / XCrdCloseAdapter
XCrdQueryDevicePath / XCrdBuildPath
XCrdDeleteXVD
XCrdSuspendResumeIoBalancer
XCrdIsCorruptionError
XCrdFreeDevicePathBuffer
ntdll.dll
NtOpenPartition
RtlSetProcessIsCritical
RtlWaitForWnfMetaNotification / RtlPublishWnfStateData
NtQueryWnfStateData / NtDeleteWnfStateName
ext-ms-win-xblauth-console-l1-1-0.dll (отложенная загрузка):
XblaInitialize bootstraps Xbox Live auth identity into ERA partition
ext-ms-win-ntuser-rim-l1-1-0.dll (отложенная загрузка):
RIMAddInputObserver / RIMRemoveInputObserver intercepts raw controller input for ERA routing
SspiCli.dll:
LogonUserExExW creates user logon tokens for the ERA session
ext-ms-win-session-usermgr-l1-1-0.dll (отложенная загрузка):
UMgrOpenProcessHandleForAccess
RPCRT4.dll:
RpcServerInqCallAttributesW / I_RpcBindingInqLocalClientPID RPC caller identity verification
eraproxyapp.exe — это компоновщик на стороне SystemOS и IPC-мост между разделом ERA и оболочкой. 339 КБ, существенно больше, чем eracontrol.exe (249 КБ).
Компоновка кадрового буфера:
d3d11.dll: D3D11CreateDevice
dcomp.dll: DCompositionCreateDevice
AVRT.dll: AvSetMmThreadCharacteristicsW / AvSetMmThreadPriority / AvRevertMmThreadCharacteristics
eraproxyapp создаёт устройство D3D11 и устройство DirectComposition для компоновки кадрового буфера ERA в оболочке SystemOS. Мультимедийный приоритет потоков AVRT обеспечивает доставку кадров с низкой задержкой.
Межраздельный IPC через ALPC:
ntdll: NtAlpcConnectPort / NtAlpcAcceptConnectPort
NtAlpcSendWaitReceivePort
NtAlpcCreatePortSection / NtAlpcCreateSectionView
NtAlpcDeletePortSection / NtAlpcDeleteSectionView
NtAlpcDisconnectPort / NtAlpcCancelMessage
Секции портов ALPC обеспечивают разделяемую память с нулевым копированием. Кадровый буфер игры ERA не копируется: он разделяется через представления секций ALPC, отображаемые одновременно в обоих адресных пространствах.
Приватное пространство имён (защищённый IPC-канал):
CreatePrivateNamespaceW / OpenPrivateNamespaceW
CreateBoundaryDescriptorW / AddSIDToBoundaryDescriptor / DeleteBoundaryDescriptor
ClosePrivateNamespace
bcrypt: BCryptGenRandom / BCryptHashData / BCryptCreateHash / BCryptFinishHash
eraproxyapp устанавливает приватное пространство имён объектов с граничным дескриптором на основе SID — именованное пространство имён объектов, видимое только ERA и SystemOS. BCrypt предоставляет случайный ключевой материал для границы.
Идентичность тайтла и аудио:
XboxLiveTitleId.dll: GetCurrentXboxLiveInfo identifies the running title
xamapi.dll: XamApiDisableLayoutScaling
ConsoleGlobalization.dll: GetConsoleGlobalizationInfo
api-ms-win-audiocore-spatial-config-l1-1-0.dll: Create_SpatialAudioDevicePropertyReader
Именованные каналы:
CreateNamedPipeW / ConnectNamedPipe / DisconnectNamedPipe
XblAuthConsoleExt.dll — аппаратная идентичность и аутентификация (46 экспортов)Идентичность консоли:
XblaGetConsoleCert / XblaGetConsoleId / XblaGetConsoleSerialNumber
XblaGetDevkitType retail vs devkit detection
XblaGetXblSandbox Xbox Live environment (retail/preview/dev)
Идентичность тайтла:
XblaGetXboxLiveTitleId
XblaGetTitleAttestation / XblaGetTitleConsoleGeneration
Криптография:
XblaSignDigest sign with console private key
XblaGetAttestation / XblaGetTpmPcrAttestation fTPM PCR boot chain measurements
XblaProcessChallenge / XblaProcessSpToken
XblaGetTpmPcrAttestation подтверждает, что консоль выполняет полную аттестацию цепочки загрузки. Microsoft может криптографически проверить точное состояние последовательности загрузки, когда консоль аутентифицируется в Xbox Live.
| Инструмент | Назначение |
|---|
| Windows Explorer | Сетевой ресурс Xbox (инструкции по адресу https://XBOX:11443/#File%20explorer > Обзор) |
SSH (DevToolsUser + PIN-код VS) | Доступ к оболочке SystemOS |
mklink /J | Создание NTFS junction для предоставления доступа к дискам через сетевой ресурс |
Device Portal (https://XBOX:11443) | REST API, файловый браузер, список процессов, живые дампы |
dumpbin /IMPORTS, dumpbin /EXPORTS | Статический анализ PE-бинарных файлов через сетевой ресурс |
| Python | Скрипт для автоматизации REST API |
| Phasor | Скриптовый рантайм для использования на консоли (копируется через сетевой ресурс, запускается по SSH) скачать здесь |
reg query | Перечисление реестра из SSH-оболочки |
WdApp.exe | Менеджер пакетов и управление жизненным циклом ERA (перечисление командной поверхности) |
WdConfig.exe | Перечисление API настроек консоли |
| Анализ ETL-трассировок | Конвейер Windows Update через junction S:\Deployment\SoftwareDistribution\ |
| Живые дампы процессов | GET /api/debug/dump/usermode/live?pid=<pid> |
| Ghidra | Анализ COM-интерфейсов / драйверов |
| IDA Pro | Графы вызовов сложных DLL и COM-интерфейсов |
| XboxTools | Моя собственная коллекция утилит для разных задач |
| Пространство имён | Базовый URI | Ключевые конечные точки |
|---|
| Развёртывание приложений | /api/appx/packagemanager/ | установка, удаление, список пакетов, группы контента |
| Диспетчер устройств | /api/devicemanager/ | полное иерархическое дерево устройств |
| Сбор дампов | /api/debug/dump/ | живые дампы процессов, дампы bugcheck, управление сбоями |
| ETW | /api/etw/ | ETW в реальном времени через WebSocket, перечисление провайдеров |
| Проводник файлов | /api/filesystem/ | просмотр, загрузка, скачивание, удаление, переименование |
| Сеть | /api/networking/ | ipconfig |
| Информация об ОС | /api/os/ | имя машины, информация об ОС |
| Производительность | /api/resourcemanager/ | живой список процессов с CPU/памятью, системная статистика производительности |
| Питание | /api/power/ | батарея, схемы питания, отчёты sleep study |
| Удалённое управление | /api/control/ | перезагрузка, завершение работы |
| Диспетчер задач | /api/taskmanager/ | запуск/остановка приложений, завершение процессов |
| Bluetooth | /api/bt/ | перечисление, сопряжение, подключение аудиоустройств |
| WiFi | /api/wifi/ | перечисление интерфейсов/сетей, подключение, отключение |
| WER | /api/wer/ | перечисление и скачивание отчётов Windows Error Reporting |
| WPR | /api/wpr/ | запуск/остановка/скачивание трассировок производительности WPR, пользовательские профили |
| Флаг | Затрагиваемые конечные точки |
|---|
NoKernelDumps | Живой дамп ядра, скачивание дампа bugcheck |
NoUserModeDumps | Живой дамп процесса (по PID) |
NoBugcheckDumps | Список/скачивание/управление дампами bugcheck |
NoWPRBootTracing | Трассировка WPR при загрузке |
NoPowerSchemeAccess | Чтение/запись схемы питания |
| Файл | Размер | Назначение |
|---|
RestDocumentation.json | 40 КБ | Полная машиночитаемая схема REST API |
workspace-definitions.js | 26 КБ | Раскладка панелей рабочей области портала (вторичный индекс API) |
common-xbox.js | 21 КБ | Xbox-специфичные дополнения портала поверх базового Device Portal |
common.js | 56 КБ | Базовый фреймворк Device Portal |
toolhost.js | 7.8 КБ | Слой хостинга инструментов |
rest.js | 19 КБ | Библиотека построения REST-вызовов |
d3.js | 570 КБ | Визуализация данных D3 |
konva.js | 676 КБ | Рендеринг Canvas |
| PID | Образ | Пользователь | Примечания |
|---|
| 156 | (hidden) | SYSTEM | рабочий набор 66 МБ, имя образа не отображается |
| 1456 | xbdiagservice.exe | SYSTEM | служба диагностики Xbox |
| 1808 | EtwUploader.exe | SYSTEM | загрузчик телеметрии ETW |
| 1832 | StorageManagement.exe | DefaultAccount | UWP Xbox.StorageManagement, IsRunning: false (приостановлен) |
| 1904 | ApplicationClipService.exe | SYSTEM | управление клипами GameDVR, рабочий набор 37 МБ |
| 2032 | xnetsharedservice.exe | SYSTEM | межраздельный сетевой мост |
| 2040 | NetworkTransferManagerService.exe | SYSTEM | менеджер загрузки контента Xbox |
| 2344 | WebManagement.exe | SYSTEM | веб-сервер Device Portal |
| 2416 | XUpdMgr.exe | SYSTEM | менеджер обновлений Xbox |
| 2436 | PRProvisioningService.exe | NETWORK SERVICE | служба подготовки PlayReady |
| 2460 | XNetConfig.exe | SYSTEM | сетевая конфигурация |
| 2468 | toolsautoexec.exe | SYSTEM | раннер автоисполнения скрипта .xboxunattend |
| 2572 | sihost.exe | DefaultAccount | хост инфраструктуры оболочки, рабочий набор 60 МБ |
| 2836 | XboxDevService.exe | SYSTEM | хост службы разработчика Xbox, 37 МБ |
| 3160 | xrun.exe | DefaultAccount | координатор запуска игр на стороне оболочки |
| 3256 | MicrosoftXboxSecurityClip.exe | SYSTEM | хост проверки DRM в рантайме |
| 3600 | XboxUI.exe | DefaultAccount | UI оболочки Dashboard, рабочий набор 60 МБ |
| 3844 | xrfssvc.exe | SYSTEM | межраздельная файловая служба XRFS, 352 КБ (простаивает) |
| 3864 | xrmntcl.exe | SYSTEM | клиент монтирования Xbox Runtime |
| 3888 | xtfrtservice.exe | SYSTEM | служба рантайма XTF |
| 4320 | Guide.exe | DefaultAccount | Xbox Guide (Xbox.Guide_2602.0.2602.11003), IsRunning: true |
| 4548 | eracontrol.exe | SYSTEM | менеджер жизненного цикла раздела ERA, рабочий набор 991 КБ |
| 4660 | WWAHost.exe | DefaultAccount | Dev Home (Microsoft.Xbox.DevHome_1.0.2601.4001), IsRunning: true |
| 6524 | CastSrv.exe | DefaultAccount | служба трансляции Miracast |