Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
XboxSeries — Investigación personal sobre la arquitectura de Xbox Series | Kitploit
Herramientas/GitHubGitHub/daniellmcguire/xboxseries
Seguridad de Sistemas EmbebidosAnálisis EstáticoAnálisis Dinámico (Sandboxing)Ingeniería InversaDepuradoresSeguridad de HardwareAnálisis de BinariosAprendizaje y EducaciónAnálisis de Firmware
GitHubdaniellmcguire/xboxseries

XboxSeries

Investigación personal sobre la arquitectura de Xbox Series

574hace 1 mesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver RepositorioSitio web

Xbox Series: Investigación de la Arquitectura Interna

CampoValor
Fecha9-12 de marzo de 2026 + 7-? de julio de 2026
HardwareXbox Series S (Nombre en clave: Lockhart)
Compilación del SO26100.7010.amd64fre.xb_flt_2602ge.260212-1010 + 26100.8561.amd64fre.xb_flt_2606ge.260609-2200
Método de accesoModo desarrollador + SSH + API REST + unión de recurso compartido NTFS

Resumen

Este informe es un análisis estático y dinámico de la arquitectura interna de la Xbox Series S, realizado íntegramente a través de la infraestructura oficial de modo desarrollador de Microsoft. No se utilizaron exploits ni se violaron políticas; todo el acceso se mantuvo dentro de los límites del programa de desarrollador individual.

Contiene detalles desde los componentes de más alto nivel utilizados para el juego, hasta los componentes de controladores de sistema de más bajo nivel. Se espera que la mayoría de estos detalles sean los mismos también para Xbox One.


Aclaraciones

Se utilizó IA para formatear de manera consistente la gran investigación inicial (más de 200 salidas de análisis y más de 50 notas aleatorias) muy rápidamente. Todas las ediciones futuras se hacen a mano.

Si crees que algún punto de esto es poco claro, está poco documentado o es falso, no dudes en escribirme por DM, o si tienes respuestas a mis preguntas (en la Sección 12), también sería genial. Los GUID y otros patrones comunes se redactan en un hook de pre-commit por si acaso dejo algo que identifique mi cuenta.

Gran parte de lo que estoy trabajando son suposiciones, por lo que podría ser inexacto y cambiará a medida que obtenga más información y examine más binarios.

Por razones que puedes suponer, bajo ninguna circunstancia compartiré binarios directos, salidas de desensamblado ni nada que se considere propiedad intelectual de Microsoft o sus subsidiarias.

root@kitploit:~
ERA = Partición GameOS
SRA = Partición SystemOS
HT = Kinect (¿posiblemente "Human Tracking"?)
Arden = Pila de GPU de Xbox Series X/S
NewBe = Compilador de shaders de Arden

Hallazgos Clave

Existe una gestión de controladores por parte del Host OS fuera del modelo conocido SRA/ERA; ver modelo de confianza (Secciones 4.2, 17.5). XVIO.SYS y XSraFlt.sys son cargados directamente por el hipervisor (a través de HostOS) antes de que Windows se inicialice y están ausentes de todos los volúmenes accesibles. No pueden ser alterados ni siquiera con acceso total al kernel, lo cual constituye el límite de seguridad principal.

HVCI está deliberadamente deshabilitado (Sección 18). IsSecureKernelRunning = 0x0 confirma que el Kernel Seguro (VTL1) no está en ejecución. La integridad del código es solo en tiempo de carga, dejando una ventana TOCTOU una vez que los binarios se mapean. Esto es una compensación deliberada de rendimiento; el límite de seguridad es la partición del hipervisor, no la protección de memoria dentro de la partición.

La unión NTFS expone el sistema de archivos completo de SystemOS a través de la red (Sección 1.2). Un único comando mklink /J desde el shell SSH asigna C:\ o cualquier otra cosa al recurso compartido de archivos de Device Portal, haciendo que cada binario del sistema sea legible remotamente sin autenticación adicional más allá del PIN de modo desarrollador.

La arquitectura entre particiones está casi completamente mapeada (Secciones 4, 14, 26-28). La partición de juego ERA se comunica con SystemOS exclusivamente a través de canales mediados por el hipervisor: búferes de anillo XVIO para E/S, traducción de GPA para memoria compartida, HvSocket para IPC y secciones de puerto ALPC para la entrega de framebuffer de copia cero otorgada por un "Host OS" padre.

La unión Deploy:\ sortea las restricciones de acceso local (Sección 25). El volumen de Windows Update solo es accesible a través del recurso compartido de red (S:\Deployment\SoftwareDistribution\) debido a alguna discrepancia en algún lugar (¿quizás xrfssvc.exe?).

La mayoría de los binarios solo tienen cadenas de descripción; no lo supe hasta hoy porque no estaba usando Windows para nada más que la conexión real con la consola. Muchas veces es aburrido (p. ej., XVUH, XVMCTRL), pero otras veces es muy descriptivo (p. ej., Durango Virtual XVNC Bus Driver, Xbox Remote File System Service).

Alcance y Limitaciones

Todas las pruebas se realizaron en una única unidad minorista de Xbox Series S en modo desarrollador. Los resultados reflejan muchas compilaciones; sin embargo, eventualmente haré un diff de las compilaciones y lo documentaré. Los hallazgos pueden variar entre revisiones de hardware (Series X, Xbox One) y versiones de firmware. Varias superficies a nivel de kernel no eran accesibles: los volcados de kernel en vivo están bloqueados por la restricción NoKernelDumps, y la superficie IOCTL de xvmctrl.sys no se enumeró por completo. Las preguntas abiertas se rastrean en la Sección 12.


Metodología

Herramientas Utilizadas

Enfoque

El acceso se estableció a través de la interfaz SSH del modo desarrollador no documentada (oficialmente, aunque hay documentación comunitaria). La técnica de unión NTFS (Sección 1.2) extendió el acceso de lectura desde el espacio temporal D:\DevelopmentFiles a todo el volumen del sistema C:\ y a todos los volúmenes de letras adicionales. Todo el análisis fue de solo lectura; no se modificó ninguna configuración del sistema (no se usó WdConfig.exe set). Xbox puede ejecutar binarios de consola Windows x86_64 estándar (compilados con /MT) directamente a través del shell SSH, lo que se usó para ejecutar herramientas de análisis localmente.

Los volcados de kernel no estaban disponibles: la restricción NoKernelDumps de Device Portal los bloquea en el modo desarrollador minorista. Los volcados de procesos de usuario en vivo estaban disponibles y se usaron cuando fue relevante.


1. Acceso Remoto

1.1 Acceso al Shell

El modo desarrollador de Xbox es compatible con Visual Studio; esto usa SSH:

  • Usuario: DevToolsUser
  • Contraseña: el PIN de Visual Studio que se muestra en Dev Home

1.2 Acceso al Sistema de Archivos

El Device Portal en https://XBOX:11443 expone un recurso compartido de archivos NTFS oculto a D:\DevelopmentFiles. Desde el shell SSH:```batch mklink /J D:\DevelopmentFiles\C C:\

root@kitploit:~
Esto crea un punto de enlace desde el espacio temporal de desarrollador hasta la raíz de la unidad C: del sistema, exponiendo todo el sistema de archivos de SystemOS como un recurso compartido de red legible en:

    \\XBOX\DevelopmentFiles\C

Esto permite ejecutar herramientas como `dumpbin` desde un PC directamente contra los binarios del sistema Xbox a través de la red.

---

## 2. Identidad del SO

| Campo             | Valor             |
|--------------------|-------------------|
| Product Name       | Xbox Series S     |
| OS Edition         | SystemOS          |
| Windows NT Version | 10.0              |
| Build Number       | 26100             |
| Build String       | `26100.8561.amd64fre.xb_flt_2606ge.260609-2200` |
| LCUVer             | `10.0.26100.8536` |
| Branch             | `xb_flt_2602ge`   |
| Build Date         | 09 de junio de 2026 |
| Architecture       | x64               |
| UEFI Secure Boot   | `NotCapable`      |
| Console Codename   | Lockhart          |
| Console Mode       | Default           |
| Sandbox ID         | `XDKS.1`          |

El SO se identifica como **SystemOS**, no Windows. La rama de compilación `xb_flt_2602ge` parece ser un «fork» distinto de Xbox del código base de Windows, todavía muy similar a Windows 11. Algunos binarios del sistema Windows son idénticos bit a bit a sus equivalentes de escritorio, compilados con el mismo conjunto de herramientas MSVC, probablemente originados de los mismos paquetes UUP. Esto es independiente del ambiguo «Host OS».

### 2.1 Identidad del registro

Varios campos de `CurrentVersion` se han congelado intencionadamente, de forma similar al Windows de escritorio (para compatibilidad con títulos de Xbox One en este caso):

| Clave | Valor | Notas |
|-----|-------|-------|
| `CurrentVersion` | `6.3` | Se reporta internamente como Windows 8.1, por compatibilidad |
| `BuildGUID` | | puesto a cero/depurado |
| `InstallDate` | `0` | sin marca de tiempo de instalación |
| `EditionID` | `SystemOS` | Nunca actualizado |
| `ReleaseId` | `2009` | Congelado en la era de Windows 10 20H2; nunca incrementado |

---

## 3. Diseño de volúmenes

La consola expone 13 letras de unidad, la mayoría de las cuales se asume que son [como en la Xbox One, totalmente virtuales](https://xboxoneresearch.github.io/wiki/operating-system/xbox-operating-system/)

| Unidad | Etiqueta | Contenido | Notas |
|-------|-------|----------|-------|
| `C:` | System Boot | Archivos del SO Windows | Partición SystemOS estándar |
| `D:` | *(ninguna)* | `DevelopmentFiles\` | Espacio temporal del modo desarrollador |
| `G:` | *(ninguna)* | `GameDVR_VideoBuffer` (272MB), `GameDVR_AudioBuffer` (16MB), `GameDVR_AudioBuffer_SysLoopback` (3MB) | Búferes circulares de captura en bruto, memoria compartida entre ERA y SystemOS |
| `J:` | Sys Tools | Cadena de herramientas XTF, controladores, QuickActions | Ver Sección 5 |
| `M:` | Misc | Contiene las superposiciones NTFS específicas de la consola para bibliotecas y controladores | ¿Partición del System OS? |
| `N:` | *(ninguna)* | `BlackBox\`, `EtwPlus\`, `CMS\`, `errorstrings\`, `usersettings\` | Volumen de diagnósticos y telemetría, ver Sección 3.2 |
| `Q:` | *(ninguna)* | `Users\DevToolsUser\` | directorio de inicio del usuario |
| `S:` | *(ninguna)* | `apps\`, `Clip\`, `Deployment\`, `Prefetch\`, `Microsoft\`, `ProgramData\` | probablemente volumen del Host OS (también contiene aplicaciones predeterminadas y otros recursos) |
| `T:` | *(ninguna)* | `GameDVR\`, `Update\`, junctions a Harddisk16 | Metadatos de GameDVR + pipeline de actualización |
| `U:` | *(ninguna)* | `ShellState\`, `BackCompatLicenses\`, `UserDataCache\` | Estado del shell y del usuario |
| `V:` | *(ninguna)* | *(vacía)* | Propósito desconocido |
| `X:` | SystemAux | `Apps\`, `Catalog000.bin` (2.3MB) | Binarios de aplicaciones del sistema: 63 aplicaciones, incluidas `AdsLauncher`, `Xbox.DiscordComponent`, `Xbox.SingleUserProxy`, `Xbox.NTSCaptivePortal`, `Xbox.Xmap`, `Xbox.XboxIDP`, ver Sección 3.3 |
| `Y:` | SystemAuxF | `Apps\`, `Catalog000.bin` (6.5MB) | Binarios secundarios de aplicaciones del sistema |

Además, existe `\\.\HarddiskVolume10` sin asignación de letra de unidad. Hay un volumen WER (Informes de errores de Windows) oculto que contiene `CrashDumps\`, `ReportArchive\`, `ReportQueue\` y `Temp\`. Existen al menos **18 objetos de dispositivo de disco físico** (`PhysicalDrive0` a `PhysicalDrive17`), todos presentes como objetos de kernel pero inaccesibles a nivel bruto desde el espacio de usuario. `HarddiskVolume16` y `HarddiskVolume18` existen como volúmenes reales accesibles, pero están bloqueados para `DevToolsUser`.

### 3.1 Rutas de dispositivo de kernel ocultas

Las siguientes rutas existen como objetos de dispositivo de kernel, pero son inaccesibles desde el espacio de usuario (normalmente):

- `\??\Deploy:\` volumen del pipeline de actualización/implementación de Xbox (accesible mediante junction sobre el recurso compartido de red en `S:\Deployment\`)

### 3.2 Volumen de diagnósticos N:\

Varios directorios en `N:\` están ocultos activamente por un controlador de filtro del sistema de archivos a nivel de kernel, ya que parecen vacíos para todas las herramientas de espacio de usuario, pero se confirma que reciben escrituras en tiempo de ejecución:

| Ruta | Estado | Notas |
|------|--------|-------|
| `N:\EtwPlus\` | **Oculto por kernel** | Contenido oculto por el controlador de filtro del sistema de archivos |
| `N:\BlackBox\` | Accesible | Contiene datos de telemetría de informes de fallos ETL específicos de Xbox |
| `N:\errorstrings\en-US.json` | Accesible | La base de datos completa de cadenas de error de Xbox contiene 797 entradas, ver Sección 3.4 |
| `N:\usersettings\18\public\` | Accesible | Gamerpic de calidad completa almacenado como PNG sin extensión (1080×1080 RGBA, formato PNG estándar) |

`N:\usersettings\18\public\` almacena tanto `AppDisplayPic` como `GameDisplayPic` como archivos sin extensión. El hash SHA256 confirma que son idénticos byte a byte; la imagen de visualización de la aplicación y el gamerpic son el mismo archivo escrito en dos rutas.

### 3.3 X:\ SystemAux

`X:\ht\versions\` contiene una pila de visión Kinect activa con **tres versiones simultáneas** instaladas una al lado de la otra (1.0.0, 1.0.1, 1.0.2), con un total de 119MB. Corresponden a compilaciones de `vvtechs.dll` con versiones 1.67MB->1.70MB->1.85MB respectivamente.

**Modelos de ML de seguimiento corporal** (por directorio de versión):

| Archivo | Tamaño | Propósito |
|------|------|---------|
| `exemplardb.xmplr` | 36.7MB | Base de datos de ejemplos de postura de cuerpo completo |
| `FernsModel.bin` | 932KB | Detector de puntos clave de profundidad (clasificador de random ferns) |
| `HeadPosition.mshdf` | 262–393KB | Estimador de articulación de cabeza (varía según la versión) |
| `LSVMGripReleaseRight.gbd` | 7.5KB | Clasificador SVM latente de agarre/soltado, mano derecha |

**Modelos de ML de seguimiento facial** (en todo el sistema, `C:\Windows\System32\ht\`):

| Archivo | Tamaño | Propósito |
|------|------|---------|
| `FaceDetector.bin` | 3.0MB | Localizar rostros en el fotograma |
| `FaceRecognition.bin` | 3.4MB | Reconocimiento de identidad por profundidad/IR |
| `FaceRecognition_Color.bin` | 5.9MB | Reconocimiento de identidad por canal de color |
| `ExpressionRandomForest.model` | 150KB | Clasificador de emociones |
| `EyeLeftRandomForest.model` | 55KB | Estado del ojo izquierdo |
| `EyeRightRandomForest.model` | 65KB | Estado del ojo derecho |
| `LookingAwayRandomForest.model` | 42KB | Detección de mirada/atención |
| `MouthOpenRandomForest.model` | 58KB | Estado de boca abierta |
| `MouthMovedRandomForest.model` | 35KB | Movimiento de labios |
| `FacialHairIRRandomForest.model` | 126KB | Vello facial (solo sensor IR) |
| `GlassesIRRandomForest.model` | 206KB | Detección de gafas (solo sensor IR) |

Todos los clasificadores de atributos faciales son modelos **Random Forest**. La salida cubre identidad, expresión, mirada, estado de labios y atributos de apariencia.

El `vvtechs.dll` de la pila exporta una única función: `NuiVisionCreateFactory`. Importa `EtwPlus.dll` y `D3D11`, lo que confirma que el pipeline de visión Kinect se ejecuta en la GPU y utiliza la ruta de telemetría específica de Xbox. Esto está activo en hardware sin un Kinect físico conectado (ver también `KinectSensorEnabled=true` en la Sección 6 y el pipeline completo de `nuiservice.exe` en la Sección 33).

### 3.4 Base de datos de códigos de error N:\errorstrings\en-US.json

797 entradas de cadenas de error de Xbox. Códigos notables con relevancia de seguridad o arquitectónica:

| Código de error | Cadena | Notas |
|------------|-----------------|-------|
| `0x887E0002` | Desajuste runtime/controlador de D3D12.X | Confirma que D3D12.X es una variante D3D12 específica de Xbox, no D3D12 genérico |
| `0x80A40406` | Telemetría mejorada de Microsoft habilitada en modo desarrollador | El modo desarrollador incluye explícitamente a la consola en la recopilación elevada de telemetría |

---

## 4. Arquitectura del hipervisor

La Xbox utiliza un hipervisor personalizado basado en Hyper-V que ejecuta dos particiones:

- **SystemOS**, la partición SRA
- **Partición ERA**, el entorno de ejecución GameOS / Title OS

### 4.1 Pila de controladores

    User space:     xpal.dll
                        ↓
    Kernel:         xpalk.dll 
                        ↓
                    xvmctrl.sys (364KB)
                        ↓
    Hypervisor:     XVIO.SYS 

### 4.2 Controladores clave del hipervisor

| Controlador   | Tamaño    | Propósito                                                              |
|-------------------|---------|----------------------------------------------------------------------|
| `xvmctrl.sys`     | 364KB   | Control de VM, interfaz principal del hipervisor, superficie IOCTL                 |
| `XVIO.SYS`        | desconocido | Xbox Virtual I/O, ABI directa del hipervisor (no está en el sistema de archivos de SystemOS) |
| `xvioc.sys`       | desconocido | Cliente XVIO, interfaz del lado de SystemOS hacia XVIO                         |
| `xvbus.sys`       | 73KB    | Raíz de bus virtual + proveedor XVIO de HvSocket                            |
| `hvsocket.sys`    | 185KB   | Implementación de socket Hyper-V                                        |
| `VMNP.SYS`        | 106KB   | Se denomina «NPFS Driver», también maneja suplantaciones.                      |
| `Xrfs.sys`        | 135KB   | Controlador del sistema de archivos de Xbox                                               |
| `XRmnt.sys`       | 49KB    | Controlador de montaje de Xbox                                                    |
| `XRo.sys`         | 95KB    | Filtro de solo lectura de Xbox                                                 |
| `VerifierExt.sys` | 274KB   | Extensión del Verificador de controladores                                            |

**Hallazgo crítico:** `XVIO.SYS` y `xpalk.dll` **no tienen entradas de servicio en el registro** y **están ausentes del sistema de archivos de SystemOS**. Probablemente son cargados por el Host OS antes de que SystemOS se inicie, completamente fuera del modelo de controladores local. Este es el mecanismo de seguridad real; incluso con acceso completo al kernel de SystemOS, estos componentes no pueden ser manipulados.

### 4.3 Superficie de API XVIO (reconstruida a partir de importaciones)

La información sobre XVIO [se puede encontrar aquí](https://xboxoneresearch.github.io/wiki/development/xvio/xvio-overview/), sin embargo no puedo confirmar que las cosas no hayan cambiado desde la Xbox One.

Desde las importaciones de `xvmctrl.sys`, `xviomonc.sys` y `srakmd_arden.sys` contra `XVIO.SYS`:

    XvioInitialize / XvioCleanup
    XvioCreateEvent
    XvioPostMessage
    XvioGetCurrentPartitionId                           (identifica la partición activa, desde xviomonc)
    XvioGetReservedMemory                               (acceso a RAM reservada por el hipervisor, desde srakmd_arden)
    XvioRegisterGpaMdl / XvioUnregisterGpa              (mapeo de direcciones físicas de invitado)
    XvioSfrMapPages / XvioSfrUnmapPages                 (región de fotogramas compartida, memoria GPU entre particiones)
    XvioSfrCounterGet / XvioSfrPerfCounterSet
    XvioSfrReadEvent
    XvioSetFocus                                        (cambia el foco de entrada entre particiones)
    XvioSetSystemTime
    XvioSaveProvidersState / XvioRestoreProvidersState
    XvioPerfMonitoringEnabled
    XvioCreateRingBuffer / XvioDestroyRingBuffer
    XvioGetRingBufferContext
    XvioReadRingBuffer / XvioReadRingBufferEx / XvioWriteRingBuffer
    XvioAcquireRingBufferRundown / XvioReleaseRingBufferRundown

`XvioRegisterGpaMdl` y las funciones SFR son el mecanismo de compartición de memoria del hipervisor: páginas de RAM en bruto y del framebuffer de GPU mapeadas a través del límite de partición.

### 4.4 Servicios entre particiones HvSocket

`hvsocket.sys` expone servicios para la comunicación de sockets entre particiones:

- `HvSocketGetPartitionConnections` / `HvSocketGetPartitionListeners` enumeran canales activos
- `HvSocketGetVmIdFromVmbusHandle`, resolución de identificadores VMBus
- `HvSocketUpdateServiceTable`, registro de todos los servicios entre particiones

Una DLL con nombre GUID `[REDACTED]_hvsocket.dll` registra un proveedor de servicios HvSocket. El GUID se ha redactado en caso de que pudiera ser identificable.

Los cuatro GUID de endpoint HvSocket con comodín se han resuelto mediante el cálculo del SID de servicio SHA1; ver Sección 20 para obtener todos los detalles, incluidos los canales entre particiones DiagTrack, RpcSs y EventLog.

---

## 5. J:\ «Sys Tools» XTF / Volumen de desarrollo

> **Impacto:** El volumen `J:\` está presente en todas las Xbox comerciales. En el modo desarrollador, todo el conjunto de herramientas XTF es accesible sin autenticación adicional más allá del PIN del modo desarrollador. Esto incluye depuración remota, transmisión de pantalla, perfilado de GPU con PIX y APIs de control de consola no destinadas al acceso del usuario final.

El hallazgo más significativo de esta investigación. El volumen `J:\` (etiquetado como «Sys Tools») contiene el **Xbox Tools Framework (XTF)**, el conjunto de herramientas del kit de desarrollo interno de Microsoft, que aparentemente está simplemente presente en todas las Xbox comerciales. Enumeración completa: **132 archivos, 52MB** en todo el volumen.

### 5.1 Registro de extensiones XTF (`J:\tools\xtfextensions.txt`)

Las 20 extensiones XTF están registradas con CLSID COM:

| 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 Depurador remoto de Visual Studio (`J:\tools\debugmon\`)

    msvsmon.exe              
    vsdebugeng.dll (1.5MB)
    vsdebugeng.impl.dll (1.6MB)
    msdia120.dll             
    diagnosticsscripthost.dll
    vsdebuglaunchnotify.exe

Cargas útiles de depuración versionadas para VS 2015 hasta VS 2022 (`debugmondev14payload` hasta `debugmondev16payload`). **Hay tres generaciones simultáneas del depurador remoto de Visual Studio presentes y registradas: VS2015, VS2017 y VS2019**; todas coexisten en el mismo sistema de archivos de la consola comercial.

### 5.3 Otras herramientas notables

| Binario | Propósito |
|---|---|
| `agent-xbox.exe` (1.5MB) | Agente XTF principal |
| `xtfrtservice.exe` (1.3MB) | Host de servicio en tiempo de ejecución de XTF |
| `xstudioserviceexe.exe` | Servicio de Xbox Studio |
| `xperf.exe` | Perfilador de rendimiento de Xbox, presente y funcional; sin embargo, **el seguimiento de kernel ETW está completamente bloqueado independientemente de la herramienta** (ver Sección 5.5) |
| `videoserver.exe` (RTSP) | Servidor independiente de transmisión de pantalla RTSP |
| `wdapp.exe`, `wdconfig.exe` | Herramientas de configuración / Wave Debugger |
| `wdcapture.exe` | Captura de pantallas/video |
| `wdgamestream.exe` | Control de transmisión de juegos |
| `xboxnetapidiagsystem.exe` | Diagnósticos de red de Xbox Live |
| `xbtp.dll` (503KB) | Protocolo de transferencia de banda ancha de Xbox |
| `xraytool.exe` | Herramienta de rendimiento de la consola Xbox (revela el hecho de que existe el Host OS) |
| `xstudioclient.dll` | Biblioteca de cliente de Xbox Studio |
| `unattendedsetuphelper.exe` | Kit de herramientas completo de gestión de consola, ver Sección 5.6 |

### 5.4 Formato QuickActions `.xboxunattend`

`J:\QuickActions\` contiene scripts de automatización en formato `.xboxunattend`. Son scripts batch de Windows simples activados a través de Device Portal. Acciones disponibles:

- `Capture_Screenshot.xboxunattend` llama a `wdcapture.exe screenshot`
- `Capture_Video.xboxunattend`
- `Toggle_ConsoleMode.xboxunattend` alterna los modos de emulación de hardware mediante `WdConfig.exe`
- `Toggle_HDR.xboxunattend`
- `Toggle_Resolution.xboxunattend`
- `Launch_DevHome.xboxunattend` / `Launch_RetailHome.xboxunattend`
- `Suspend_Title.xboxunattend`

`Toggle_ConsoleMode.xboxunattend` revela la lista completa de identificadores de modo de perfilado pasados a `WdConfig.exe`: `AnacondaProfiling`, `LockhartProfiling` y **`Scarlett 40 GB`**.

### 5.5 xperf / WPR

`xperf.exe` y WPR están completamente presentes y funcionales, incluido un perfil WPR `NeuralProcessing`. Sin embargo, todo el seguimiento de kernel ETW está bloqueado por dos códigos de error distintos:

| Código de error | Significado |
|------------|---------|
| `0x80070005` | `Access denied`, rechazo ACL estándar de Windows |
| `0xc5585011` | `Xbox policy block`, **no existe una cadena de error orientada al usuario para este código** (no presente en `N:\errorstrings\en-US.json`) |

La enumeración de proveedores ETW muestra **cero proveedores específicos de Xbox** en el espacio de nombres ETW estándar. Toda la telemetría de Xbox fluye a través de `EtwPlus.dll` utilizando funciones con prefijo `Etx`, una canalización completamente separada del ETW estándar de Windows (ver Sección 19.3).

### 5.6 Herramienta de gestión de consola unattendedsetuphelper.exe

`unattendedsetuphelper.exe` es un ejecutable de gestión de consola que cubre:

- Restablecimiento de fábrica
- Actualización de firmware basada en red
- Inyección de notificaciones/toasts
- Gestión de Device Portal

También sirve como motor en tiempo de ejecución para los scripts `.xboxunattend` (el formato QuickActions documentado en la Sección 5.4).

---

## 6. Superficie de ajustes de WdConfig

`J:\tools\WdConfig.exe` (compilación `10.0.26100.7010`) expone la API completa de configuración de la consola. Ajustes notables:

### Categoría de depuración
| Ajuste | Valor | Notas |
|---|---|---|
| `ConsoleType` | `Lockhart` | Identificador de hardware |
| `ConsoleMode` | `Default` | `AnacondaProfiling`, `LockhartProfiling`, `Scarlett 40GB` |
| `EraGraphicsDriverMode` | `Title Configured` | Opciones: `Retail`, `Instrumented`, `Validated`. El equivalente en SRA es `SraGraphicsDriverMode = Retail`; ERA y SRA usan ajustes de modo de controlador separados |
| `EnableKernelDebugging` | `false` | Evita el desmontaje de ERA tras un bloqueo para la conexión del depurador de kernel |
| `EnablePixMemory` | `false` | Reserva 6048MB adicionales para PIX en el modo Lockhart Profiling |
| `CrashDumpType` | `None` | Opciones: `Triage`, `Mini`, `Heap` |
| `TitlePerformanceOverlay` | `false` | Superposición HUD de GPU/CPU en tiempo real sobre los títulos en ejecución |
| `ExtraTitleMemory` | `0` | Máximo 6048MB en el modo Lockhart Profiling |
| `LastShutdownReason` | `Console crash` | Persistido entre reinicios; mi consola se bloqueó en el último apagado |
| `KinectSensorEnabled` | `true` | **Configurado a true en hardware sin Kinect conectado**, la pila se aprovisiona independientemente de la presencia de hardware |

### Categoría de red
| Ajuste | Valor | Notas |
|---|---|---|
| `UseDebugNicForAllTraffic` | `false` | Existe una NIC de depuración separada, distinta de la NIC comercial. |

### Categoría de almacenamiento
| Ajuste | Valor | Notas |
|---|---|---|
| `DevkitUseRetailConnectedStorage` | `false` | Si está habilitado, el modo desarrollador usaría la partición de almacenamiento conectado comercial. No probado. |
| `RunFromPcDataCacheSizeInGB` | `100` | **100GB reservados por defecto para la caché de títulos Run-From-PC; bloqueado, el usuario no puede cambiarlo** |

### Categoría desatendida
| Ajuste | Valor | Notas |
|---|---|---|
| `AllowUsbUnattendScript` | `true` | Los scripts `.xboxunattend` en USB se ejecutan automáticamente |
| `RunUnattendScriptImmediately` | `false` | Si es true, los scripts USB se ejecutan al arrancar sin aviso de cancelación |

### Notas de seguridad

**Correo electrónico de la cuenta Microsoft almacenado en texto plano.** El almacén de WdConfig del modo desarrollador contiene la dirección de correo electrónico de la cuenta Microsoft vinculada en texto plano. Esto probablemente sea legible por cualquier proceso con acceso SRA.

---

## 7. XCRDAPI.dll API de entrega de contenido de Xbox

`XCRDAPI.dll` es el núcleo de gestión de contenido de la plataforma Xbox. Maneja DirectStorage, instalación progresiva, DRM, xCloud y almacenamiento de blobs en una sola biblioteca.

### 7.1 DirectStorage

    DStorageGetFactory
    DStorageGetMappedControlPage

La implementación de DirectStorage de Xbox está integrada en XCRDAPI, no en un SDK separado.

### 7.2 Ciclo de vida de 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 Instalación progresiva por streaming

    XCrdStreamingStart / XCrdStreamingStop
    XCrdStreamingQueryActiveInstanceId
    XCrdStreamingQueryInformation / InformationByPath / InformationEx
    XCrdStreamingQueryRegionInformation / ByPath
    XCrdStreamingQueryRegionSpecifiers / ByPath
    XCrdStreamingQueueInsertRegion
    XCrdStreamingQueueQueryRegionList / ByPath
    XCrdStreamingAdjustStreamingFlags
    XCrdStreamingQueryRegionIdByOffset

Canalización completa de instalación progresiva con cola de prioridad. Las regiones son fragmentos direccionables de contenido del juego.

### 7.4 Integración XCloud

    XCloudQueryFeatureBits
    XCloudSetFeatureBits

Los indicadores de características de streaming de xCloud se controlan a través de la misma API que el contenido local.

### 7.5 DRM / Atestación

    XCrdQueryAttestationBlob
    XCrdQueryEncryptedInfo / XCrdQueryUnlockInfo
    XCrdIsSideloadedKeyPresent
    XCrdEnableSharedPls / XCrdSetExternalPlsMapping

### 7.6 Sistema de blobs de almacenamiento

    XCrdStorageCreateBlob / DeleteBlob / MoveBlob / CopyBlob
    XCrdStorageReadBlob / ReadBlobEx / WriteBlob / WriteBlobEx
    XCrdStorageQueryBlobAttributes
    XCrdXBlobCreate / Delete / Copy
    XCrdFindFirstBlob / FindNextBlob / FindCloseBlob

### 7.7 Canal de transferencia XVD

    XCrdXvdXferInitialize / Uninitialize
    XCrdXvdXferStart / Stop
    XCrdXvdXferRead
    XCrdXvdXferGetResult

### 7.8 Sistemas de rutas

    XCrdXasBuildPath / XasBuildPathEx / XasKeyQueryValue   (XAS App Store paths)
    XCrdXdsGetVolumeMapping / XdsSetVolumeMapping           (XDS Delivery Service volumes)
    XCrdBuildPath / XCrdParsePath / XCrdUpdatePath
    XCrdQueryDevicePath / QueryDevicePathByPath
    XCrdSetFlatContentPath

---

## 8. xpal.dll Capa de abstracción de plataforma Xbox (50 exportaciones)

API anteriormente no documentada para identidad de hardware, capacidades y administración de energía.

### Identidad de hardware

    XpalGetConsoleCertificate     hardware certificate
    XpalGetConsoleIdCch           console hardware ID
    XpalGetConsoleSerialNumberCch serial number
    XpalGetSmcFirmwareId          SMC firmware version
    XpalGetSouthBridgeType        chipset variant

### Detección de generación / SKU

    XpalIsGen8                    Xbox One
    XpalIsGen9                    Series X/S
    XpalGetGenerationType
    XpalIsHyperV                  hypervisor active
    XpalIsExternalDevkit / XpalIsInternalDevkit
    XpalGetVmType
    XpalGetSystemType / XpalGetServerType / XpalGetConsoleMode


### Indicadores de capacidad

    XpalIsCapabilityEnabled
    XpalIsCapabilityEnabledByVm
    XpalIsFactorySettingEnabled
    XpalGetFactorySettings
    XpalGetCapabilities
    XpalIsFeatureEnabled


### Administración de energía

    XpalInitiateDump              trigger crash dump on demand
    XpalInitiatePowerStateToggle
    XpalInitiateSystemShutdown
    XpalSetWakeupTimer
    XpalQueryPowerToggleSource
    XpalIsInForcedCs / XpalIsTransitioningToConnectedStandby
    XpalIsSilentBootMode
    XpalNotifyForcedCsHeartbeat
    XpalIsRebootRequested
    XpalRefreshPowerChimeMode


### Configuración

    XpalGetXConfig / XpalSetXConfig    Xbox config store (modern EEPROM equivalent)
    XpalSetSystemTime
    XpalSetInformation
    XpalReportUem                      trigger UEM (Universal Error Message)


### ERA / VM de Título

    XpalQueryTitleVmInfo
    XpalWaitForTitleVmTermination
    XpalBackgroundActivityRequest

---

## 9. eracontrol.exe Administrador del ciclo de vida de la partición ERA

`C:\Windows\System32\eracontrol.exe` se ejecuta como LocalSystem (inicio manual) y gestiona el ciclo de vida completo de la partición de juegos ERA. El análisis completo de importaciones está en la Sección 28. Resumen de importaciones clave:

- `NtOpenPartition` abre directamente el identificador de la partición ERA de Hyper-V
- `RtlSetProcessIsCritical` se marca a sí mismo como crítico (el sistema muestra BSOD si falla)
- `XCRDAPI.dll` monta/desmonta XVD de juegos mediante `XCrdSetEraLaunchMapping`
- `RIMAddInputObserver` / `RIMRemoveInputObserver` intercepta la entrada sin procesar del controlador para enrutarla a ERA
- `XblaInitialize` inicia el contexto de autenticación de Xbox Live de la consola
- `LogonUserExExW` crea tokens de inicio de sesión de usuario para la sesión ERA
- `UMgrOpenProcessHandleForAccess` acceso al identificador de proceso del administrador de usuarios
- `PsmQueryBackgroundActivationType` estado de activación en segundo plano

También se encuentra en el mismo directorio: `eraproxyapp.exe` (339KB), el compositor del lado SystemOS y puente IPC entre ERA y el shell. Análisis completo de importaciones en la Sección 29.

---

## 10. Trazas ETL de BlackBox (N:\BlackBox\)

El directorio `N:\BlackBox\` contiene trazas de registrador de vuelo ETW en vivo. Del análisis de una traza capturada:

**Nota:** El formato ETL de Xbox solo se resuelve con 'tracerp'

### Rutas internas del árbol de código fuente (incrustadas en instrumentación de depuración)

    onecoreuap\xbox\xblauth\lib\authmanagerimpl.cpp
    onecoreuap\xbox\xblauth\lib\authmanagertokens.cpp
    onecoreuap\xbox\xblauth\lib\xstsauthorizer.cpp
    onecoreuap\xbox\xblauth\util\httprequest.cpp

### Partes de confianza de autenticación de 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

### Bloqueos capturados

1. **`XboxUI.exe` BEX64** El shell del panel de control sufrió un desbordamiento de búfer de pila (`STATUS_STACK_BUFFER_OVERRUN`, `0xc0000409`) en `XboxUI.Data.dll` en el desplazamiento `0x13eb0`
2. **`MoAppHang`** Bloqueo de la aplicación UWP para el paquete `REDACTED_GUID`

---

## 11. Hallazgos adicionales notables

### WSL presente en Xbox

Los servicios `LxssManager` y `lxcore` están presentes con `LaunchProtected: 0x2` (Proceso protegido) y `SeTcbPrivilege`. WSL en Xbox se ejecuta con confianza a nivel de sistema operativo y, según su uso, casi con certeza está impulsando algo o al menos está relacionado de alguna manera menor con `Xbox.ConsoleXCloudPlayer` (cliente de streaming de juegos xCloud).

wsl.exe está presente, pero **no** es legible.

### Binarios System32 exclusivos de Xbox

DLL notables que no están presentes en Windows estándar:

- `XCRDAPI.dll` entrega de contenido (documentado en la Sección 7)
- `XBBlackbox.dll` registrador de vuelo (documentado en la Sección 30)
- `XBCastRecv.dll` receptor Xbox Cast / Miracast (documentado en la Sección 30)
- `XVMAudioServer.dll` servidor de audio de VM entre particiones
- `Xbox.Shell.Api.dll` / `Xbox.Shell.OneStoreServices.dll` API de shell (documentado en la Sección 30)
- `XboxCommandService.dll` comando/automatización
- `XboxUserSim.dll` automatización de pruebas de interfaz de usuario
- `xboxgipsynthetic.dll` / `xboxsynthetickm.dll` inyección de controlador virtual GIP sintético (documentado en la Sección 30)
- `AppXDeploymentExtensions.xbox.dll` implementación de AppX específica de Xbox
- `xvnapi.dll` API de red virtual de Xbox
- `xbsc_xs.dll` compilador de sombreadores Xbox Series (documentado en la Sección 16.2)

### Servicios presentes pero no documentados

- `EraControlService` ciclo de vida de la partición ERA
- `XvdStreamSvc` (`xnetsharedservice.exe`) streaming de XVD / instalación progresiva
- `XUpdMgr` Administrador de actualizaciones de Xbox (¿separado de Windows Update de alguna manera?)
- `XSraFlt` controlador de filtro Xbox SRA
- `Manufacturing Broker` servicio de aprovisionamiento de fábrica
- `TestSirepSvc` protocolo de pruebas interno SIREP
- `GameCoreController` servicio de controlador de núcleo de juegos GDK
- `ConnectedStorage` servicio de guardado en la nube de Xbox
- `VideoManagerService` gestión de salida de video
- `XBBlackbox` servicio de registrador de vuelo
- `xbdiagservice` servicio de diagnóstico de Xbox
- `XtfRtService` servicio de runtime XTF

Controladores heredados/de bajo nivel adicionales confirmados en el registro de servicios (ver Sección 11.2):

- `Zurich` controlador virtual DVB

### `xvnc` / `xvncbus` Tarjeta de red virtual Xbox

`xvnc.sys` y `xvncbus.sys` son una **pila de NIC virtual**, la enumeración del servicio `xvnc` revela:

    ROOT\xvnc\0000             root/loopback virtual NIC
    {e720983a-...}\wifi\01
    {e720983a-...}\wfd\01      Wi-Fi Direct
    {e720983a-...}\wfd_role0\01

`xvncbus` es un controlador de bus WDF 1.15 que enumera NIC virtuales sobre el adaptador inalámbrico físico. La partición ERA no accede directamente a la pila de red; se comunica a través de `NetXVmService`, que es propietaria de la capa de NIC virtual `xvnc`. El GUID `{e720983a-...}` identifica el hardware del adaptador inalámbrico de Xbox.

### `xviomonc.sys` Cliente de monitor XVIO

Controlador de inicio al arrancar (`Start: 0x1`) que gestiona el foco de la partición de pantalla. Análisis de importaciones:

    XVIO.SYS:   XvioInitialize, XvioCleanup, XvioPostMessage,
                XvioSetFocus, XvioGetCurrentPartitionId  - new XVIO export
    VMNP.SYS:   NpSetupVmImpersonation
    xpalk.dll:  XpalIsCapabilityEnabled

`xviomonc` **no** gestiona datos de framebuffer; es solo un controlador de señalización y gestión de foco. `XvioSetFocus` cambia qué partición tiene el foco de pantalla/entrada; `XvioGetCurrentPartitionId` identifica la partición activa. La captura de fotogramas real la gestiona `srakmd_arden.sys`.

`NpSetupVmImpersonation` de `VMNP.SYS` permite que el controlador de monitor suplante la identidad de seguridad de la partición ERA al acceder a los recursos de pantalla de ERA a través del límite de partición.

### G:\ Búferes GameDVR

Tres archivos en G:\ son búferes circulares sin procesar mapeados en memoria compartidos entre ERA y SystemOS:

- `GameDVR_VideoBuffer` 272MB de captura de video continua
- `GameDVR_AudioBuffer` 16MB de audio del juego
- `GameDVR_AudioBuffer_SysLoopback` 3MB de audio del sistema/interfaz (flujo separado)

---

## 11.1 Hallazgos del registro

### Referencia de la unidad K:\ solo para devkit

`HKLM\SOFTWARE\Microsoft\Durango\XTF` contiene una ruta codificada (hardcoded):

    K:\TDK\Tools\XtfJuno.dll

### `HKLM\SYSTEM\ResourcePolicyStore`

| Nivel | Presupuesto de memoria |
|------|--------------|
| `BackgroundSmall` | 40MB |
| `Background` | (fondo estándar) |
| `Balloon` | 5120MB |

Niveles de política de CPU:

| Política | Asignación de CPU |
|--------|---------------|
| `Paused` | 1% |
| `SoftCapLow` | 10% |
| `SoftCapFull` | 100% |
| `HardCap0` | 0% - completamente congelado |

**Política BeanHog** (¿quizás el presupuesto del proceso de juego en primer plano?):

- Memoria: Nivel de primer plano
- CPU: 100%
- `DoNotKill`: true
- Prioridad: Importancia máxima

---

## 11.2 Arqueología del legado de Xbox One

Tres controladores de la era Xbox One sobreviven en el registro de servicios de la Series S. Dos están deshabilitados; uno está en ejecución activa.

### `Zurich` Pila del decodificador de sintonizador de TV

`zurichs.sys` es el controlador virtual DVB de Xbox One. Estado: **deshabilitado**, pero aún registrado.

Hallazgo clave: `zurichs.sys` importa búferes circulares de `XVIO.SYS`. El sintonizador de TV fue diseñado arquitectónicamente para entregar su flujo de video decodificado a través de los búferes circulares del hipervisor XVIO. El sintonizador también usaba `ZwUpdateWnfStateData` para publicar el estado del sintonizador mediante la infraestructura de notificaciones de Windows (WNF).

### `PetraXC` Dispositivo de control del sensor Kinect

Un controlador de dispositivo virtual WDF ahora identificado como el **dispositivo KinectSensorControl**, la abstracción de hardware del lado del kernel para el sensor de cámara Kinect. Estado: **deshabilitado hasta que llegue el dispositivo** (modelo de inicio bajo demanda de WDF).

Características notables:

- Compilado con **WDF 1.11**, que corresponde a Windows 8, situando su origen en la base del kernel original de Xbox One
- Importa `XVIO.SYS`, lo que significa que se comunica a través del transporte de búfer circular del hipervisor
- Presenta `\\.\KinectSensorControl` como su interfaz de dispositivo, consumida por `KinectMediaSource.dll` en la canalización de nuiservice mediante `DeviceIoControl` (ver Sección 33)

### `pspsra.sys` Puente AMD PSP hacia SRA

Estado: **en ejecución activa** (`Start: 0x0`, inicio al arrancar). Acceso denegado a nivel de kernel; el controlador está bloqueado y no se puede inspeccionar más.

`pspsra.sys` se sitúa directamente debajo de la partición SRA en la cadena de arranque como un **puente entre el Procesador de Seguridad de Plataforma AMD (PSP) y la capa SRA**. El AMD PSP gestiona la atestación fTPM y el certificado de consola a nivel de metal desnudo, y `pspsra.sys` es el puente que expone esa cadena de confianza hacia SRA. Esto lo coloca en el mismo nivel de confianza que `XVIO.SYS` y `XSraFlt.sys`, inicializados antes que SystemOS, opacos para este e inalcanzables incluso con acceso completo al kernel.

---

## 12. Preguntas no resueltas + Controladores

Preguntas:

1. **Ubicación de XVIO.SYS** no está en ningún sistema de archivos accesible; cargado por el hipervisor al arrancar
2. **Uso de WSL** confirmado como presente y utilizado, pero el rol específico en Xbox OS no está completamente mapeado
3. **`XCrdXpfOp`** función XCRDAPI no identificada (XPF = ?)
4. **Ubicación de `XSraFlt.sys` + `XRmnt.sys`** se confirma su ausencia en todos los sistemas de archivos accesibles; cargados por el Host OS junto con XVIO.SYS
5. **`xvnc` GUID `{REDACTED_GUID}`** GUID del adaptador inalámbrico, cadena completa de controladores no mapeada
6. **Destino del punto de reanálisis `S:\Shares\TitleScratch`** redactado activamente por el sistema operativo en los listados de directorios; requiere `FSCTL_GET_REPARSE_POINT` por debajo de la capa de cmd.exe. Casi con certeza `\Device\Xrfs\<partition-guid>` (ver Sección 26)
7. **Superficie IOCTL de `xvmctrl.sys`** volcado de kernel en vivo bloqueado (restricción `NoKernelDumps` en el modo dev minorista); la tabla de despacho de IOCTL aún no se ha enumerado
8. **GUID de la partición ERA** no expuesto a través de ninguna ruta de registro accesible; sería visible en un volcado de kernel (bloqueado, investigando bypasses)
9. **Contenido de `N:\EtwPlus\`** ocultado activamente por un controlador de filtro del sistema de archivos del kernel; los listados de directorios devuelven vacío a pesar de la actividad de escritura confirmada. La identidad del controlador de filtro no se ha determinado (ver Sección 3.2)
10. El Host OS en su conjunto, ni siquiera está completamente claro qué hace.

Controladores:

1. **`xtcc.sys`**, probablemente responsable de algo relacionado con la seguridad dada su gran cantidad de importaciones de `ntoskrnl.exe` y `XVIO.sys`
2. **`FLTMGR.SYS`** importado por `XRmnt.sys`, `XRo.sys`

---

## 13. E/S virtualizada y acceso remoto (XVIO/SRA)

El análisis de las exportaciones de `xboxcloudstreaming.dll` y las entradas de registro `CurrentControlSet\Services` muestra una integración profunda a nivel de kernel para conexiones remotas, que utiliza un modelo de hardware "Sintético" en lugar de la emulación de software estándar. La VM ERA ve el mismo/los mismos dispositivo(s) sintético(s) sin importar de dónde provenga la entrada (remota, USB, inalámbrica, etc.).

### 13.1 La pila XVIO (E/S virtual)

El framework XVIO parece ser el método principal para inyectar eventos a nivel de hardware en SystemOS desde fuentes externas o entre particiones.

| Servicio | Categoría | Función |
| --- | --- | --- |
| `hvsocketxvio` | Transporte | Servicio puente que conecta sockets de Hyper-V con el protocolo XVIO. |
| `InputXVIOClient` | Coordinador | Gestiona el mapeo de paquetes de entrada remota a nodos de dispositivos virtuales. |
| `xviokbdbus` / `xviomoubus` | Controlador de bus | Enumera dispositivos HID virtuales en un bus interno sintético. |
| `xviokbd` / `xviomou` | Controlador de dispositivo | Controladores de función específicos para teclados y ratones virtualizados. |

### 13.2 Canalización de controlador sintético

El binario `xboxcloudstreaming.dll` utiliza `XboxgipSynthetic.dll` para crear lo que el sistema operativo percibe como periféricos locales conectados físicamente.

- **Virtualización de audio:** Mediante `SyntheticController_AddAudioHeadset`, el sistema puede canalizar audio de red remoto hacia la pila de audio local de la consola como un dispositivo vinculado al hardware.
- **Inyección de entrada (RIM):** El uso del Administrador de entrada remota (`ext-ms-win-ntuser-rim-l1-1-0.dll`) confirma que las sesiones de xCloud y juego remoto utilizan los mismos métodos de inyección de alta autoridad que Windows Remote Desktop, específicamente `InjectKeyboardInput` e `InjectPointerInput`.

### 13.3 Controladores SRA y "Arden"

> **Nota:** El controlador `SraKmdArden` es específico del hardware de la arquitectura Series X/S (Arden). Este controlador probablemente permite al sistema interceptar el búfer de pantalla a nivel de kernel, minimizando la sobrecarga de latencia generalmente asociada con el dibujo entre VMs.

### 13.4 Puente HvSocket (GUID `4545ffe2-...`)

El GUID de HvSocket previamente no identificado se ha emparejado con el servicio `hvsocketxvio`. Esto confirma que XVIO no es un protocolo independiente, sino una capa que se ejecuta sobre el transporte de sockets interno de Hyper-V.

Esto sugiere que la **partición ERA (juego)** no se comunica directamente con la red para la entrada; en su lugar:

1. **SystemOS** recibe los paquetes de red a través de `XboxNetApiSvc`.
2. **`xboxcloudstreaming.dll`** procesa el flujo.
3. **`hvsocketxvio`** canaliza los datos de entrada sin procesar a través del límite de partición mediante **HvSocket**.
4. La capa Hypervisor/Host lo inyecta en la partición de destino como un evento de hardware.

---

## 14. Volumen M:\ | Arquitectura de superposición

M:\ (etiquetado como "System OS Misc") funciona como un **volumen de superposición**, un árbol que contiene componentes que se montan sobre la imagen base C:\. Esta arquitectura permite a Microsoft distribuir una única imagen del sistema operativo y aplicar conjuntos de características específicos mediante superposiciones en el momento del montaje.

### 14.1 Estructura del volumen

    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 Enlaces simbólicos del sistema de archivos

C:\ hace referencia a componentes de M:\ mediante enlaces simbólicos NTFS. Los enlaces simbólicos existen en dos niveles:

**Nivel de controladores System32:**

    C:\Windows\System32\drivers\srakmd_arden.sys -> M:\windows\system32\drivers\srakmd_arden.sys

**Nivel de directorio de 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

La superposición M:\ es más generalizada que un simple reemplazo de controladores/DLL; los directorios principales del subsistema de Windows, incluidos el almacén de fuentes, las aplicaciones del sistema y la interfaz de administración web, residen enteramente en M:\. Esto podría significar que una superposición específica controla no solo los controladores de GPU y captura, sino también, hasta cierto punto, toda la capa de aplicaciones del sistema y del shell de interfaz de usuario.

No se ha completado una enumeración recursiva completa de los enlaces simbólicos de C:\ que apuntan a M:\.

### 14.3 Controladores específicos de hardware (M:\windows\system32\drivers\)

| Controlador | Tamaño | Propósito |
|---|---|---|
| `srakmd_arden.sys` | 274KB | Captura SRA KMD -> capturador de fotogramas específico del hardware Arden |
| `acpi.sys` | 873KB | ACPI -> compilación específica de hardware (más grande que la genérica) |
| `spaceport.sys` | 1MB | Puerto de almacenamiento -> criptografía XVD + verificación de licencias |
| `spacedump.sys` | 304KB | Controlador de volcado de almacenamiento |
| `buttonconverter.sys` | 90KB | Conversión de eventos de consola desde HID de encendido/expulsión |
| `qwavedrv.sys` | 90KB | Controlador de QoS/calidad de red |
| `acpiex.sys` | 181KB | Extensiones ACPI |
| `AcpiDev.sys` | 61KB | Extensiones de dispositivo ACPI |
| `acpitime.sys` | 57KB | Temporizador ACPI |

**Hallazgo:** `XSraFlt.sys` está ausente tanto de los controladores de M:\ como de C:\. No está almacenado en ningún volumen de sistema de archivos accesible, lo que sugiere que el Host OS lo carga al arrancar junto con `XVIO.SYS` y `FLTMGR.sys`.

### 14.4 Componentes de espacio de usuario específicos de hardware (M:\windows\system32\)

DLL/EXE notables exclusivos de M:\:

**Pila de GPU / sombreadores:**

- `umd12ddi_arden.dll` (1.56MB)  DDI de controlador en modo de usuario D3D12, hardware Arden
- `umd12ddi_d.dll` (1.5MB)  UMD D3D12, compilación instrumentada de depuración/PIX
- `umd12ddi_i.dll` (1.14MB)  UMD D3D12, compilación incluida/respuesta
- `newbe_xs.dll` (26MB)  backend del compilador de sombreadores de GPU Arden "NewBe"
- `xbsc_xs.dll` (3.9MB)  frontend del compilador de sombreadores Xbox Series
- `dxcompiler_xs.dll` (17.8MB)  compilador HLSL Xbox Series
- `dxbc2dxil_xs.dll` (2.9MB)  convertidor de bytecode DXBC a DXIL
- `pixrtddi.dll` (679KB)  DDI de renderizado/depuración PIX

**Cadena de herramientas de desarrollador / PIX:**- `VsGraphicsRemoteEngine.exe` (4.75MB) motor remoto de perfilado de GPU de PIX
- `VsGraphicsCapture.dll` (225KB) captura de fotogramas de PIX
- `VsGraphicsExperiment.dll` (327KB) marco de experimentos de PIX
- `DXCaptureReplay.dll` (18MB) motor de reproducción de capturas de GPU
- `DXCap.exe` (1.19MB) herramienta de captura de GPU
- `DXToolsMonitor.dll` / `DXToolsOfflineAnalysis.dll` / `DXToolsReporting.dll` pila de análisis de PIX
- `DXGIDebug.dll` (151KB) capa de depuración de DXGI
- `d3d12SDKLayers.dll` (4.8MB) capas de validación/depuración de D3D12
- `d3d11_3SDKLayers.dll` (1.19MB) capas de depuración de D3D11
- `d2d1debug3.dll` (618KB) capa de depuración de D2D
- `VSD3DWARPDebug.dll` (155KB) compilación de depuración del rasterizador por software WARP
- `plmdebug.exe` (204KB) depurador de PLM (ciclo de vida de procesos)

**Transmisión / Acceso remoto:**

- `rdpbase.dll` (1.8MB) librería base de RDP
- `rdpserverbase.dll` (2.3MB) base del servidor RDP
- `XboxDevService.exe` (3.7MB) servicio host de desarrollo de Xbox
- `XboxDevService.ProxyStub.dll`

**Pila social / de plugins:**

- `DiscordPlugin.dll` (139KB) integración con Discord
- `TwitchPlugin.dll` (639KB) integración de transmisión de Twitch

**Otros destacados:**

- `XboxSyntheticKM.dll` (36KB)
- `xrmntcl.exe` (90KB) cliente Xbox Runtime Mount
- `xtfupdateT_s_i.dll` (98KB) ?
- `xtcapi.dll` (57KB) API XTC (¿Xbox Title Communications?)
- `wusys.dll` (308KB) integración del sistema de Windows Update

---

## 15. Pila de GPU | Canalización de compilación de shaders

Toda la canalización de compilación de shaders de Xbox Series S/X reside en M:\ y no está en C:\. No es posible compilar shaders sin el overlay específico del hardware montado.

### 15.1 `newbe_xs.dll`

DLL de 26MB. Backend del compilador de shaders de GPU Arden. Solo 6 exportaciones:

    NB_CompileShader          compile individual shader stage
    NB_CompilePipeline        compile full pipeline state object
    NB_CreateOptimizer        create register allocator / instruction scheduler
    NB_GetRegPressure         register pressure analysis (PIX-facing)
    NB_GetShaderStats         hardware shader statistics
    NB_CreatePixDwarfApi      generate DWARF debug info for GPU shaders

La sección `.pass` podría sugerir una canalización de pases al estilo LLVM. `NB_CreatePixDwarfApi` genera información de depuración de shaders a nivel de fuente para PIX.

### 15.2 `xbsc_xs.dll`

41 exportaciones que cubren la API de compilación completa:

    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          (shader cache compression)
    XBSC_Serialize* / XBSC_Deserialize*                  (pipeline state serialization)
    SCCompileMultiShadersXbox / SCDumpHwShader*           (batch compilation)
    SC_ConvertRootSignatureToSCInputs


Las secciones PE `_mmddu` y `_MMDDT0` contienen **Microsoft Machine-Dependent Driver Data**, tablas de microarquitectura del hardware integradas en el compilador (latencias de instrucciones, topología del banco de registros, recuentos de unidades de ejecución para Arden).

### 15.3 `dxcompiler_xs.dll`

17.8MB. Bifurcación para Xbox Series del compilador HLSL DXC. 4 exportaciones:

    DxcCreateInstance / DxcCreateInstance2   standard DXC factory (compatible with public API)
    CreateXdxrCompiler / CreateXdxrCompiler2 Xbox DXIR compiler (Xbox-specific IR format)

### 15.4 `dxbc2dxil_xs.dll` Convertidor de bytecode

2.9MB. Exportación única:

    SCDxil_ConvertDxbcToDxil   convert DX11 DXBC bytecode to DXIL for DX12 pipeline


Permite que los shaders DX11 compatibles con versiones anteriores se ejecuten en la canalización Arden, exclusiva de DX12.

### 15.5 Cadena completa de compilación de shaders

    Game/App submits HLSL or legacy DXBC shader
                ↓
        [HLSL path]                    [DXBC legacy path]
    dxcompiler_xs.dll                dxbc2dxil_xs.dll
    (DxcCreateInstance -> DXIL)       (SCDxil_ConvertDxbcToDxil -> DXIL)
                ↓                             ↓
                └──────────┬──────────────────┘
                            ↓
                xbsc_xs.dll (XBSC_PipelineCompile)
                calls newbe_xs.dll NB_ backend
                uses _MMDDT0 Arden microarch tables
                            ↓
                umd12ddi_arden.dll
                (submits compiled ISA via D3D12 DDI)
                uses xg_xs.dll for texture layout
                            ↓
                srakmd_arden.sys (kernel)
                XvioGetReservedMemory -> hypervisor carve-out RAM
                zero-copy framebuffer -> ERA partition

---

## 16. `xg_xs.dll` Librería de diseño de texturas gráficas de Xbox

Ubicada en **C:\** (no en M:\). Contiene 27 exportaciones que cubren el mosaico de texturas, el diseño BVH del trazado de rayos y la compresión DCC.

### 16.1 Superficie de exportaciones

    XGComputeBufferLayout
    XGComputeTexture1DLayout / 2DLayout / 3DLayout
    XGComputeOptimalSwizzleMode / OptimalDepthStencilSwizzleMode
    XGComputeTileShape
    XGSuggestSwizzleMode
    XGValidateDepthStencilSwizzleMode / XGValidateDescriptor
    XGCreateTexture1DComputer / 2DComputer / 3DComputer
    XGCreateTextureComputer / XGCreateTextureComputerFromDescriptor
    XGCreateBVHComputer / XGCreateBVHComputer2       ray tracing BVH layout
    XGEncodeDCC / XGDecodeDCC / XGDecodeDCCSurface   AMD Delta Color Compression
    XGShuffleTextureBufferForDirectStorage           GPU-side texture tiling for DirectStorage
    XGSetHardwareVersion                             configure for Series S vs Series X memory layout
    XGInitializeLibrary / XGTerminateLibrary
    XGEnableExclusiveLocking / XGEnterExclusiveLock / XGLeaveExclusiveLock

### 16.2 Hallazgos clave

**El diseño BVH del trazado de rayos es específico del hardware.** `XGCreateBVHComputer2` expone una API de diseño BVH de segunda generación, lo que sugiere que la arquitectura Arden tiene un formato de nodo BVH distinto que difiere del DXR genérico.

**La compresión DCC de AMD está expuesta.** `XGEncodeDCC` / `XGDecodeDCC` implementan la compresión Delta Color de AMD, la compresión de framebuffer sin pérdidas por hardware utilizada en las GPU RDNA. `XGDecodeDCCSurface` es la API que PIX utiliza al leer framebuffers capturados comprimidos con DCC.

**Mosaico de DirectStorage.** `XGShuffleTextureBufferForDirectStorage` realiza el barajado del lado de la GPU que transforma el diseño de texturas en disco al formato de mosaico del hardware Arden durante la descompresión de la GPU, lo que permite una carga sin copias a la VRAM.

**`XGSetHardwareVersion` controla todos los algoritmos de diseño.** La librería contiene implementaciones de diseño para múltiples revisiones de hardware. Llamar a `XGSetHardwareVersion` con el identificador de Series S frente al de Series X produce resultados de mosaico diferentes que reflejan los distintos anchos de bus de memoria y geometrías de caché.

### 16.3 Sección de metadatos de compilación `.xbld`

`xg_xs.dll` contiene una sección PE `.xbld` ausente en todos los demás binarios de Xbox, lo que indica que se origina en una canalización de compilación CI de GDK separada, y no en el sistema de compilación del sistema operativo Xbox. El sistema de compilación del SO pone a cero las marcas de tiempo y elimina las secciones de metadatos; GDK CI no lo hace.

    _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

El valor `edition_name` de **"April 2026 GXDK"** es anterior al lanzamiento público de esa edición del SDK (en el momento de escribir esto es el 9 de marzo de 2026), lo que confirma que el sistema operativo comercial incluye componentes GDK compilados contra el siguiente ciclo de SDK no publicado. El versionado `sdktype=260400` sigue el patrón `YYMMRR` (Año/Mes/Revisión).

La marca de tiempo `edition_build` `0x65F41B62` se decodifica como **13 de marzo de 2024**, más de un año antes de la fecha de compilación del SO (12 de febrero de 2026), lo que indica que los algoritmos de diseño de texturas han sido estables y sin modificaciones durante al menos 5 ciclos de lanzamiento de GDK.

El `mscver=193833145.100` identifica el compilador como **MSVC 19.38** (Visual Studio 2022 17.8.x).

### 16.4 Inferencia de la canalización de compilación (¿UUP?)

    GDK CI pipeline builds xg_xs.dll (with .xbld metadata intact)
                ↓
        ┌─────────────────────────┐
        ↓                         ↓
    Xbox OS image ingests       April 2026 GDK SDK package
    artifact directly           ships same binary to developers
        ↓
    Ships on every retail console

Esto significa que el `xg_xs.dll` de las consolas comerciales es idéntico bit a bit al que reciben los desarrolladores en el GDK. La verificación de hash contra el lanzamiento público de GDK de abril de 2026 (cuando esté disponible) lo confirmaría.

---

## 17. Modelo de integridad de código Trust-by-Catalog

### 17.1 Formato de contenedor PE

Los archivos `Catalog*.bin` de cada volumen son **ejecutables PE32+ con subsistema `0x11`** ("Xbox Code Catalog"), un subsistema no documentado que no aparece en ninguna documentación pública. Características clave de la cabecera PE:

    Magic:          PE32+ (64-bit)
    Subsystem:      0x11  ("Xbox Code Catalog", obtained from strings inside MSVC link.exe)
    Entry point:    0 (never executed)
    Code size:      0 (no executable code)
    DLL Chars:      IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
                    IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY  <- critical
                    IMAGE_DLLCHARACTERISTICS_NX_COMPAT
    Sections:       1 unnamed read-only section (raw payload)

En cuanto a cómo funcionan, no estoy seguro, el Xbox One

### 17.2 Cadena de confianza

    Hypervisor/Host OS validates Catalog*.bin PE Authenticode signature at boot (FORCE_INTEGRITY)
                ↓
    Catalog payload contains hashes of protected binaries on that volume
                ↓
    Code Integrity checks each binary's hash against catalog at load time
                ↓
    Individual binaries carry no Authenticode signatures of their own

Este es un modelo **trust-by-catalog** (confianza por catálogo). Una única firma de Microsoft cubre muchos archivos por volumen. Los binarios individuales y probablemente otros tipos de archivo no están firmados; su integridad está garantizada por su pertenencia al catálogo.

**Recuento y tamaño de entradas:**

| Volumen | Catálogo | Tamaño de la carga útil | Entradas (÷32) |
|---|---|---|---|
| C:\ | Catalog000.bin | 5,533,696 bytes | 172,928 |
| C:\ | Catalog001.bin | 253,952 bytes | 7,936 |
| C:\ | Catalog002.bin | 57,344 bytes | 1,792 |
| C:\ | Catalog003.bin | 176,128 bytes | 5,504 |
| M:\ | Catalog000.bin | 5,537,792 bytes | 173,056 |
| M:\ | Catalog001.bin | 258,048 bytes | 8,064 |
| M:\ | Catalog002.bin | 61,440 bytes | 1,920 |
| M:\ | Catalog003.bin | 180,224 bytes | 5,632 |

La longitud de la carga útil de cada catálogo (dentro de la sección PE) es exactamente divisible por 32 sin resto, y no es divisible de forma consistente por 36, 40 u otros tamaños comunes de registro. Esto sugiere fuertemente que la carga útil es una matriz plana de **registros de 32 bytes**.

**Algoritmo hash:** No se encontraron en los catálogos hashes SHA-256 y SHA-1 de archivo completo de binarios conocidos, lo que descarta el hashing simple de archivo completo. El formato más probable es el de **hashes de página Authenticode**, el estándar de Windows CI en el que cada página alineada de 4KB de las secciones mapeadas de un archivo PE se hashea individualmente. Esto produciría una entrada de 32 bytes (SHA-256) por página y por archivo, lo que explica los grandes recuentos de entradas (172,928 entradas solo para C:\).

**Ordenación:** La carga útil no está ordenada por valor hash. El esquema de ordenación no se ha determinado; las posibilidades incluyen ordenar por hash de ruta de archivo, por paquete de instalación, por desplazamiento de página dentro del conjunto de archivos del volumen, o incluso por alguna característica de NTFS.

**Sin cabecera:** Los primeros 128 bytes de la carga útil no contienen magia ASCII reconocible, ni campos de enteros pequeños que pudieran indicar un recuento o versión, ni una estructura consistente con una cabecera estándar. La matriz de hashes comienza en el byte 0 de la carga útil sin preámbulo.

### 17.3 Aplicación solo en tiempo de carga

La aplicación de Code Integrity es **solo en tiempo de carga**. Una vez que un binario supera la verificación de hash del catálogo y las páginas se mapean en memoria, CI no tiene más participación. HVCI (Hypervisor-Protected Code Integrity), si estuviera activa en SystemOS, cerraría la ventana TOCTOU (Time-of-check to time-of-use) resultante haciendo que las páginas de código cargadas sean de solo lectura por hardware a nivel de tablas de páginas del hipervisor. **HVCI está confirmadamente desactivada en SystemOS**, `IsSecureKernelRunning = 0x0` (ver Sección 18). Por lo tanto, la ventana TOCTOU está presente.

### 17.5 Componentes del sistema operativo host

Se confirma que dos controladores están ausentes de todos los volúmenes de sistema de archivos accesibles y son cargados directamente por el SO host antes de que SRA se inicialice:

- `XVIO.SYS` Xbox Virtual I/O core (sin entrada de servicio en el registro, no está en ningún volumen)
- `FLTMGR.sys` Administrador de filtros
- `XSraFlt.sys` Filtro SRA (la entrada de servicio existe, pero no hay ningún archivo correspondiente en ningún volumen)

Estos componentes existen completamente fuera del modelo de confianza del catálogo. No pueden manipularse ni siquiera con acceso completo al kernel de SystemOS, ya que son mapeados por el cargador de arranque antes de que HostOS (que es el padre de System OS) comience a cargar.

La información sobre los componentes de Xbox One [se puede encontrar aquí](https://xboxoneresearch.github.io/wiki/boot/vbi/); sin embargo, no puedo estar completamente seguro de que HostOS no haya cambiado hasta ahora.

---

## 18. Estado de HVCI

> **Impacto:** Con HVCI desactivada, la integridad de código es solo en tiempo de carga. Una vez que un binario se mapea en memoria, no hay aplicación por hardware que impida la modificación en memoria. La ventana TOCTOU descrita en la Sección 17.3 queda por tanto abierta. El límite de seguridad previsto sigue siendo depender por completo de que SystemOS no se comunique con ERA (GameOS).

`HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\KeyGuard\Status`

    IsSecureKernelRunning = 0x0

El Secure Kernel (VTL1) no se está ejecutando en SystemOS, lo que confirma que HVCI no puede estar activa. Esta es una compensación deliberada de rendimiento: no hay impuesto VTL1 sobre la actividad del kernel en el bucle del juego. El límite de seguridad es la propia partición del hipervisor, no la protección de memoria dentro de la partición. El modelo de integridad de código (Sección 17) es, por tanto, solo en tiempo de carga y sin protección TOCTOU.

---

## 19. Espacio de nombres IPC del hipervisor sevpipe

Un espacio de nombres de dispositivos de named pipes de Windows personalizado (`\\.\sevpipe\`) que sirve como columna vertebral IPC principal para toda la comunicación entre procesos y entre particiones específica de Xbox. No es una construcción del hipervisor a nivel de protocolo; debajo hay semántica estándar de named pipes de Windows, registrada bajo un espacio de nombres de dispositivos personalizado para ocultarla de las herramientas normales de enumeración de pipes.

### 19.1 Inventario completo de pipes

    EtxForwarder                  <- telemetry data
    EtxForwarderToUploaderControl <- telemetry control
    XrfsPipe                      <- cross-partition filesystem
    ERASwapChainPipe              <- ERA framebuffer (dynamic)
    ERAPresentPipe                <- ERA present signals (dynamic)
    XvioAudioPipe                 <- ERA audio (dynamic)
    XvioAudioEventPipe            <- ERA audio events (dynamic)
    XboxOneAudioStatePipe         <- system audio state
    XTF_SYSTEM_TO_TITLE           <- XTF command channel (dynamic)
    XTF_TITLE_TO_SYSTEM           <- XTF response channel (dynamic)
    CloudStreamingServer          <- xCloud (dynamic)
    \SEVPipe\epmapper             <- Xbox RPC endpoint mapper
    \SEVPipe\epmapperX            <- extended RPC endpoint mapper

Las pipes dinámicas solo existen cuando ERA está activa, hay una sesión XTF en ejecución o xCloud está transmitiendo.

### 19.2 Mapa de control de acceso

    EtxForwarder                  <- DevToolsUser WRITE 
    EtxForwarderToUploaderControl <- DevToolsUser WRITE 
    XrfsPipe                      <- SYSTEM only 
    ERASwapChainPipe              <- SYSTEM only 
    ERAPresentPipe                <- SYSTEM only 
    XvioAudioPipe                 <- SYSTEM only 
    XTF_SYSTEM_TO_TITLE           <- SYSTEM only 

### 19.3 Canalización de telemetría

    Process calls EtxEventWrite()
        ↓
    EtwPlus.dll
        ↓ writes to
    \\.\pipe\EtxUploader
        ↓
    EtwUploader.exe (PID 1808, SYSTEM)
        ↓ forwards to
    \\.\sevpipe\EtxForwarder          <- data
    \\.\sevpipe\EtxForwarderToUploaderControl  <- control
        ↓
    NetworkTransferManagerService.exe (PID 2040, SYSTEM)
        ↓
    [unknown endpoint, dynamic library load]
        ↑
    DevToolsUser can inject at EtxForwarder and control pipe

`EtwPlus.dll` es específica de Xbox (`FileDescription: Xbox ETW Plus API`), versión `10.0.26100.7010`. Las exportaciones de suspensión/reanudación son probablemente stubs en las compilaciones comerciales; tres exportaciones comparten la misma RVA.

### 19.4 Captura de pantalla RTSP de videoserver.exe (probablemente un remanente de [Xbox Dev Mode Companion](https://apps.microsoft.com/detail/9nblggh519cp))

Puerto: 11442 (hardcodeado en el binario). Dependencias:

    Windows.Xbox.Graphics.Display.Internal.DisplayManager
    Windows.Xbox.System.Internal.GameStreaming.GameStreamingAgent
    Windows.Xbox.Media.Capture.ApplicationClipShell

**Hallazgo clave:** No parece funcionar correctamente. No se ha encontrado ningún método para acceder a la transmisión de video desde dentro o fuera de la consola.

Rutas/banderas hardcodeadas:

    DisableXboxDevToolsTelemetry     <- env var to suppress its telemetry
    VideoServerMaxPacketSize         <- configurable via env var
    EnableVideoServer                <- WdConfig flag confirmed here
    OSDATA\...\DevkitProperties      <- reads devkit properties at runtime

### 19.5 Esquema OneSettings / Windows Update

La Xbox incluye el esquema completo de segmentación de Windows Update, incluidas las entradas de segmentación `XBOXMOBILE` y las rutas de hive del registro `WCOS`, lo que confirma que Xbox Series S se ejecuta sobre la base de Windows Core OS (WCOS) compartida con HoloLens y Surface Hub. El sistema operativo es un Windows 11 24H2 ligeramente personalizado, no un SO de plataforma creado específicamente.

---

## 20. Topología de particiones del hipervisor

`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\HvSocket\Addresses`

    LocalAddress  = {REDACTED_GUID}  SystemOS partition GUID
    ParentAddress = {REDACTED_GUID}  null parent

SystemOS cree que es la **partición raíz** (falso, Host OS es la raíz). La partición de juego ERA es una hija de SystemOS. El GUID de la partición ERA no está expuesto a SystemOS a través de ninguna ruta de registro accesible, y podría ser aleatorio.

### Puntos finales comodín entre particiones de HvSocket

`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\HvSocket\WildcardDescriptors`

Cuatro GUID de servicio resueltos mediante el cálculo del SID de servicio SHA1:

| GUID | Servicio | Propósito |
|------|----------|-----------|
| `REDACTED_GUID` | DiagTrack | Pipe de telemetría 1 |
| `REDACTED_GUID` | DiagTrack | Pipe de telemetría 2 |
| `REDACTED_GUID` | RpcSs | RPC entre particiones |
| `REDACTED_GUID` | EventLog | Reenvío de eventos entre particiones |

DiagTrack, RpcSs y EventLog son ciudadanos de primera clase entre particiones. La telemetría del juego, las llamadas RPC y los eventos se canalizan desde ERA a SystemOS a través de canales de socket del hipervisor dedicados, invisibles para cualquier cosa que se ejecute dentro de ERA.

---

## 21. Configuración de gráficos

`HKLM\SYSTEM\CurrentControlSet\Control\GraphicsDrivers`

    WddmVersion_Max = WddmVersion_Min = 0x9C4  (WDDM 2.5) pinned, not negotiated
    DisableCcdDatabase                = 1
    DisableHpdHandling                = 1
    DisableUsingMonitorPowerForSimulatedMonitor = 1
    DirectFlipMemoryRequirement       = 0x40  (64MB)
    PinnedMemoryLimit                 = 0x59  (89MB)
    AdapterMPO_3                      = 1    MPO tier 3 enabled

La versión de WDDM está fijada en lugar de negociarse; la canalización de visualización es propiedad del firmware y del hipervisor, y WDDM no participa en el manejo de monitores. El nivel 3 de MPO (`AdapterMPO_3`) es cómo el framebuffer del juego ERA y la interfaz de usuario de SystemOS se componen sin un blit por software entre particiones: cada superficie ocupa un plano de overlay de hardware separado.

---

## 22. Administrador de paquetes y herramienta de ciclo de vida de aplicaciones WdApp.exe

`J:\tools\WdApp.exe` es un administrador de paquetes y un gestor del ciclo de vida de aplicaciones completo para la plataforma de aplicaciones de Xbox. Superficie de comandos completa:| Comando | Propósito |
|---------|-----------|
| `install` | Transmitir una compilación empaquetada desde un servidor web, recurso compartido de red o ruta local |
| `register` / `unregister` | Registrar/anular el registro de paquetes de aplicaciones de archivos sueltos |
| `registerdrive` | Registrar todas las aplicaciones de una unidad completa de una sola vez |
| `registernetworkshare` | Instalar desde un recurso compartido de red UNC con credenciales opcionales |
| `registerscratch` | Registrar desde la unidad scratch de desarrollo |
| `registertitlescratch` | Registrar desde la unidad scratch de títulos ERA |
| `launch` | Iniciar por AUMID, ruta del ejecutable o URI |
| `terminate` / `suspend` | Detener o suspender una aplicación en ejecución |
| `uninstall` | Desinstalar una aplicación o partes de ella |
| `list` | Enumerar todas las aplicaciones registradas |
| `listdlc` | Enumerar el DLC instalado |
| `move` / `copy` | Mover o copiar un paquete |
| `movedrive` / `copydrive` | Mover o copiar todos los paquetes de una unidad |
| `applyconfig` | Iniciar el sistema operativo de juego ERA con la configuración especificada o un `game.config`/`.xvd` |
| `queryconfig` | Imprimir el número de versión de 4 partes del sistema operativo de juego en ejecución |
| `queryversioninfo` | Consultar la versión del sistema operativo de juego para un paquete determinado |
| `collectxip` | Recopilar el seguimiento XIP |
| `lastgamedetails` | Recuperar detalles sobre el último juego que se ejecutó |
| `installkey` | Instalar una clave en la consola |
| `installplan` | Instalar un plan en la consola |
| `overlayfolder` | Administrar carpetas de superposición de paquetes |

### Hallazgos notables

**`applyconfig [game.config | ERA.xvd]`** control directo del arranque de la partición ERA desde la línea de comandos. Acepta una imagen de disco XVD `.xvd` o un archivo de configuración `game.config`. Si se ejecuta sin argumentos, inicia el sistema operativo de juego usado más recientemente. En un sistema sin contexto de juego previo, esto devuelve `0x87E50002` (subsistema ERA, no se encontró XVD).

**`/drive=Retail`** el comando `install` acepta `Retail`, `Development` y `Ext1-Ext7` como especificadores de unidad de destino, lo que permite instalar paquetes directamente en la partición de almacenamiento minorista desde el shell de desarrollo.

**`/WaitToExit`** en `launch` hace que WdApp sea el proceso principal del proceso iniciado y capture los códigos de salida. Las aplicaciones del sistema rechazan esto con `0x8D160121` (subsistema PLM de Xbox, proceso principal de ciclo de vida incorrecto). Iniciar sin `/WaitToExit` funciona porque ShellCoreService conserva la propiedad del ciclo de vida.

**Codificación AUMID en `launch`** los AUMID de aplicaciones del sistema requieren codificación base64 que coincida con el patrón utilizado en los scripts de QuickActions de `.xboxunattend`:```
WdApp.exe launch <base64(FamilyName!AppId)>

23. API REST de Device Portal

El servidor web de Device Portal (WebManagement.exe, PID 2344) sirve su frontend desde M:\windows\WebManagement\www\default\. El esquema completo de la API REST está documentado en js\RestDocumentation.json (40KB).

Autenticación: autenticación HTTP Basic sobre HTTPS en el puerto 11443. Las credenciales son el nombre de usuario y el PIN de Device Portal configurados durante la activación del modo de desarrollo.

Espacios de nombres de la API

Indicadores de restricción

Varios endpoints llevan indicadores de restricción que los deshabilitan en consolas en modo de desarrollo retail:

Los volcados de proceso en vivo en modo usuario (/api/debug/dump/usermode/live?pid=<pid>) son nonRestrictable y se realizan correctamente en el modo de desarrollo retail.

Árbol de código fuente de Device Portal


24. Lista de procesos en vivo

Obtenida mediante GET /api/resourcemanager/processes. Procesos notables seleccionados:

Tres instancias de xnetsharedservice.exe (PIDs 2032, 2764, 2844) se ejecutan simultáneamente bajo SYSTEM, lo que sugiere instancias de puente de red separadas para diferentes canales entre particiones.

El conjunto de trabajo de eracontrol.exe de 991KB sin ningún juego en ejecución confirma que es puramente controlado por eventos: mantiene casi ningún estado cuando está inactivo, despertando solo ante eventos del ciclo de vida de ERA.


25. Canalización de Windows Update (Deploy:)

Impacto: El volumen Deploy:\ está restringido localmente para el acceso desde el espacio de usuario, pero esta restricción se evita mediante la ruta de recurso compartido de red a través del punto de unión S:\Deployment\SoftwareDistribution\. Los seguimientos ETL de actualización, la ruta de la base de datos de WU y la URL del endpoint SLS (incluido el identificador de plataforma y los paquetes de idioma instalados) son totalmente legibles.

S:\Deployment\SoftwareDistribution\ es un punto de unión al volumen de dispositivo de kernel oculto Deploy:\.

Análisis de seguimientos ETL

Se capturaron dos sesiones de actualización:

Sesión 1: 9 de marzo de 2026, 18:25:23

  • El servicio WU se inició en frío; DataStore.edb no existía (se creó nuevo en esta sesión)
  • Estado de red: desconectada al inicio
  • Endpoint SLS intentado: https://slscr.update.microsoft.com/SLS/{REDACTED_GUID}/x64/10.0.26100.7010/0
  • Falló inmediatamente con 0x8024402C (sin internet). No se completó ninguna comprobación de actualización.

Sesión 2: 10 de marzo de 2026, 03:59:18

  • El servicio WU se inició y cargó el DataStore.edb existente
  • Estado de red: desconectada al inicio
  • La misma solicitud SLS falló con 0x8024402C
  • La red se conectó a las 03:59:24, 6 segundos después de que el servicio ya hubiera fallado y abandonado la sesión
  • El servicio permaneció inactivo durante 10 minutos y luego se apagó correctamente a las 04:09:19 con código de salida 0x240001
  • No se completó ninguna comprobación de actualización en ninguna de las dos sesiones

Nota: En ambas sesiones la red no estaba disponible cuando se inicializó el servicio WU, lo que provocó que abandonara la comprobación de actualización. La sesión 2 se conectó 6 segundos después de que el servicio ya hubiera salido de la fase de detección, lo que sugiere que la canalización de actualizaciones no tiene reintento de reconexión una vez falla la comprobación de red inicial.

Estructura de la URL del endpoint SLS

root@kitploit:~
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 es el identificador de plataforma Xbox integrado en cada comprobación de actualización. CH disminuyó de 928 a 19 entre sesiones, lo que es coherente con un contador de estado del catálogo que se restablece cuando se recrea la base de datos.

GUID de configuración del servicio

[REDACTED] identificador de configuración del servicio Xbox Windows Update, presente en el subdirectorio SLS\ e incrustado en cada URL de solicitud SLS.

Árbol de código fuente del cliente WU

Rutas de compilación internas de Azure DevOps filtradas a través de instrumentación de depuración:

root@kitploit:~
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\ es la ruta estándar del área de trabajo del agente autohospedado de Azure DevOps. El cliente Xbox Windows Update comparte el código fuente con Windows Update de escritorio; es la misma base de código compilada para el destino de plataforma Xbox.

Temporizador persistente

El GUID de temporizador REDACTED_GUID se configuró en la sesión 1 y sobrevivió al reinicio hasta la sesión 2. Se almacena fuera de DataStore.edb (probablemente en el registro) y programa la siguiente comprobación de actualización independientemente del ciclo de vida de la base de datos.


26. Análisis de la pila de controladores de E/S entre particiones

xbtplinkc.sys Cliente de enlace de transporte XVIO

El análisis de importaciones revela la superficie completa de la API de búfer circular XVIO y el mecanismo de traducción de GPA:

root@kitploit:~
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 es la primitiva de memoria compartida entre particiones. ERA entrega a SystemOS una dirección física invitada; SystemOS llama a esta función para obtener una asignación utilizable. Este es el mecanismo detrás de la captura de GameDVR, la composición de framebuffer y el audio entre particiones.

xbtplinkc también importa XpalIsCapabilityEnabledByVm desde xpalk.dll; el sufijo ByVm consulta el estado de la capacidad a nivel de hipervisor, no a nivel del SO, lo que confirma que comprueba si el propio hipervisor ha habilitado la capacidad antes de continuar.

xrfs.sys Sistema de archivos Xbox Runtime

Controlador de sistema de archivos NT completo. El análisis de importaciones confirma que implementa semántica real de sistema de archivos: Cache Manager (Cc*), E/S MDL, bloqueos de archivos (FsRtl*), construcción de descriptores de seguridad, tablas genéricas de árbol AVL para la indexación de directorios.

Importaciones distintivas clave:

root@kitploit:~
FsRtlRegisterFileSystemFilterCallbacks
IoRegisterFileSystem
RtlCreateSecurityDescriptor / RtlCreateAcl / RtlAddAccessAllowedAce
XpalIsCapabilityEnabled
WppRecorder.sys in-memory ETW trace recorder

xrfs.sys no importa XVIO directamente. En cambio, xbtplinkc.sys importa XvioTranslateXrfsGuestGpa; XRFS es la capa de sistema de archivos y XVIO proporciona la traducción de GPA debajo de ella.

Arquitectura del sistema de archivos entre particiones

root@kitploit:~
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

27. eracontrol.exe

Importaciones clave específicas de Xbox:

XCRDAPI.dll control directo de montaje de XVD:

root@kitploit:~
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

root@kitploit:~
NtOpenPartition
RtlSetProcessIsCritical
RtlWaitForWnfMetaNotification / RtlPublishWnfStateData
NtQueryWnfStateData / NtDeleteWnfStateName

ext-ms-win-xblauth-console-l1-1-0.dll (carga diferida):

root@kitploit:~
XblaInitialize            bootstraps Xbox Live auth identity into ERA partition

ext-ms-win-ntuser-rim-l1-1-0.dll (carga diferida):

root@kitploit:~
RIMAddInputObserver / RIMRemoveInputObserver  intercepts raw controller input for ERA routing

SspiCli.dll:

root@kitploit:~
LogonUserExExW            creates user logon tokens for the ERA session

ext-ms-win-session-usermgr-l1-1-0.dll (carga diferida):

root@kitploit:~
UMgrOpenProcessHandleForAccess

RPCRT4.dll:

root@kitploit:~
RpcServerInqCallAttributesW / I_RpcBindingInqLocalClientPID  RPC caller identity verification

28. eraproxyapp.exe

eraproxyapp.exe es el compositor del lado de SystemOS y el puente IPC entre la partición ERA y el shell. 339KB, sustancialmente más grande que eracontrol.exe (249KB).

Composición de framebuffer:

root@kitploit:~
d3d11.dll:  D3D11CreateDevice
dcomp.dll:  DCompositionCreateDevice
AVRT.dll:   AvSetMmThreadCharacteristicsW / AvSetMmThreadPriority / AvRevertMmThreadCharacteristics

eraproxyapp crea un dispositivo D3D11 y un dispositivo DirectComposition para componer el framebuffer de ERA en el shell de SystemOS. La prioridad de subprocesos multimedia de AVRT garantiza la entrega de fotogramas de baja latencia.

IPC entre particiones mediante ALPC:

root@kitploit:~
ntdll: NtAlpcConnectPort / NtAlpcAcceptConnectPort
    NtAlpcSendWaitReceivePort
    NtAlpcCreatePortSection / NtAlpcCreateSectionView
    NtAlpcDeletePortSection / NtAlpcDeleteSectionView
    NtAlpcDisconnectPort / NtAlpcCancelMessage

Las secciones de puerto ALPC proporcionan memoria compartida de copia cero. El framebuffer del juego ERA no se copia; se comparte mediante vistas de sección ALPC asignadas simultáneamente en ambos espacios de direcciones.

Espacio de nombres privado (canal IPC seguro):

root@kitploit:~
CreatePrivateNamespaceW / OpenPrivateNamespaceW
CreateBoundaryDescriptorW / AddSIDToBoundaryDescriptor / DeleteBoundaryDescriptor
ClosePrivateNamespace
bcrypt: BCryptGenRandom / BCryptHashData / BCryptCreateHash / BCryptFinishHash

eraproxyapp establece un espacio de nombres de objetos privado con un descriptor de límite basado en SID, un espacio de nombres de objetos con nombre visible solo para ERA y SystemOS. BCrypt proporciona material de clave aleatorio para el límite.

Identidad del título y audio:

root@kitploit:~
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

Tuberías con nombre:

root@kitploit:~
CreateNamedPipeW / ConnectNamedPipe / DisconnectNamedPipe

29. Análisis adicional de DLL

XblAuthConsoleExt.dll Identidad de hardware y autenticación (46 exportaciones)

Identidad de consola:

root@kitploit:~
XblaGetConsoleCert / XblaGetConsoleId / XblaGetConsoleSerialNumber
XblaGetDevkitType      retail vs devkit detection
XblaGetXblSandbox      Xbox Live environment (retail/preview/dev)

Identidad de título:

root@kitploit:~
XblaGetXboxLiveTitleId
XblaGetTitleAttestation / XblaGetTitleConsoleGeneration

Criptografía:

root@kitploit:~
XblaSignDigest         sign with console private key
XblaGetAttestation / XblaGetTpmPcrAttestation fTPM PCR boot chain measurements
XblaProcessChallenge / XblaProcessSpToken

XblaGetTpmPcrAttestation confirma que la consola realiza una atestación completa de la cadena de arranque. Microsoft puede verificar criptográficamente el estado exacto de la secuencia de arranque cuando una consola se autentica en Xbox Live.

xamapi.dll Shim de compatibilidad de Xbox Application Manager (24 exportaciones)

Reemplaza las API Win32 estándar para las aplicaciones ERA que se ejecutan en el contexto de SystemOS:

root@kitploit:~
ClipCursorOverride / GetClipCursorOverride
GetCursorPosOverride / SetCursorPosOverride
GetMonitorInfoWOverride / GetSystemMetricsOverride
XamApiDisableLayoutScaling / XamApiSetLayoutScaleOverride
AdjustDeviceIdMappingForKeyEventBefore / After
UserContextExtInitialize / SetToken / Cleanup

Así es como SystemOS presenta un entorno de PC con Windows convincente a los componentes que esperan API Win32 estándar de pantalla y entrada.

xboxsynthetickm.dll Inyección de entrada sintética (M:, 12 exportaciones)

Ubicado en el volumen de superposición de hardware M:\ (tratado como nivel de hardware, no como nivel de aplicación):

root@kitploit:~
SyntheticInput_CreateKeyboard / CreateMouse / CreateMouseAbsolute
SyntheticInput_InjectKeyboardInput / InjectMouseInput
SyntheticInput_ReadKeyboardOutput

Así es como xCloud convierte los paquetes de red en eventos de entrada locales. La consola no puede distinguir la entrada sintética de la entrada física a nivel de hardware.

xboxcloudstreaming.dll Motor de streaming xCloud (2 exportaciones)

root@kitploit:~
GetCloudStreamManager
ShutdownCloudStreamManager

XboxLiveTitleId.dll Detección de juegos en tiempo de ejecución (12 exportaciones)

root@kitploit:~
GetCurrentXboxLiveTitleId / GetCurrentXboxLiveInfo
GetProcessXboxLiveInfo / GetPackageXboxLiveInfo
AuthenticateSystemXboxLiveTitle

XBBlackbox.dll Registrador de vuelo

Exportación única: BlackboxServiceMain

XBCastRecv.dll Receptor Miracast (22 exportaciones)

root@kitploit:~
GetWiFiDirectDeviceCategoryForCurrentPlatform
IsMiracastReceiverStartAllowedWithoutApp
GetEdidForCurrentDisplayDevice

Xbox.Shell.Api.dll Integración de shell (44 exportaciones)

root@kitploit:~
CheckGamingPrivilegeSilently / WithUI
ShowProfileCardUI / ShowGameInviteUI
PlaySystemSound
AreWebAppsEnabled

Pila de controladores con nombre en clave "Pendragon"

XAccessoriesGip.dll:

root@kitploit:~
PendragonGIP_SendGIPMessage
PendragonGIP_SetMessageCallback
PendragonGIP_Start / Stop

30. Resumen completo de la arquitectura del sistema

Arquitectura general

root@kitploit:~
Hypervisor (lowest layer, hardware virtualization)
    ↓
Host OS (Root Partition) hidden from SystemOS, management OS
├── 108MB fixed RAM carve-out
├── 5 core system processes
├── **XVIO.SYS**             Xbox Virtual I/O core (ring buffers, GPA translation)
├── **XSraFlt.sys**          GPU security filter (display capture interception)
├── **sevpipe driver**       secure IPC namespace root
├── **xvncbus.sys**          Durango Virtual XVNC Bus Driver
├── **xvnc.sys**             XVSC miniport
├── **xrfs.sys**             NTFS Filesystem driver
└── Hardware device ownership (GPU, network, storage)
    ↓ (creates child VMs with virtualized hardware)
SRA SystemOS Partition (Windows 11 24H2 / WCOS, child partition)
├── Total RAM: 6400MB (dynamically allocated)
├── 89-95 processes
├── sevpipe IPC backbone (client views)
├── ERA lifecycle management (eracontrol.exe)
├── Telemetry pipeline (EtwUploader->NetworkTransferManager)
├── XTF toolchain (J:\tools\, always present on retail)
├── Device Portal web server (:11443)
└── Virtualized hardware views (GPU, NIC, storage via Host OS)
    ↓ (manages as child)
ERA GameOS Partition
├── Game title process
├── XVIO client view
└── All hardware access proxied: ERA->SystemOS->Host OS

Inicializaciones de controladores (suposiciones basadas en lo que tengo hasta ahora)

root@kitploit:~
Host OS Boot (invisible to research, complete assumptions):
1. Host OS loads from its own protected storage partition
2. Normal Windows driver loading within Host OS:
    - XVIO.SYS (registers as \Device\Xvio)
    - XSraFlt.sys (filters GPU commands)
    - sevpipe driver (creates \\.\sevpipe namespace)
    - xvncbus.sys/xvnc.sys (virtual NIC root)
3. Host OS creates SystemOS VM with virtualized hardware, and symlinks images
4. SystemOS never sees Host OS drivers or filesystem

SystemOS View (what research can tell):
1. Sees virtualized devices provided by Host OS
2. XVIO appears as a service, not a driver (xvmctrl.sys interface)
3. sevpipe appears as a namespace but server runs in Host OS
4. Cannot enumerate or access Host OS drivers/files

Secuencia de lanzamiento de ERA (suposiciones)

  1. eracontrol.exe: NtOpenPartition - open ERA hypervisor partition handle
  2. eracontrol.exe: XCRDAPI XCrdSetEraLaunchMapping - associate XVD with partition
  3. eracontrol.exe: XCRDAPI XCrdMountContentType - mount game content into ERA
  4. eracontrol.exe: XblaInitialize - provision Xbox Live identity into ERA
  5. eracontrol.exe: LogonUserExExW - create ERA session user token
  6. eracontrol.exe: RIMAddInputObserver - begin routing controller input to ERA
  7. eraproxyapp.exe: ALPC port sections - establish zero-copy framebuffer channel
  8. eraproxyapp.exe: CreatePrivateNamespaceW - establish secure IPC namespace
  9. eraproxyapp.exe: D3D11 + DComp - prepare framebuffer compositor
  10. ERA partition boots game

Flujo de llamadas (suposiciones)ERA Game Process needs GPU memory:

root@kitploit:~
    ↓
ERA: XVIO guest call->SystemOS
    ↓
SystemOS: xvmctrl.sys->xvioc.sys->Host OS via hypercall
    ↓
Host OS: XVIO.SYS validates request
    ↓
Host OS: Programs actual GPU MMU
    ↓
Host OS: Returns GPA mapping token to SystemOS
    ↓
SystemOS: Forwards to ERA

Mapa de la pila completa


31. Registro de contratos WinRT

El WinMD HDRGameCalibration contiene sorprendentemente aparentemente el COMPLETO registro de contratos WinRT de Xbox, más de 100 contratos que definen toda la superficie de API WinRT de primera parte disponible en la plataforma.

Contratos destacados

Implicaciones

Kinect como contrato mantenido. Windows.Kinect.KinectContract v1 está presente como un contrato de primera clase no obsoleto, coherente con la pila activa (C:\Windows\System32\ht) y con KinectSensorEnabled=true en WdConfig. La visión de Kinect es una infraestructura mantenida activamente incluso en hardware sin un Kinect físico. La canalización de orquestación completa (nuiservice.exe, KinectMediaSource.dll, tres pistas de inferencia, enrutamiento de salida) está documentada en la Sección 33.

Los anuncios son infraestructura interna. Que AdsContract sea un contrato Internal, no una API pública del SDK, significa que la entrega de anuncios está integrada en el sistema operativo al mismo nivel que la autenticación y el almacenamiento, no como una integración de SDK de terceros.

Automatización de pruebas en retail. Windows.Xbox.TestAutomationContract se incluye en las unidades comerciales, en línea con que Windows.Xbox.TestAutomationContract sea accesible para las herramientas del modo desarrollador.


32. UserMgr2

UserMgr2 es la cuenta de usuario interactiva que posee la sesión iniciada activa. NTUSER.DAT está bloqueado (UserMgr2 está activo). Hallazgos clave del perfil:

Estructura del perfil

PathContents
ntuser.ini3 saltos de línea
AccountPictures\UserImage.jpgUna única foto de cuenta Microsoft de 1080x1080, separada del sistema de gamerpics (consulte la Sección 3.2)

Nota sobre privilegios

Los junctions de Device Portal se resuelven con permisos de UserMgr2 en lugar de permisos de DevToolsUser (consulte la Sección 1.2 y la Pregunta sin resolver 12). UserMgr2 tiene un nivel de privilegio más alto que DevToolsUser; UserMgr2 es el propietario de la sesión interactiva, mientras que DevToolsUser es una cuenta de acceso restringida para desarrolladores.


33. Canalización de visión Kinect de nuiservice.exe

nuiservice.exe (3.8MB, ejecutándose como SYSTEM, siempre activo) es el proceso de orquestación de toda la pila de percepción Kinect/NUI. Aloja tres pistas de inferencia en paralelo: cuerpo, rostro y audio; cada una se ejecuta como una canalización de procesamiento separada, programada cooperativamente mediante un grafo de fibras y alimentada con fotogramas a través de una bomba IOCP respaldada por un dispositivo de inferencia GPU D3D11.

Arquitectura

root@kitploit:~
nuiservice.exe
├── D3D11CreateDevice          <- GPU inference device
├── IOCP frame pump            <- async frame dispatch
└── Fiber graph                <- cooperative ML inference scheduling

Entrada: KinectMediaSource.dll

La ingesta de fotogramas la gestiona KinectMediaSource.dll:

root@kitploit:~
KinectMediaSource.dll
├── MFCreate2DMediaBuffer          <- allocates 2D image frames (Media Foundation)
├── alignment.bin     [10.7MB]     <- depth -> 3D coordinate transform LUT
├── alignment_color.bin  [5.7MB]  <- depth/color registration
├── DeviceIoControl->\\.\KinectSensorControl   <- talks to PetraXC.sys
└── CoCreateInstance {9178b0a6}    <- self-registration CLSID

alignment.bin (10.7MB) y alignment_color.bin (5.7MB) son tablas de consulta precalculadas para convertir los datos brutos del sensor de profundidad en coordenadas 3D del espacio mundial y para registrar píxeles de profundidad con píxeles de color, respectivamente.

Seguimiento corporal

Modelos cargados desde X:\ht\versions\{1.0.0|1.0.1|1.0.2}\ mediante vvtechs.dll (NuiVisionCreateFactory):

  • Entrada: fotogramas de profundidad de KinectMediaSource.dll
  • Salida: articulaciones del esqueleto, posición de la cabeza, estado de la mano (agarre/soltar)
  • Los tres directorios de versiones están presentes simultáneamente; la versión activa se selecciona en tiempo de ejecución

Rostro

Modelos cargados desde C:\Windows\System32\ht\ (consulte la Sección 3.3 para el inventario completo de modelos):

  • Entrada: fotogramas de profundidad, IR y color
  • Salida: identidad (quién), expresión (emoción), mirada (dirección de atención), estado de los labios (abiertos/movidos), atributos de apariencia (gafas, vello facial)
  • La salida de identidad alimenta directamente a LogonUserExExW para el inicio de sesión automático basado en rostro (consulte Enrutamiento de salida a continuación)

Audio

Gestionado por speechwov.dll:

root@kitploit:~
speechwov.dll
├── SpeechWov_Create / UpdateAcousticModels
├── SpeechWov_ProcessRecognition
└── Output->wake word events, speech recognition events

speechwov.dll es un motor de reconocimiento de voz y palabra de activación. UpdateAcousticModels indica que el modelo acústico se puede actualizar en tiempo de ejecución (cambios de paquete de idioma o calibración del micrófono). Esta es la infraestructura de "Hey Cortana" / comandos de voz a nivel del sistema.

Enrutamiento de salida

nuiservice.exe distribuye los resultados de inferencia a través de múltiples canales:

RtlCapabilityCheck es el mecanismo de control de acceso: un proceso debe tener la capacidad NT adecuada para recibir cualquier dato NUI. Esto controla por separado el acceso de los títulos de juego, el acceso del shell y el acceso de los desarrolladores.

Consumidores (mediante suscripción WNF)

El contrato WinRT Windows.Kinect.KinectContract v1 (consulte la Sección 31) es la superficie orientada al retail para el acceso de los títulos de juego a esta canalización.

root@kitploit:~
Camera Sensor Hardware
└── ciumd_wddm.dll  <- most likely WDDM user-mode camera driver
    └── PetraXC.sys (KinectSensorControl)  <- WDF 1.11, disabled until device arrives
        └── \\.\KinectSensorControl

nuiservice.exe  [always running, SYSTEM]
└── KinectMediaSource.dll->DeviceIoControl->\\.\KinectSensorControl
    ├── Track 1: vvtechs.dll  (body)
    ├── Track 2: FaceDetector/FaceRecognition + RF models  (face)
    └── Track 3: speechwov.dll  (audio)
        └──->WNF / LogonUserExExW / named pipe / RPC / State Repository

La investigación se realizó en una Xbox Series S comercial en modo desarrollador. Todo el acceso se realizó a través de la infraestructura de modo desarrollador proporcionada por Microsoft.

Descargar herramienta
HerramientaPropósito
Explorador de WindowsRecurso compartido de red de Xbox (Instrucciones en https://XBOX:11443/#File%20explorer > Examinar)
SSH (DevToolsUser + PIN de VS)Acceso al shell de SystemOS
mklink /JCreación de uniones NTFS para exponer unidades a través del recurso compartido de red
Device Portal (https://XBOX:11443)API REST, explorador de archivos, lista de procesos, volcados en vivo
dumpbin /IMPORTS, dumpbin /EXPORTSAnálisis estático de binarios PE a través del recurso compartido de red
PythonScript para automatizar la API REST
PhasorEntorno de ejecución de scripts para usar en la consola (copiar al recurso compartido de red, ejecutar vía SSH) descargar aquí
reg queryEnumeración del registro desde el shell SSH
WdApp.exeAdministrador de paquetes y control del ciclo de vida de ERA (enumeración de la superficie de comandos)
WdConfig.exeEnumeración de la API de configuración de la consola
Análisis de trazas ETLCanalización de Windows Update a través de la unión S:\Deployment\SoftwareDistribution\
Volcados de procesos en vivoGET /api/debug/dump/usermode/live?pid=<pid>
GhidraAnálisis de interfaces COM / controladores
IDA ProGrafos de llamadas de DLL complejas e interfaces COM
XboxToolsMi propia colección de utilidades para varias cosas
Espacio de nombresURI baseEndpoints clave
Implementación de aplicaciones/api/appx/packagemanager/instalar, desinstalar, listar paquetes, grupos de contenido
Administrador de dispositivos/api/devicemanager/árbol jerárquico completo de dispositivos
Recopilación de volcados/api/debug/dump/volcados de proceso en vivo, volcados de bugcheck, control de bloqueos
ETW/api/etw/ETW en tiempo real sobre WebSocket, enumeración de proveedores
Explorador de archivos/api/filesystem/explorar, subir, descargar, eliminar, renombrar
Redes/api/networking/ipconfig
Información del SO/api/os/nombre de máquina, información del SO
Rendimiento/api/resourcemanager/lista de procesos en vivo con CPU/memoria, estadísticas de rendimiento del sistema
Energía/api/power/batería, planes de energía, informes de estudio de suspensión
Control remoto/api/control/reiniciar, apagar
Administrador de tareas/api/taskmanager/iniciar/detener aplicaciones, terminar procesos
Bluetooth/api/bt/enumerar, emparejar, conectar dispositivos de audio
WiFi/api/wifi/enumerar interfaces/redes, conectar, desconectar
WER/api/wer/enumerar y descargar informes de Windows Error Reporting
WPR/api/wpr/iniciar/detener/descargar seguimientos de rendimiento WPR, perfiles personalizados
IndicadorEndpoints afectados
NoKernelDumpsVolcado de kernel en vivo, descarga de volcado de bugcheck
NoUserModeDumpsVolcado de proceso en vivo (por PID)
NoBugcheckDumpsLista/descarga/control de volcados de bugcheck
NoWPRBootTracingSeguimiento WPR en el arranque
NoPowerSchemeAccessLectura/escritura del plan de energía
ArchivoTamañoPropósito
RestDocumentation.json40KBEsquema completo de API REST legible por máquina
workspace-definitions.js26KBDiseño del panel del espacio de trabajo del portal (índice secundario de API)
common-xbox.js21KBAdiciones de portal específicas de Xbox sobre la base de Device Portal
common.js56KBMarco base de Device Portal
toolhost.js7.8KBCapa de alojamiento de herramientas
rest.js19KBBiblioteca de construcción de llamadas REST
d3.js570KBVisualización de datos D3
konva.js676KBRenderizado de Canvas
PIDImagenUsuarioNotas
156(hidden)SYSTEM66MB de conjunto de trabajo, sin nombre de imagen visible
1456xbdiagservice.exeSYSTEMServicio de diagnóstico de Xbox
1808EtwUploader.exeSYSTEMCargador de telemetría ETW
1832StorageManagement.exeDefaultAccountXbox.StorageManagement UWP, IsRunning: false (suspendido)
1904ApplicationClipService.exeSYSTEMGestión de clips de GameDVR, conjunto de trabajo de 37MB
2032xnetsharedservice.exeSYSTEMPuente de red entre particiones
2040NetworkTransferManagerService.exeSYSTEMAdministrador de descargas de contenido de Xbox
2344WebManagement.exeSYSTEMServidor web de Device Portal
2416XUpdMgr.exeSYSTEMAdministrador de actualizaciones de Xbox
2436PRProvisioningService.exeNETWORK SERVICEServicio de aprovisionamiento PlayReady
2460XNetConfig.exeSYSTEMConfiguración de red
2468toolsautoexec.exeSYSTEMEjecutor de autoexec de script .xboxunattend
2572sihost.exeDefaultAccountHost de infraestructura de shell, conjunto de trabajo de 60MB
2836XboxDevService.exeSYSTEMHost del servicio de desarrollador de Xbox, 37MB
3160xrun.exeDefaultAccountCoordinador de lanzamiento de juegos del shell
3256MicrosoftXboxSecurityClip.exeSYSTEMHost de verificación de DRM en tiempo de ejecución
3600XboxUI.exeDefaultAccountInterfaz de shell del panel, conjunto de trabajo de 60MB
3844xrfssvc.exeSYSTEMServicio de sistema de archivos entre particiones XRFS, 352KB (inactivo)
3864xrmntcl.exeSYSTEMCliente de montaje de Xbox Runtime
3888xtfrtservice.exeSYSTEMServicio de runtime XTF
4320Guide.exeDefaultAccountXbox Guide (Xbox.Guide_2602.0.2602.11003), IsRunning: true
4548eracontrol.exeSYSTEMAdministrador del ciclo de vida de la partición ERA, conjunto de trabajo de 991KB
4660WWAHost.exeDefaultAccountDev Home (Microsoft.Xbox.DevHome_1.0.2601.4001), IsRunning: true
6524CastSrv.exeDefaultAccountServicio de proyección Miracast
LayerComponents
ContenidoXCRDAPI.dll (montaje/desmontaje/streaming de XVD)
IdentidadXblAuthConsoleExt.dll, XboxLiveTitleId.dll, pspsra.sys
DRMMicrosoftXboxSecurityClip.exe, XCRDAPI.dll
Control de ERAeracontrol.exe (NtOpenPartition, XCRDAPI, XblaInitialize)
Proxy de ERAeraproxyapp.exe (ALPC, D3D11, DComp, espacio de nombres privado)
Entrada (local)xviokbd.sys, xviomou.sys, XAccessoriesGip.dll (Pendragon)
Entrada (remota)xboxcloudstreaming.dll, xboxsynthetickm.dll
Foco de entradaxviomonc.sys (suplantación)
NPFS?VMNP.SYS controlador NPFS (¿sistema de archivos de canalizaciones con nombre? ¿sistema de filtros?) también se usa para la suplantación de ERA
SO hostxvmctrl.sys, XVIO.SYS, FLTMGR.sys (no está en el sistema de archivos)
FS entre particionesxrfs.sys, xbtplinkc.sys, xrmntcl.exe, xrfssvc.exe
Pantallaeraproxyapp.exe, xamapi.dll (anulaciones Win32), MPO nivel 3
GPUumd12ddi_arden.dll, newbe_xs.dll, xbsc_xs.dll, xg_xs.dll
AudioXVMAudioServer.dll, XAudio2_8/9.dll, configuración de audio espacial
Redesxvnc.sys/xvncbus.sys (NIC virtual), NetXVmService
DiagnósticoXBBlackbox.dll, xbdiagservice.exe, EtwUploader.exe, EtwPlus.dll (canalización Etx)
ActualizaciónXUpdMgr.exe, cliente WU (wuauengcore.dll), volumen Deploy:\
ShellXbox.Shell.Api.dll, XboxUI.exe, Guide.exe, sihost.exe
Streamingxboxcloudstreaming.dll, XBCastRecv.dll (Miracast)
Herramientas de desarrolloWebManagement.exe (Device Portal), pila XTF (132 archivos), WdApp.exe, unattendedsetuphelper.exe
Compatibilidadxamapi.dll (shim Win32), dxbc2dxil_xs.dll (DX11->DX12)
Visión / Kinectnuiservice.exe (3.8MB, SYSTEM, orquestador siempre activo), KinectMediaSource.dll (ingesta de fotogramas, alignment.bin 10.7MB, alignment_color.bin 5.7MB), vvtechs.dll (NuiVisionCreateFactory, pista corporal), speechwov.dll (pista de palabra de activación/voz), modelos de Random Forest de rostro (FaceDetector.bin, FaceRecognition.bin, ExpressionRandomForest.model, +8 otros), 3 versiones activas (X:\ht\versions\)
AnunciosAdsLauncher (aplicación del sistema), Windows.Xbox.System.Internal.AdsContract (WinRT)
Legado (deshabilitado)Zurich (sintonizador de TV, vinculado a XVIO), PetraXC/KinectSensorControl (WDF 1.11, deshabilitado hasta que llegue el dispositivo Kinect, alimenta KinectMediaSource.dll a través de \\.\KinectSensorControl)
ContratoVersiónNotas
Windows.Kinect.KinectContractv1Es probable que Kinect sea compatible para la retrocompatibilidad de títulos
Windows.Xbox.TestAutomationContractLa superficie de automatización de pruebas se incluye en hardware comercial
Windows.Xbox.System.Internal.AdsContractEl sistema de anuncios es un contrato WinRT interno
Windows.Xbox.System.Internal.CopyOnLan.CopyOnLanContractCopia de juegos por LAN, ¿transferencia de títulos por red local?
Windows.System.Internal.XboxLive.Auth.AuthContractv2Superficie de autenticación Xbox Live interna (separada de las API XBL públicas)
AppData\Local\Packages\Solo hay configuraciones de aplicaciones de desarrollo instaladas por sideload; las aplicaciones del sistema Xbox no usan rutas de almacenamiento UWP estándar de LocalPackages
CanalAPIPropósito
Difusión a todo el sistemaRtlPublishWnfStateDataPublica el estado corporal/rostro/audio a todos los suscriptores WNF
Inicio de sesión por rostroLogonUserExExWActiva el inicio de sesión automático de usuario basado en rostro
Canalización con nombre por aplicaciónServidor de canalización con nombre + GetNamedPipeClientProcessIdSalida controlada por proceso; verifica la identidad del llamador antes de entregar los datos
RPC por llamadorServidor RPC + RpcServerInqCallAttributesWAcceso autenticado por llamador a los resultados de inferencia
Identidad persistenteState Repository (SRDictionaryToPropertySet)Persiste la identidad reconocida entre sesiones
Puerta de capacidadesRtlCapabilityCheckTodo acceso a la salida de inferencia controlado por la comprobación de capacidades NT
ConsumidorNotas
Xbox ShellAdaptación de la interfaz de usuario sensible a expresiones
Guide.exeActivador de inicio de sesión automático
XboxUI.exeInterfaz de usuario sensible a atención/mirada
Títulos de juegoMediante el contrato WinRT NuiVision (Windows.Kinect.KinectContract v1, retail)
xCloudel cliente de streaming recibe el estado NUI