Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
XboxSeries — Ricerca personale sull'architettura di Xbox Series | Kitploit
Strumenti/GitHubGitHub/daniellmcguire/xboxseries
Sicurezza Sistemi EmbeddedAnalisi StaticaAnalisi Dinamica (Sandboxing)Reverse EngineeringDebuggerSicurezza HardwareAnalisi di BinariApprendimento e FormazioneAnalisi del Firmware
GitHubdaniellmcguire/xboxseries

XboxSeries

Ricerca personale sull'architettura di Xbox Series

57441 mese faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi RepositorySito web

Xbox Series: Ricerca sull'Architettura Interna

CampoValore
Data9-12 marzo 2026 + 7-? luglio 2026
HardwareXbox Series S (Nome in codice: Lockhart)
Build del sistema operativo26100.7010.amd64fre.xb_flt_2602ge.260212-1010 + 26100.8561.amd64fre.xb_flt_2606ge.260609-2200
Metodo di accessoDev Mode + SSH + REST API + NTFS file share junction

Sommario

Questo report è un'analisi statica e dinamica dell'architettura interna di Xbox Series S, condotta interamente tramite l'infrastruttura ufficiale per sviluppatori di Microsoft. Non sono stati usati exploit né violazioni delle policy; tutto l'accesso è avvenuto nei limiti del programma per singoli sviluppatori.

Questo documento contiene dettagli che vanno dai componenti di più alto livello usati per il gameplay fino ai componenti driver di sistema di più basso livello. Si prevede che la maggior parte di questi dettagli sia la stessa anche per Xbox One.


Chiarimenti

L'IA è stata usata per formattare coerentemente la grande ricerca iniziale (oltre 200 output di analisi e oltre 50 note casuali) in questo documento molto rapidamente. Tutte le modifiche future sono fatte a mano.

Se pensi che un punto di questo documento non sia chiaro, poco documentato o falso, sentiti libero di scrivermi, oppure se hai risposte alle mie domande (nella Sezione 12) sarebbe gradito. GUID e altri pattern comuni vengono oscurati da un hook pre-commit, per sicurezza, nel caso lasci qualcosa che identifichi il mio account.

Molto di ciò su cui sto lavorando sono ipotesi, quindi potrebbe essere impreciso, e cambierà man mano che ottengo più informazioni ed esamino più binari.

Per ragioni che puoi immaginare, non condividerò in nessun caso binari diretti, output di disassemblaggio o qualsiasi cosa considerata proprietà intellettuale di Microsoft o delle sue consociate.

root@kitploit:~
ERA = Partizione GameOS
SRA = Partizione SystemOS
HT = Kinect (possibilmente "Human Tracking"?)
Arden = Stack GPU Xbox Series X/S
NewBe = Compilatore shader Arden

Risultati Chiave

La gestione dei driver da parte dell'Host OS esiste al di fuori del noto modello SRA/ERA, vedi modello di fiducia (Sezioni 4.2, 17.5). XVIO.SYS e XSraFlt.sys vengono caricati direttamente dall'hypervisor (tramite HostOS) prima che Windows si inizializzi e sono assenti da tutti i volumi accessibili. Non possono essere manomessi nemmeno con accesso completo al kernel, che costituisce il confine di sicurezza primario.

HVCI è deliberatamente disabilitato (Sezione 18). IsSecureKernelRunning = 0x0 conferma che il Secure Kernel (VTL1) non è in esecuzione. L'integrità del codice è solo al momento del caricamento, lasciando una finestra TOCTOU una volta che i binari sono mappati. Questo è un compromesso prestazionale deliberato; il confine di sicurezza è la partizione dell'hypervisor, non la protezione della memoria all'interno della partizione.

La junction NTFS espone l'intero filesystem SystemOS sulla rete (Sezione 1.2). Un singolo comando mklink /J dalla shell SSH mappa C:\ o qualsiasi altra cosa nella condivisione file di Device Portal, rendendo ogni binario di sistema leggibile da remoto senza alcuna autenticazione aggiuntiva oltre al PIN della dev mode.

L'architettura cross-partizione è quasi completamente mappata (Sezioni 4, 14, 26-28). La partizione di gioco ERA comunica con SystemOS esclusivamente attraverso canali mediati dall'hypervisor: ring buffer XVIO per I/O, traduzione GPA per memoria condivisa, HvSocket per IPC e sezioni di porta ALPC per la consegna del framebuffer zero-copy concessa da un "Host OS" padre.

La junction Deploy:\ bypassa le restrizioni di accesso locale (Sezione 25). Il volume di Windows Update è accessibile solo tramite condivisione di rete (S:\Deployment\SoftwareDistribution\) a causa di qualche discrepanza da qualche parte (forse xrfssvc.exe?).

La maggior parte dei binari ha solo stringhe di descrizione; non lo sapevo fino ad oggi perché non stavo usando Windows per nient'altro che per la connessione effettiva alla console. Spesso è noioso (es. XVUH, XVMCTRL) ma altre volte è molto descrittivo (es. Durango Virtual XVNC Bus Driver, Xbox Remote File System Service).

Ambito e Limitazioni

Tutti i test sono stati eseguiti su una singola unità Xbox Series S commerciale in developer mode. I risultati riflettono molte build, tuttavia alla fine farò un diff delle build e lo documenterò. I risultati possono variare tra revisioni hardware (Series X, Xbox One) e versioni firmware. Diverse superfici a livello di kernel non erano raggiungibili: i dump del kernel live sono bloccati dalla restrizione NoKernelDumps, e la superficie IOCTL di xvmctrl.sys non è stata completamente enumerata. Le domande aperte sono tracciate nella Sezione 12.


Metodologia

Strumenti Usati

Approccio

L'accesso è stato stabilito tramite l'interfaccia SSH non documentata (ufficialmente, ma esiste documentazione comunitaria) della Dev Mode. La tecnica della junction NTFS (Sezione 1.2) ha esteso l'accesso in lettura dallo spazio scratch D:\DevelopmentFiles all'intero volume di sistema C:\ e a tutti gli altri volumi con lettera. Tutta l'analisi è stata in sola lettura; nessuna impostazione di sistema è stata modificata (WdConfig.exe set non è stato usato). Xbox può eseguire direttamente binari console Windows x86_64 standard (compilati con /MT) tramite la shell SSH, cosa che è stata usata per eseguire strumenti di analisi localmente.

I dump del kernel non erano disponibili: la restrizione NoKernelDumps di Device Portal li blocca nella dev mode commerciale. I dump di processi utente live erano disponibili e sono stati usati dove rilevante.


1. Accesso Remoto

1.1 Accesso Shell

La Dev Mode di Xbox supporta Visual Studio, che usa SSH:

  • Nome utente: DevToolsUser
  • Password: il PIN di Visual Studio mostrato in Dev Home

1.2 Accesso al Filesystem

Il Device Portal su https://XBOX:11443 espone una condivisione file NTFS nascosta su D:\DevelopmentFiles. Dalla shell SSH:```batch mklink /J D:\DevelopmentFiles\C C:\

root@kitploit:~
Questo crea un junction point dallo spazio di sviluppo alla radice dell'unità C: di sistema, esponendo l'intero filesystem SystemOS come condivisione di rete leggibile all'indirizzo:

    \\XBOX\DevelopmentFiles\C

Ciò consente di eseguire strumenti come `dumpbin` da un PC direttamente sui binari di sistema Xbox tramite rete.

---

## 2. Identità del sistema operativo

| Campo             | Valore            |
|--------------------|-------------------|
| Nome prodotto     | Xbox Series S     |
| Edizione OS       | SystemOS          |
| Versione Windows NT | 10.0              |
| Numero build      | 26100             |
| Stringa build     | `26100.8561.amd64fre.xb_flt_2606ge.260609-2200` |
| LCUVer            | `10.0.26100.8536` |
| Ramo              | `xb_flt_2602ge`   |
| Data build        | 9 giugno 2026     |
| Architettura      | x64               |
| UEFI Secure Boot  | `NotCapable`      |
| Nome in codice console | Lockhart      |
| Modalità console  | Default           |
| ID sandbox        | `XDKS.1`          |

Il sistema operativo si identifica come **SystemOS**, non Windows. Il ramo di build `xb_flt_2602ge` sembra essere un "fork" Xbox distinto del codebase Windows, ancora molto simile a Windows 11. Alcuni binari di sistema Windows sono identici bit per bit alle loro controparti desktop, compilati con la stessa toolchain MSVC, probabilmente originari degli stessi pacchetti UUP. Questo è separato dalla non chiara "Host OS".

### 2.1 Identità del registro

Diversi campi di `CurrentVersion` sono stati intenzionalmente congelati, similmente a Windows desktop (per compatibilità con i titoli Xbox One in questo caso):

| Chiave | Valore | Note |
|-----|-------|-------|
| `CurrentVersion` | `6.3` | Riporta internamente Windows 8.1, per compatibilità |
| `BuildGUID` | | azzerato/pulito |
| `InstallDate` | `0` | nessun timestamp di installazione |
| `EditionID` | `SystemOS` | Mai aggiornato |
| `ReleaseId` | `2009` | Congelato all'era di Windows 10 20H2; mai incrementato |

---

## 3. Layout dei volumi

La console espone 13 lettere di unità, la maggior parte delle quali si presume sia [come su Xbox One, interamente virtuale](https://xboxoneresearch.github.io/wiki/operating-system/xbox-operating-system/)

| Unità | Etichetta | Contenuti | Note |
|-------|-------|----------|-------|
| `C:` | System Boot | File del sistema operativo Windows | Partizione SystemOS standard |
| `D:` | *(none)* | `DevelopmentFiles\` | Spazio di sviluppo della modalità dev |
| `G:` | *(none)* | `GameDVR_VideoBuffer` (272MB), `GameDVR_AudioBuffer` (16MB), `GameDVR_AudioBuffer_SysLoopback` (3MB) | Buffer circolari di acquisizione grezzi, memoria condivisa tra ERA e SystemOS |
| `J:` | Sys Tools | Toolchain XTF, driver, QuickActions | Vedi Sezione 5 |
| `M:` | Misc | Contiene gli overlay NTFS specifici della console per librerie e driver | Partizione System OS? |
| `N:` | *(none)* | `BlackBox\`, `EtwPlus\`, `CMS\`, `errorstrings\`, `usersettings\` | Volume diagnostica e telemetria, vedi Sezione 3.2 |
| `Q:` | *(none)* | `Users\DevToolsUser\` | directory home utente |
| `S:` | *(none)* | `apps\`, `Clip\`, `Deployment\`, `Prefetch\`, `Microsoft\`, `ProgramData\` | probabilmente Volume Host OS (contiene anche app predefinite e altre risorse) |
| `T:` | *(none)* | `GameDVR\`, `Update\`, junction a Harddisk16 | Metadati GameDVR + pipeline di aggiornamento |
| `U:` | *(none)* | `ShellState\`, `BackCompatLicenses\`, `UserDataCache\` | Stato shell e utente |
| `V:` | *(none)* | *(vuoto)* | Scopo sconosciuto |
| `X:` | SystemAux | `Apps\`, `Catalog000.bin` (2.3MB) | Binari app di sistema: 63 app incluse `AdsLauncher`, `Xbox.DiscordComponent`, `Xbox.SingleUserProxy`, `Xbox.NTSCaptivePortal`, `Xbox.Xmap`, `Xbox.XboxIDP`, vedi Sezione 3.3 |
| `Y:` | SystemAuxF | `Apps\`, `Catalog000.bin` (6.5MB) | Binari app di sistema secondari |

Inoltre, `\\.\HarddiskVolume10` esiste senza lettera di unità assegnata. C'è un volume WER (Windows Error Reporting) nascosto contenente `CrashDumps\`, `ReportArchive\`, `ReportQueue\` e `Temp\`. Esistono almeno **18 oggetti dispositivo disco fisico** (`PhysicalDrive0` fino a `PhysicalDrive17`), tutti presenti come oggetti kernel ma inaccessibili a livello raw dallo spazio utente. `HarddiskVolume16` e `HarddiskVolume18` esistono come volumi reali accessibili ma sono bloccati per `DevToolsUser`.

### 3.1 Percorsi dispositivo kernel nascosti

I seguenti percorsi esistono come oggetti dispositivo kernel ma sono inaccessibili dallo spazio utente (normalmente):

- `\??\Deploy:\` volume della pipeline di aggiornamento/distribuzione Xbox (accessibile tramite junction sulla condivisione di rete in `S:\Deployment\`)

### 3.2 Volume diagnostica N:\

Diverse directory su `N:\` sono attivamente nascoste da un filesystem filter driver a livello kernel: appaiono vuote a tutti gli strumenti dello spazio utente ma è confermato che vengono scritte in runtime:

| Percorso | Stato | Note |
|------|--------|-------|
| `N:\EtwPlus\` | **Nascosto dal kernel** | Contenuti nascosti dal filesystem filter driver |
| `N:\BlackBox\` | Accessibile | Contiene dati di telemetria crash report ETL specifici di Xbox |
| `N:\errorstrings\en-US.json` | Accessibile | Il database completo delle stringhe di errore Xbox contiene 797 voci, vedi Sezione 3.4 |
| `N:\usersettings\18\public\` | Accessibile | Gamerpic a piena qualità memorizzate come PNG senza estensione (1080×1080 RGBA, formato PNG standard) |

`N:\usersettings\18\public\` memorizza sia `AppDisplayPic` che `GameDisplayPic` come file senza estensione. L'hashing SHA256 conferma che sono identici byte per byte: l'immagine di visualizzazione dell'app e il gamerpic sono lo stesso file scritto su due percorsi.

### 3.3 X:\ SystemAux

`X:\ht\versions\` contiene uno stack di visione Kinect attivo con **tre versioni simultanee** installate side-by-side (1.0.0, 1.0.1, 1.0.2), per un totale di 119MB. Corrispondono alle build di `vvtechs.dll` versionate rispettivamente 1.67MB->1.70MB->1.85MB.

**Modelli ML di body tracking** (per directory di versione):

| File | Dimensione | Scopo |
|------|------|---------|
| `exemplardb.xmplr` | 36.7MB | Database di esempi di pose complete del corpo |
| `FernsModel.bin` | 932KB | Rilevatore di keypoint di profondità (classificatore random ferns) |
| `HeadPosition.mshdf` | 262–393KB | Stimatore del giunto della testa (varia in base alla versione) |
| `LSVMGripReleaseRight.gbd` | 7.5KB | Classificatore SVM latente presa/rilascio, mano destra |

**Modelli ML di face tracking** (a livello di sistema, `C:\Windows\System32\ht\`):

| File | Dimensione | Scopo |
|------|------|---------|
| `FaceDetector.bin` | 3.0MB | Individua i volti nel fotogramma |
| `FaceRecognition.bin` | 3.4MB | Riconoscimento identità da profondità/IR |
| `FaceRecognition_Color.bin` | 5.9MB | Riconoscimento identità dal canale colore |
| `ExpressionRandomForest.model` | 150KB | Classificatore di emozioni |
| `EyeLeftRandomForest.model` | 55KB | Stato occhio sinistro |
| `EyeRightRandomForest.model` | 65KB | Stato occhio destro |
| `LookingAwayRandomForest.model` | 42KB | Rilevamento sguardo/attenzione |
| `MouthOpenRandomForest.model` | 58KB | Stato bocca aperta |
| `MouthMovedRandomForest.model` | 35KB | Movimento labbra |
| `FacialHairIRRandomForest.model` | 126KB | Peli facciali (solo sensore IR) |
| `GlassesIRRandomForest.model` | 206KB | Rilevamento occhiali (solo sensore IR) |

Tutti i classificatori degli attributi facciali sono modelli **Random Forest**. L'output copre identità, espressione, sguardo, stato delle labbra e attributi dell'aspetto.

Il `vvtechs.dll` nello stack esporta una singola funzione: `NuiVisionCreateFactory`. Importa `EtwPlus.dll` e `D3D11`, confermando che la pipeline di visione Kinect gira sulla GPU e usa il percorso di telemetria specifico di Xbox. È attiva su hardware senza un Kinect fisico collegato (vedi anche `KinectSensorEnabled=true` nella Sezione 6 e l'intera pipeline di `nuiservice.exe` nella Sezione 33).

### 3.4 Database codici di errore N:\errorstrings\en-US.json

797 voci di stringhe di errore Xbox. Codici notevoli con rilevanza per la sicurezza o l'architettura:

| Codice errore | Stringa | Note |
|------------|-----------------|-------|
| `0x887E0002` | D3D12.X runtime/driver mismatch | Conferma che D3D12.X è una variante D3D12 specifica di Xbox, non una D3D12 generica |
| `0x80A40406` | Enhanced Microsoft telemetry enabled in dev mode | La modalità dev fa aderire esplicitamente la console alla raccolta di telemetria elevata |

---

## 4. Architettura dell'hypervisor

Xbox usa un hypervisor personalizzato basato su Hyper-V che esegue due partizioni:

- **SystemOS** la partizione SRA
- **Partizione ERA** l'ambiente di esecuzione GameOS / Title OS

### 4.1 Stack dei driver

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

### 4.2 Driver hypervisor principali

| Driver            | Dimensione | Scopo                                                              |
|-------------------|---------|----------------------------------------------------------------------|
| `xvmctrl.sys`     | 364KB   | Controllo VM, interfaccia principale dell'hypervisor, superficie IOCTL |
| `XVIO.SYS`        | unknown | Xbox Virtual I/O, ABI diretta dell'hypervisor (non presente nel filesystem SystemOS) |
| `xvioc.sys`       | unknown | XVIO Client, interfaccia lato SystemOS verso XVIO |
| `xvbus.sys`       | 73KB    | Root del bus virtuale + provider HvSocket XVIO |
| `hvsocket.sys`    | 185KB   | Implementazione socket Hyper-V |
| `VMNP.SYS`        | 106KB   | È chiamato "NPFS Driver", gestisce anche le impersonificazioni. |
| `Xrfs.sys`        | 135KB   | Driver filesystem Xbox |
| `XRmnt.sys`       | 49KB    | Driver mount Xbox |
| `XRo.sys`         | 95KB    | Filtro sola lettura Xbox |
| `VerifierExt.sys` | 274KB   | Estensione Driver Verifier |

**Riscontro critico:** `XVIO.SYS` e `xpalk.dll` **non hanno voci di servizio nel registro** e sono **assenti dal filesystem SystemOS**. Probabilmente vengono caricati da Host OS prima dell'avvio di SystemOS, completamente al di fuori del modello di driver locale. Questo è il vero meccanismo di sicurezza: anche con accesso completo al kernel SystemOS, questi componenti non possono essere manomessi.

### 4.3 Superficie API XVIO (ricostruita dagli import)

Info su XVIO [sono disponibili qui](https://xboxoneresearch.github.io/wiki/development/xvio/xvio-overview/), ma non posso confermare che le cose non siano cambiate dai tempi di Xbox One.

Dagli import di `xvmctrl.sys`, `xviomonc.sys` e `srakmd_arden.sys` verso `XVIO.SYS`:

    XvioInitialize / XvioCleanup
    XvioCreateEvent
    XvioPostMessage
    XvioGetCurrentPartitionId                           (identifies active partition, from xviomonc)
    XvioGetReservedMemory                               (hypervisor carve-out RAM access, from srakmd_arden)
    XvioRegisterGpaMdl / XvioUnregisterGpa              (Guest Physical Address mapping)
    XvioSfrMapPages / XvioSfrUnmapPages                 (Shared Frame Region, cross-partition GPU memory)
    XvioSfrCounterGet / XvioSfrPerfCounterSet
    XvioSfrReadEvent
    XvioSetFocus                                        (switches input focus between partitions)
    XvioSetSystemTime
    XvioSaveProvidersState / XvioRestoreProvidersState
    XvioPerfMonitoringEnabled
    XvioCreateRingBuffer / XvioDestroyRingBuffer
    XvioGetRingBufferContext
    XvioReadRingBuffer / XvioReadRingBufferEx / XvioWriteRingBuffer
    XvioAcquireRingBufferRundown / XvioReleaseRingBufferRundown

`XvioRegisterGpaMdl` e le funzioni SFR sono il meccanismo di condivisione della memoria dell'hypervisor: pagine di RAM grezza e framebuffer GPU mappate attraverso il confine di partizione.

### 4.4 Servizi HvSocket tra partizioni

`hvsocket.sys` espone servizi per la comunicazione socket tra partizioni:

- `HvSocketGetPartitionConnections` / `HvSocketGetPartitionListeners` enumerano i canali attivi
- `HvSocketGetVmIdFromVmbusHandle` risoluzione handle VMBus
- `HvSocketUpdateServiceTable` registro di tutti i servizi tra partizioni

Una DLL con nome GUID `[REDACTED]_hvsocket.dll` registra un provider di servizi HvSocket. Il GUID è oscurato nel caso fosse identificabile.

I quattro GUID endpoint HvSocket wildcard sono stati risolti tramite calcolo del SID del servizio SHA1; vedi Sezione 20 per i dettagli completi, inclusi i canali tra partizioni DiagTrack, RpcSs e EventLog.

---

## 5. Volume Dev J:\ "Sys Tools" XTF

> **Impatto:** il volume `J:\` è presente su ogni Xbox retail. In modalità sviluppatore, la toolchain XTF completa è accessibile senza alcuna autenticazione aggiuntiva oltre al PIN della modalità dev. Ciò include debug remoto, streaming dello schermo, profilazione GPU PIX e API di controllo della console non destinate all'accesso da parte dell'utente finale.

Il riscontro più significativo di questa ricerca. Il volume `J:\` (etichettato "Sys Tools") contiene la **Xbox Tools Framework (XTF)**, la toolchain interna del dev kit di Microsoft, che a quanto pare è semplicemente presente su ogni Xbox retail. Enumerazione completa: **132 file, 52MB** sull'intero volume.

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

Tutte le 20 estensioni XTF sono registrate 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 Debugger remoto di Visual Studio (`J:\tools\debugmon\`)

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

Payload di debug versionati per VS 2015 fino a VS 2022 (`debugmondev14payload` fino a `debugmondev16payload`). **Tre generazioni di debugger remoto Visual Studio sono presenti e registrate contemporaneamente: VS2015, VS2017 e VS2019** coesistono tutte sullo stesso filesystem della console retail.

### 5.3 Altri strumenti notevoli

| Binario | Scopo |
|---|---|
| `agent-xbox.exe` (1.5MB) | Agente XTF principale |
| `xtfrtservice.exe` (1.3MB) | Host del servizio runtime XTF |
| `xstudioserviceexe.exe` | Servizio Xbox Studio |
| `xperf.exe` | Profiler delle prestazioni Xbox, presente e funzionante, ma **il tracing ETW del kernel è completamente bloccato indipendentemente dallo strumento** (vedi Sezione 5.5) |
| `videoserver.exe` (RTSP) | Server di streaming dello schermo RTSP autonomo |
| `wdapp.exe`, `wdconfig.exe` | Strumenti Wave Debugger / configurazione |
| `wdcapture.exe` | Acquisizione screenshot/video |
| `wdgamestream.exe` | Controllo streaming di gioco |
| `xboxnetapidiagsystem.exe` | Diagnostica di rete Xbox Live |
| `xbtp.dll` (503KB) | Protocollo di trasferimento a banda larga Xbox |
| `xraytool.exe` | Strumento prestazioni console Xbox (rivela il fatto che Host OS esiste) |
| `xstudioclient.dll` | Libreria client Xbox Studio |
| `unattendedsetuphelper.exe` | Toolkit completo di gestione console, vedi Sezione 5.6 |

### 5.4 Formato QuickActions `.xboxunattend`

`J:\QuickActions\` contiene script di automazione in formato `.xboxunattend`. Sono semplici script batch Windows attivati tramite Device Portal. Azioni disponibili:

- `Capture_Screenshot.xboxunattend` chiama `wdcapture.exe screenshot`
- `Capture_Video.xboxunattend`
- `Toggle_ConsoleMode.xboxunattend` cicla le modalità di emulazione hardware tramite `WdConfig.exe`
- `Toggle_HDR.xboxunattend`
- `Toggle_Resolution.xboxunattend`
- `Launch_DevHome.xboxunattend` / `Launch_RetailHome.xboxunattend`
- `Suspend_Title.xboxunattend`

`Toggle_ConsoleMode.xboxunattend` rivela l'elenco completo degli identificatori delle modalità di profilazione passati a `WdConfig.exe`: `AnacondaProfiling`, `LockhartProfiling` e **`Scarlett 40 GB`**.

### 5.5 xperf / WPR

`xperf.exe` e WPR sono completamente presenti e funzionanti, incluso un profilo WPR `NeuralProcessing`. Tuttavia, tutto il tracing ETW del kernel è bloccato da due distinti codici di errore:

| Codice errore | Significato |
|------------|---------|
| `0x80070005` | `Access denied`, rifiuto ACL standard di Windows |
| `0xc5585011` | `Xbox policy block`, **non esiste alcuna stringa di errore visibile all'utente per questo codice** (non presente in `N:\errorstrings\en-US.json`) |

L'enumerazione dei provider ETW mostra **zero provider specifici di Xbox** nel namespace ETW standard. Tutta la telemetria Xbox passa attraverso `EtwPlus.dll` usando funzioni con prefisso `Etx`, una pipeline completamente separata dall'ETW standard di Windows (vedi Sezione 19.3).

### 5.6 Strumento di gestione console unattendedsetuphelper.exe

`unattendedsetuphelper.exe` è un eseguibile di gestione della console che copre:

- Ripristino delle impostazioni di fabbrica
- Aggiornamento firmware basato su rete
- Iniezione di toast/notifiche
- Gestione Device Portal

Funge anche da motore runtime per lo scripting `.xboxunattend` (il formato QuickActions documentato nella Sezione 5.4).

---

## 6. Superficie impostazioni WdConfig

`J:\tools\WdConfig.exe` (build `10.0.26100.7010`) espone l'intera API di configurazione della console. Impostazioni notevoli:

### Categoria Debug

| Impostazione | Valore | Note |
|---|---|---|
| `ConsoleType` | `Lockhart` | Identificatore hardware |
| `ConsoleMode` | `Default` | `AnacondaProfiling`, `LockhartProfiling`, `Scarlett 40GB` |
| `EraGraphicsDriverMode` | `Title Configured` | Opzioni: `Retail`, `Instrumented`, `Validated`. L'equivalente SRA è `SraGraphicsDriverMode = Retail`; ERA e SRA usano impostazioni separate per il driver |
| `EnableKernelDebugging` | `false` | Impedisce il teardown del crash ERA per l'attacco del debugger kernel |
| `EnablePixMemory` | `false` | Riserva 6048MB extra per PIX in modalità Lockhart Profiling |
| `CrashDumpType` | `None` | Opzioni: `Triage`, `Mini`, `Heap` |
| `TitlePerformanceOverlay` | `false` | Overlay HUD GPU/CPU in tempo reale sui titoli in esecuzione |
| `ExtraTitleMemory` | `0` | Massimo 6048MB in modalità Lockhart Profiling |
| `LastShutdownReason` | `Console crash` | Persistito tra i riavvii; la mia console è andata in crash all'ultimo spegnimento |
| `KinectSensorEnabled` | `true` | **Impostato su true su hardware senza Kinect collegato**; lo stack viene provisionato indipendentemente dalla presenza fisica dell'hardware |

### Categoria Rete

| Impostazione | Valore | Note |
|---|---|---|
| `UseDebugNicForAllTraffic` | `false` | Esiste una NIC di debug separata, distinta dalla NIC retail. |

### Categoria Archiviazione

| Impostazione | Valore | Note |
|---|---|---|
| `DevkitUseRetailConnectedStorage` | `false` | Se abilitata, la modalità dev userebbe la partizione di archiviazione connessa retail. Non testata. |
| `RunFromPcDataCacheSizeInGB` | `100` | **100GB riservati per impostazione predefinita alla cache dei titoli Run-From-PC; bloccata, non può essere modificata dall'utente** |

### Categoria Unattended

| Impostazione | Valore | Note |
|---|---|---|
| `AllowUsbUnattendScript` | `true` | Gli script `.xboxunattend` su USB vengono eseguiti automaticamente |
| `RunUnattendScriptImmediately` | `false` | Se true, gli script USB vengono eseguiti all'avvio senza prompt di annullamento |

### Note sulla sicurezza

**L'email dell'account Microsoft è memorizzata in chiaro.** L'archivio WdConfig della modalità dev contiene l'indirizzo email dell'account Microsoft collegato in chiaro. Probabilmente è leggibile da qualsiasi processo con accesso SRA.

---

## 7. API di distribuzione contenuti Xbox XCRDAPI.dll

`XCRDAPI.dll` è il kernel di gestione dei contenuti della piattaforma Xbox. Gestisce DirectStorage, installazione progressiva, DRM, xCloud e archiviazione blob in un'unica libreria.

### 7.1 DirectStorage

    DStorageGetFactory
    DStorageGetMappedControlPage

L'implementazione DirectStorage di Xbox è incorporata in XCRDAPI, non in un SDK separato.

### 7.2 Ciclo di vita 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 Installazione progressiva in streaming

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

Pipeline di installazione progressiva completo con coda a priorità. Le regioni sono blocchi indirizzabili di contenuto di gioco.

### 7.4 Integrazione XCloud

    XCloudQueryFeatureBits
    XCloudSetFeatureBits

I flag delle funzionalità di streaming xCloud sono controllati tramite la stessa API dei contenuti locali.

### 7.5 DRM / Attestazione

    XCrdQueryAttestationBlob
    XCrdQueryEncryptedInfo / XCrdQueryUnlockInfo
    XCrdIsSideloadedKeyPresent
    XCrdEnableSharedPls / XCrdSetExternalPlsMapping

### 7.6 Sistema Storage Blob

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

### 7.7 Pipeline di trasferimento XVD

    XCrdXvdXferInitialize / Uninitialize
    XCrdXvdXferStart / Stop
    XCrdXvdXferRead
    XCrdXvdXferGetResult

### 7.8 Sistemi di path

    XCrdXasBuildPath / XasBuildPathEx / XasKeyQueryValue   (percorsi App Store XAS)
    XCrdXdsGetVolumeMapping / XdsSetVolumeMapping           (volumi del servizio di distribuzione XDS)
    XCrdBuildPath / XCrdParsePath / XCrdUpdatePath
    XCrdQueryDevicePath / QueryDevicePathByPath
    XCrdSetFlatContentPath

---

## 8. xpal.dll Livello di astrazione della piattaforma Xbox (50 export)

API precedentemente non documentata per identità hardware, funzionalità e gestione dell'alimentazione.

### Identità hardware

    XpalGetConsoleCertificate     certificato hardware
    XpalGetConsoleIdCch           ID hardware della console
    XpalGetConsoleSerialNumberCch numero di serie
    XpalGetSmcFirmwareId          versione firmware SMC
    XpalGetSouthBridgeType        variante chipset

### Rilevamento generazione / SKU

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


### Flag di capacità

    XpalIsCapabilityEnabled
    XpalIsCapabilityEnabledByVm
    XpalIsFactorySettingEnabled
    XpalGetFactorySettings
    XpalGetCapabilities
    XpalIsFeatureEnabled


### Gestione alimentazione

    XpalInitiateDump              attiva crash dump su richiesta
    XpalInitiatePowerStateToggle
    XpalInitiateSystemShutdown
    XpalSetWakeupTimer
    XpalQueryPowerToggleSource
    XpalIsInForcedCs / XpalIsTransitioningToConnectedStandby
    XpalIsSilentBootMode
    XpalNotifyForcedCsHeartbeat
    XpalIsRebootRequested
    XpalRefreshPowerChimeMode


### Configurazione

    XpalGetXConfig / XpalSetXConfig    archivio configurazione Xbox (equivalente moderno dell'EEPROM)
    XpalSetSystemTime
    XpalSetInformation
    XpalReportUem                      attiva UEM (Universal Error Message)


### ERA / VM del titolo

    XpalQueryTitleVmInfo
    XpalWaitForTitleVmTermination
    XpalBackgroundActivityRequest

---

## 9. eracontrol.exe Gestore del ciclo di vita della partizione ERA

`C:\Windows\System32\eracontrol.exe` viene eseguito come LocalSystem (avvio manuale) e gestisce l'intero ciclo di vita della partizione di gioco ERA. L'analisi completa degli import è nella Sezione 28. Riepilogo degli import principali:

- `NtOpenPartition` apre direttamente l'handle della partizione Hyper-V ERA
- `RtlSetProcessIsCritical` contrassegna se stesso come critico (BSOD di sistema se va in crash)
- `XCRDAPI.dll` monta/smonta gli XVD di gioco tramite `XCrdSetEraLaunchMapping`
- `RIMAddInputObserver` / `RIMRemoveInputObserver` intercetta l'input grezzo del controller per instradarlo a ERA
- `XblaInitialize` esegue il bootstrap del contesto di autenticazione Xbox Live della console
- `LogonUserExExW` crea token di accesso utente per la sessione ERA
- `UMgrOpenProcessHandleForAccess` accesso all'handle di processo del gestore utenti
- `PsmQueryBackgroundActivationType` stato di attivazione in background

Nella stessa directory si trova anche: `eraproxyapp.exe` (339KB), il compositor lato SystemOS e bridge IPC tra ERA e la shell. Analisi completa degli import nella Sezione 29.

---

## 10. Tracce ETL BlackBox (N:\BlackBox\)

La directory `N:\BlackBox\` contiene tracce ETW live del flight recorder. Dall'analisi di una traccia catturata:

**Nota:** Il formato ETL di Xbox si risolve solo con 'tracerp'

### Percorsi dell'albero sorgente interno (incorporati nella strumentazione di debug)

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

### Relying party di autenticazione 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

### Crash rilevati

1. **`XboxUI.exe` BEX64** La shell della dashboard ha subito un overflow del buffer di stack (`STATUS_STACK_BUFFER_OVERRUN`, `0xc0000409`) in `XboxUI.Data.dll` all'offset `0x13eb0`
2. **`MoAppHang`** Hang di app UWP per il pacchetto `REDACTED_GUID`

---

## 11. Risultati notevoli aggiuntivi

### WSL presente su Xbox

I servizi `LxssManager` e `lxcore` sono presenti con `LaunchProtected: 0x2` (Processo protetto) e `SeTcbPrivilege`. WSL su Xbox viene eseguito con fiducia a livello del sistema operativo e, in base all'uso, è quasi certamente alla base di qualcosa o almeno in qualche piccolo modo correlato a `Xbox.ConsoleXCloudPlayer` (client di streaming di gioco xCloud).

wsl.exe è presente ma **non** è leggibile.

### Binari System32 esclusivi di Xbox

DLL notevoli non presenti in Windows standard:

- `XCRDAPI.dll` distribuzione dei contenuti (documentata nella Sezione 7)
- `XBBlackbox.dll` flight recorder (documentato nella Sezione 30)
- `XBCastRecv.dll` ricevitore Xbox Cast / Miracast (documentato nella Sezione 30)
- `XVMAudioServer.dll` server audio VM tra partizioni
- `Xbox.Shell.Api.dll` / `Xbox.Shell.OneStoreServices.dll` API shell (documentata nella Sezione 30)
- `XboxCommandService.dll` comando/automazione
- `XboxUserSim.dll` automazione dei test UI
- `xboxgipsynthetic.dll` / `xboxsynthetickm.dll` iniezione di controller virtuali GIP sintetici (documentata nella Sezione 30)
- `AppXDeploymentExtensions.xbox.dll` distribuzione AppX specifica di Xbox
- `xvnapi.dll` API Xbox Virtual Network
- `xbsc_xs.dll` compilatore shader Xbox Series (documentato nella Sezione 16.2)

### Servizi presenti ma non documentati

- `EraControlService` ciclo di vita della partizione ERA
- `XvdStreamSvc` (`xnetsharedservice.exe`) streaming XVD / installazione progressiva
- `XUpdMgr` Xbox Update Manager (separato da Windows Update in qualche modo?)
- `XSraFlt` driver di filtro SRA di Xbox
- `Manufacturing Broker` servizio di provisioning di fabbrica
- `TestSirepSvc` protocollo di test interno SIREP
- `GameCoreController` servizio controller Game Core GDK
- `ConnectedStorage` servizio salvataggi cloud Xbox
- `VideoManagerService` gestione dell'uscita video
- `XBBlackbox` servizio flight recorder
- `xbdiagservice` servizio di diagnostica Xbox
- `XtfRtService` servizio runtime XTF

Ulteriori driver legacy/di basso livello confermati presenti nel registro dei servizi (vedere la Sezione 11.2):

- `Zurich` driver virtuale DVB

### `xvnc` / `xvncbus` Scheda di rete virtuale Xbox

`xvnc.sys` e `xvncbus.sys` sono uno **stack NIC virtuale**; l'enumerazione del servizio `xvnc` rivela:

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

`xvncbus` è un driver di bus WDF 1.15 che enumera le NIC virtuali sopra l'adattatore wireless fisico. La partizione ERA non accede direttamente allo stack di rete: comunica tramite `NetXVmService`, che possiede il livello di NIC virtuale `xvnc`. Il GUID `{e720983a-...}` identifica l'hardware dell'adattatore wireless Xbox.

### `xviomonc.sys` Client di monitoraggio XVIO

Driver avviato all'avvio (`Start: 0x1`) che gestisce il focus della partizione di visualizzazione. Analisi degli import:

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

`xviomonc` **non** gestisce i dati del framebuffer: è solo un driver di segnalazione e gestione del focus. `XvioSetFocus` commuta quale partizione ha il focus di visualizzazione/input; `XvioGetCurrentPartitionId` identifica la partizione attiva. La cattura vera e propria dei frame è gestita da `srakmd_arden.sys`.

`NpSetupVmImpersonation` di `VMNP.SYS` consente al driver di monitoraggio di impersonare l'identità di sicurezza della partizione ERA quando accede alle risorse di visualizzazione ERA attraverso il confine della partizione.

### Buffer GameDVR G:\

Tre file su G:\ sono buffer circolari grezzi mappati in memoria condivisi tra ERA e SystemOS:

- `GameDVR_VideoBuffer` 272MB di acquisizione video a rotazione
- `GameDVR_AudioBuffer` 16MB di audio di gioco
- `GameDVR_AudioBuffer_SysLoopback` 3MB di audio di sistema/UI (stream separato)

---

## 11.1 Risultati del registro

### Riferimento all'unità K:\ solo devkit

`HKLM\SOFTWARE\Microsoft\Durango\XTF` contiene un percorso hardcoded:

    K:\TDK\Tools\XtfJuno.dll

### `HKLM\SYSTEM\ResourcePolicyStore`

| Livello | Budget di memoria |
|------|--------------|
| `BackgroundSmall` | 40MB |
| `Background` | (background standard) |
| `Balloon` | 5120MB |

Livelli dei criteri CPU:

| Criterio | Allocazione CPU |
|--------|---------------|
| `Paused` | 1% |
| `SoftCapLow` | 10% |
| `SoftCapFull` | 100% |
| `HardCap0` | 0% - completamente bloccato |

**Criterio BeanHog** (forse il budget del processo di gioco in primo piano?):

- Memoria: livello in primo piano
- CPU: 100%
- `DoNotKill`: true
- Priorità: importanza massima

---

## 11.2 Archeologia legacy di Xbox One

Tre driver dell'era Xbox One sopravvivono nel registro dei servizi della Series S. Due sono disabilitati; uno è attivamente in esecuzione.

### Stack del decoder del sintonizzatore TV `Zurich`

`zurichs.sys` è il driver virtuale DVB di Xbox One. Stato: **disabilitato**, ma ancora registrato.

Riscontro chiave: `zurichs.sys` importa i ring buffer di `XVIO.SYS`. Il sintonizzatore TV è stato progettato architetturalmente per consegnare il proprio stream video decodificato tramite i ring buffer dell'hypervisor XVIO. Il sintonizzatore usava anche `ZwUpdateWnfStateData` per pubblicare lo stato del sintonizzatore tramite la Windows Notification Facility (WNF).

### `PetraXC` Dispositivo di controllo sensore Kinect

Un driver di dispositivo virtuale WDF ora identificato come **dispositivo KinectSensorControl**, l'astrazione hardware lato kernel per il sensore della fotocamera Kinect. Stato: **disabilitato finché il dispositivo non arriva** (modello WDF demand-start).

Caratteristiche notevoli:

- Compilato con **WDF 1.11**, che corrisponde a Windows 8, collocando la sua origine nella base kernel Xbox One originale
- Importa `XVIO.SYS`, il che significa che comunica tramite il trasporto a ring buffer dell'hypervisor
- Presenta `\\.\KinectSensorControl` come interfaccia di dispositivo, consumata da `KinectMediaSource.dll` nella pipeline nuiservice tramite `DeviceIoControl` (vedere la Sezione 33)

### `pspsra.sys` Bridge AMD PSP verso SRA

Stato: **attivamente in esecuzione** (`Start: 0x0`, avvio all'avvio). Accesso negato a livello kernel: il driver è bloccato e non può essere ispezionato ulteriormente.

`pspsra.sys` si trova direttamente sotto la partizione SRA nella catena di avvio come **ponte tra l'AMD Platform Security Processor (PSP) e il livello SRA**. L'AMD PSP gestisce l'attestazione fTPM e il certificato della console a livello di hardware nudo, e `pspsra.sys` è il ponte che porta quella catena di fiducia in SRA. Questo lo colloca nello stesso livello di fiducia di `XVIO.SYS` e `XSraFlt.sys`, inizializzato prima di SystemOS, opaco per esso e irraggiungibile anche con accesso completo al kernel.

---

## 12. Domande irrisolte + driver

Domande:

1. **Posizione di XVIO.SYS** non su alcun filesystem accessibile; caricato dall'hypervisor all'avvio
2. **Uso di WSL** confermato presente e utilizzato, ma il ruolo specifico nell'OS Xbox non è completamente mappato
3. **`XCrdXpfOp`** funzione XCRDAPI non identificata (XPF = ?)
4. **Posizione di `XSraFlt.sys` + `XRmnt.sys`** confermata assente da tutti i filesystem accessibili; caricata dal sistema operativo host insieme a XVIO.SYS
5. **`xvnc` GUID `{REDACTED_GUID}`** GUID dell'adattatore wireless, catena completa dei driver non mappata
6. **Destinazione del reparse point `S:\Shares\TitleScratch`** attivamente oscurata dal sistema operativo nelle elenchi di directory; richiede `FSCTL_GET_REPARSE_POINT` al di sotto del livello cmd.exe. Quasi certamente `\Device\Xrfs\<partition-guid>` (vedere la Sezione 26)
7. **Superficie IOCTL di `xvmctrl.sys`** dump del kernel live bloccato (restrizione `NoKernelDumps` nella modalità dev retail); tabella di dispatch IOCTL non ancora enumerata
8. **GUID della partizione ERA** non esposto tramite alcun percorso di registro accessibile; sarebbe visibile nel dump del kernel (bloccato, sto cercando bypass)
9. **Contenuti di `N:\EtwPlus\`** attivamente nascosti da un driver di filtro del filesystem a livello kernel; le elenchi di directory restituiscono vuoto nonostante un'attività di scrittura confermata. L'identità del driver di filtro non è stata determinata (vedere la Sezione 3.2)
10. Host OS nel suo complesso: non è nemmeno del tutto certo cosa faccia.

Driver:

1. **`xtcc.sys`**, probabilmente responsabile di qualcosa correlato alla sicurezza, data la vasta quantità di import da `ntoskrnl.exe` e `XVIO.sys`
2. **`FLTMGR.SYS`** importato da `XRmnt.sys`, `XRo.sys`

---

## 13. I/O virtualizzato e accesso remoto (XVIO/SRA)

L'analisi degli export di `xboxcloudstreaming.dll` e delle voci di registro `CurrentControlSet\Services` mostra una profonda integrazione a livello kernel per le connessioni remote, utilizzando un modello hardware "Sintetico" piuttosto che la classica emulazione software. La VM ERA vede gli stessi dispositivi sintetici indipendentemente da dove arriva l'input (remoto, USB, wireless, ecc.).

### 13.1 Lo stack XVIO (I/O virtuale)

Il framework XVIO sembra essere il metodo principale per iniettare eventi a livello hardware in SystemOS da fonti esterne o tra partizioni.

| Servizio | Categoria | Funzione |
| --- | --- | --- |
| `hvsocketxvio` | Trasporto | Servizio bridge che collega i socket Hyper-V al protocollo XVIO. |
| `InputXVIOClient` | Coordinatore | Gestisce la mappatura dei pacchetti di input remoti sui nodi dei dispositivi virtuali. |
| `xviokbdbus` / `xviomoubus` | Driver di bus | Enumera i dispositivi HID virtuali su un bus interno sintetico. |
| `xviokbd` / `xviomou` | Driver di dispositivo | Driver di funzione specifici per tastiere e mouse virtualizzati. |

### 13.2 Pipeline del controller sintetico

Il binario `xboxcloudstreaming.dll` sfrutta `XboxgipSynthetic.dll` per creare ciò che il sistema operativo percepisce come periferiche locali fisicamente connesse.

- **Virtualizzazione audio:** tramite `SyntheticController_AddAudioHeadset`, il sistema può instradare l'audio di rete remota nello stack audio locale della console come dispositivo legato all'hardware.
- **Iniezione input (RIM):** l'uso del Remote Input Manager (`ext-ms-win-ntuser-rim-l1-1-0.dll`) conferma che le sessioni xCloud e remote play utilizzano gli stessi metodi di iniezione ad alta autorità di Windows Remote Desktop, in particolare `InjectKeyboardInput` e `InjectPointerInput`.

### 13.3 Driver SRA e "Arden"

> **Nota:** Il driver `SraKmdArden` è specifico per l'hardware dell'architettura Series X/S (Arden). Questo driver probabilmente consente al sistema di intercettare il buffer di visualizzazione a livello kernel, riducendo al minimo il sovraccarico di latenza solitamente associato al disegno tra VM.

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

Il GUID HvSocket precedentemente non identificato è stato abbinato al servizio `hvsocketxvio`. Questo conferma che XVIO non è un protocollo autonomo ma un livello che gira sopra il trasporto socket interno di Hyper-V.

Questo suggerisce che la **partizione ERA (gioco)** non parla direttamente con la rete per l'input; invece:

1. **SystemOS** riceve i pacchetti di rete tramite `XboxNetApiSvc`.
2. **`xboxcloudstreaming.dll`** elabora lo stream.
3. **`hvsocketxvio`** instrada i dati di input grezzi attraverso il confine della partizione tramite **HvSocket**.
4. Il livello Hypervisor/Host lo inietta nella partizione di destinazione come evento hardware.

---

## 14. Volume M:\ | Architettura overlay

M:\ (etichettato "System OS Misc") funziona come **volume overlay**, un albero contenente componenti montati sopra l'immagine C:\ di base. Questa architettura consente a Microsoft di distribuire una singola immagine del sistema operativo e applicare set di funzionalità specifici tramite overlay al momento del montaggio.

### 14.1 Struttura del volume

    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 Collegamenti simbolici del filesystem

C:\ fa riferimento ai componenti di M:\ tramite symlink NTFS. I symlink esistono a due livelli:

**Livello driver System32:**

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

**Livello directory di 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

L'overlay M:\ è più pervasivo di una semplice sostituzione di driver/DLL; le directory core dei sottosistemi di Windows, inclusi lo store dei font, le app di sistema e l'interfaccia di web management, risiedono interamente su M:\. Questo potrebbe significare che un overlay specifico controlla non solo i driver GPU e di acquisizione, ma in una certa misura l'intero livello delle app di sistema e della shell UI.

Non è stata completata un'enumerazione ricorsiva completa dei symlink di C:\ che puntano a M:\.

### 14.3 Driver specifici per hardware (M:\windows\system32\drivers\)

| Driver | Dimensione | Scopo |
|---|---|---|
| `srakmd_arden.sys` | 274KB | KMD di cattura SRA -> frame grabber specifico per hardware Arden |
| `acpi.sys` | 873KB | ACPI -> build specifica per hardware (più grande di quella generica) |
| `spaceport.sys` | 1MB | Porta di storage -> crittografia XVD + controllo licenze |
| `spacedump.sys` | 304KB | Driver di dump dello storage |
| `buttonconverter.sys` | 90KB | HID alimentazione/espulsione -> conversione in eventi console |
| `qwavedrv.sys` | 90KB | Driver QoS/qualità di rete |
| `acpiex.sys` | 181KB | Estensioni ACPI |
| `AcpiDev.sys` | 61KB | Estensioni dispositivo ACPI |
| `acpitime.sys` | 57KB | Timer ACPI |

**Riscontro:** `XSraFlt.sys` è assente dai driver di M:\ così come da C:\. Non è archiviato su alcun volume filesystem accessibile, suggerendo che venga caricato dal sistema operativo host all'avvio insieme a `XVIO.SYS` e `FLTMGR.sys`.

### 14.4 Componenti userspace specifici per hardware (M:\windows\system32\)

DLL/EXE notevoli esclusivi di M:\:

**Stack GPU / shader:**

- `umd12ddi_arden.dll` (1.56MB)  DDI del driver in modalità utente D3D12, hardware Arden
- `umd12ddi_d.dll` (1.5MB)  D3D12 UMD, build instrumentata per debug/PIX
- `umd12ddi_i.dll` (1.14MB)  D3D12 UMD, build inbox/fallback
- `newbe_xs.dll` (26MB)  backend del compilatore shader GPU "NewBe" Arden
- `xbsc_xs.dll` (3.9MB)  frontend del compilatore shader Xbox Series
- `dxcompiler_xs.dll` (17.8MB)  compilatore HLSL Xbox Series
- `dxbc2dxil_xs.dll` (2.9MB)  convertitore di bytecode da DXBC a DXIL
- `pixrtddi.dll` (679KB)  DDI di rendering/debug PIX

**Toolchain sviluppatore / PIX:**- `VsGraphicsRemoteEngine.exe` (4.75MB) motore remoto del profiler GPU PIX
- `VsGraphicsCapture.dll` (225KB) acquisizione fotogrammi PIX
- `VsGraphicsExperiment.dll` (327KB) framework di esperimenti PIX
- `DXCaptureReplay.dll` (18MB) motore di replay dell'acquisizione GPU
- `DXCap.exe` (1.19MB) strumento di acquisizione GPU
- `DXToolsMonitor.dll` / `DXToolsOfflineAnalysis.dll` / `DXToolsReporting.dll` stack di analisi PIX
- `DXGIDebug.dll` (151KB) layer di debug DXGI
- `d3d12SDKLayers.dll` (4.8MB) layer di validazione/debug D3D12
- `d3d11_3SDKLayers.dll` (1.19MB) layer di debug D3D11
- `d2d1debug3.dll` (618KB) layer di debug D2D
- `VSD3DWARPDebug.dll` (155KB) build di debug del rasterizer software WARP
- `plmdebug.exe` (204KB) debugger PLM (ciclo di vita dei processi)

**Streaming / Accesso remoto:**

- `rdpbase.dll` (1.8MB) libreria di base RDP
- `rdpserverbase.dll` (2.3MB) base del server RDP
- `XboxDevService.exe` (3.7MB) host del servizio dev Xbox
- `XboxDevService.ProxyStub.dll`

**Stack social/plugin:**

- `DiscordPlugin.dll` (139KB) integrazione Discord
- `TwitchPlugin.dll` (639KB) integrazione streaming Twitch

**Altri elementi degni di nota:**

- `XboxSyntheticKM.dll` (36KB)
- `xrmntcl.exe` (90KB) client di montaggio runtime Xbox
- `xtfupdateT_s_i.dll` (98KB) ?
- `xtcapi.dll` (57KB) API XTC (comunicazioni titoli Xbox?)
- `wusys.dll` (308KB) integrazione di sistema di Windows Update

---

## 15. Stack GPU | Pipeline di compilazione degli shader

L'intera pipeline di compilazione degli shader di Xbox Series S/X risiede su M:\ ed è assente da C:\. Nessuna compilazione di shader è possibile senza l'overlay specifico dell'hardware montato.

### 15.1 `newbe_xs.dll`

DLL da 26MB. Backend del compilatore shader della GPU Arden. Solo 6 export:

    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 sezione `.pass` potrebbe suggerire una pipeline di pass in stile LLVM. `NB_CreatePixDwarfApi` genera informazioni di debug shader a livello sorgente per PIX.

### 15.2 `xbsc_xs.dll`

41 export che coprono l'intera API di compilazione:

    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


Le sezioni PE `_mmddu` e `_MMDDT0` contengono **Microsoft Machine-Dependent Driver Data**, tabelle della microarchitettura hardware incorporate nel compilatore (latenze delle istruzioni, topologia del register file, conteggi delle unità di esecuzione per Arden).

### 15.3 `dxcompiler_xs.dll`

17.8MB. Fork Xbox Series del compilatore HLSL DXC. 4 export:

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

### 15.4 `dxbc2dxil_xs.dll` Convertitore di bytecode

2.9MB. Export singolo:

    SCDxil_ConvertDxbcToDxil   convert DX11 DXBC bytecode to DXIL for DX12 pipeline


Consente agli shader DX11 retrocompatibili di essere eseguiti sulla pipeline Arden solo-DX12.

### 15.5 Catena completa di compilazione degli shader

    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` Libreria di layout delle texture grafiche Xbox

Situata su **C:\** (non M:\). Contiene 27 export che coprono tiling delle texture, layout BVH per il ray tracing e compressione DCC.

### 16.1 Superficie degli export

    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 Risultati chiave

**Il layout BVH del ray tracing è specifico dell'hardware.** `XGCreateBVHComputer2` espone un'API di layout BVH di seconda generazione, suggerendo che l'architettura Arden abbia un formato di nodi BVH distinto, diverso da quello generico DXR.

**La compressione DCC AMD è esposta.** `XGEncodeDCC` / `XGDecodeDCC` implementano la Delta Color Compression di AMD, la compressione hardware lossless del framebuffer usata sulle GPU RDNA. `XGDecodeDCCSurface` è l'API che PIX usa per rileggere i framebuffer acquisiti compressi con DCC.

**Tiling DirectStorage.** `XGShuffleTextureBufferForDirectStorage` esegue lo shuffle lato GPU che trasforma il layout delle texture su disco nel formato di tiling hardware Arden durante la decompressione GPU, consentendo un caricamento zero-copy in VRAM.

**`XGSetHardwareVersion` controlla tutti gli algoritmi di layout.** La libreria contiene implementazioni di layout per più revisioni hardware. Chiamare `XGSetHardwareVersion` con l'identificatore di Series S rispetto a Series X produce risultati di tiling diversi che riflettono le diverse larghezze del bus di memoria e le geometrie della cache.

### 16.3 Sezione dei metadati di build `.xbld`

`xg_xs.dll` contiene una sezione PE `.xbld` assente da tutti gli altri binari Xbox, il che indica che proviene da una pipeline di build CI GDK separata, non dal sistema di build del sistema operativo Xbox. Il sistema di build del SO azzera i timestamp e rimuove le sezioni di metadati; la CI GDK non lo fa.

    _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

Il valore `edition_name` di **"April 2026 GXDK"** precede la release pubblica di quell'edizione dell'SDK (al momento della scrittura è il 9 marzo 2026), confermando che il sistema operativo retail include componenti GDK compilati contro il successivo ciclo SDK non ancora rilasciato. Il versioning `sdktype=260400` segue il pattern `YYMMRR` (Anno/Mese/Revisione).

Il timestamp `edition_build` `0x65F41B62` corrisponde al **13 marzo 2024**, più di un anno prima della data di build del SO (12 febbraio 2026), indicando che gli algoritmi di layout delle texture sono rimasti stabili e invariati per almeno 5 cicli di release GDK.

Il `mscver=193833145.100` identifica il compilatore come **MSVC 19.38** (Visual Studio 2022 17.8.x).

### 16.4 Inferenza sulla pipeline di build (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

Ciò significa che la `xg_xs.dll` sulle console retail è identica bit per bit a quella che gli sviluppatori ricevono nel GDK. La verifica dell'hash rispetto alla release pubblica GDK di aprile 2026 (quando disponibile) lo confermerebbe.

---

## 17. Modello di integrità del codice Trust-by-Catalog

### 17.1 Formato del contenitore PE

I file `Catalog*.bin` su ogni volume sono **eseguibili PE32+ con subsystem `0x11`** ("Xbox Code Catalog"), un subsystem non documentato e assente da qualsiasi documentazione pubblica. Caratteristiche principali dell'intestazione 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)

Per quanto riguarda il loro funzionamento non sono sicuro, la Xbox One

### 17.2 Catena di fiducia

    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

Questo è un modello **trust-by-catalog**. Una singola firma Microsoft copre moltissimi file per volume. I singoli binari e probabilmente altri tipi di file non sono firmati; la loro integrità è garantita dall'appartenenza al catalogo.

**Conteggio delle voci e dimensioni:**

| Volume | Catalog | Dimensione payload | Voci (÷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 lunghezza del payload di ogni catalogo (all'interno della sezione PE) è esattamente divisibile per 32 senza resto, e non è costantemente divisibile per 36, 40 o altre dimensioni di record comuni. Ciò suggerisce fortemente che il payload sia un array piatto di **record da 32 byte**.

**Algoritmo di hash:** hash SHA-256 e SHA-1 dell'intero file di binari noti non sono stati trovati nei cataloghi, escludendo un semplice hashing dell'intero file. Il formato più probabile è quello degli **Authenticode page hash**, lo standard CI di Windows in cui ogni pagina allineata a 4KB delle sezioni mappate di un file PE viene hashata individualmente. Questo produrrebbe una voce da 32 byte (SHA-256) per pagina per file, spiegando gli elevati conteggi di voci (172.928 voci per la sola C:\).

**Ordinamento:** il payload non è ordinato per valore di hash. Lo schema di ordinamento non è stato determinato; le possibilità includono l'ordinamento per hash del percorso del file, per pacchetto di installazione, per offset di pagina all'interno del set di file del volume, o persino per qualche caratteristica NTFS.

**Nessuna intestazione:** i primi 128 byte del payload non contengono magic ASCII riconoscibile, campi interi piccoli che possano indicare un conteggio o una versione, né una struttura coerente con un'intestazione standard. L'array di hash inizia al byte 0 del payload senza preambolo.

### 17.3 Applicazione solo al momento del caricamento

L'applicazione della Code Integrity è **solo al momento del caricamento**. Una volta che un binario supera la verifica dell'hash del catalogo e le pagine vengono mappate in memoria, la CI non ha più alcun ruolo. L'HVCI (Hypervisor-Protected Code Integrity), se attiva su SystemOS, chiuderebbe la conseguente finestra TOCTOU (Time-of-check to time-of-use) rendendo le pagine di codice caricate di sola lettura a livello hardware nelle tabelle delle pagine dell'hypervisor. **HVCI è confermata disattivata su SystemOS**, `IsSecureKernelRunning = 0x0` (vedi Sezione 18). La finestra TOCTOU è quindi presente.

### 17.5 Componenti dell'Host OS

Due driver sono confermati assenti da tutti i volumi del filesystem accessibili e vengono caricati direttamente dall'Host OS prima dell'inizializzazione di SRA:

- `XVIO.SYS` Xbox Virtual I/O core (nessuna voce di servizio nel registro, non presente su alcun volume)
- `FLTMGR.sys` Gestore filtri
- `XSraFlt.sys` Filtro SRA (la voce di servizio esiste, nessun file corrispondente su alcun volume)

Questi componenti esistono interamente al di fuori del modello di fiducia del catalogo. Non possono essere manomessi nemmeno con accesso completo al kernel di SystemOS, poiché vengono mappati dal bootloader prima che l'HostOS (genitore di SystemOS) inizi a caricare.

Informazioni sui componenti Xbox One [sono disponibili qui](https://xboxoneresearch.github.io/wiki/boot/vbi/), tuttavia non posso essere del tutto sicuro che l'HostOS non sia cambiato finora.

---

## 18. Stato di HVCI

> **Impatto:** Con HVCI disattivata, l'integrità del codice è solo al momento del caricamento. Una volta che un binario è mappato in memoria, non c'è alcuna applicazione hardware che impedisca la modifica in memoria. La finestra TOCTOU descritta nella Sezione 17.3 è quindi aperta. Il confine di sicurezza previsto rimane quello di dipendere interamente dal fatto che SystemOS non comunichi con ERA (GameOS).

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

    IsSecureKernelRunning = 0x0

Il Secure Kernel (VTL1) non è in esecuzione su SystemOS, confermando che HVCI non può essere attiva. Questo è un compromesso prestazionale deliberato: nessun costo VTL1 sull'attività del kernel nel game loop. Il confine di sicurezza è la partizione dell'hypervisor stessa, non la protezione della memoria all'interno della partizione. Il modello di integrità del codice (Sezione 17) è quindi solo al caricamento, senza protezione TOCTOU.

---

## 19. Namespace IPC dell'hypervisor sevpipe

Un namespace di dispositivi named pipe Windows personalizzato (`\\.\sevpipe\`) che funge da spina dorsale IPC principale per tutta la comunicazione inter-processo e tra partizioni specifica di Xbox. Non è una costruzione dell'hypervisor a livello di protocollo; sotto il cofano usa la semantica standard delle named pipe di Windows, registrato sotto un namespace di dispositivi personalizzato per nasconderlo agli strumenti normali di enumerazione delle pipe.

### 19.1 Inventario completo delle pipe

    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

Le pipe dinamiche esistono solo quando ERA è attiva, una sessione XTF è in esecuzione o xCloud sta facendo streaming.

### 19.2 Mappa del controllo di accesso

    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 Pipeline di telemetria

    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` è specifica di Xbox (`FileDescription: Xbox ETW Plus API`), versione `10.0.26100.7010`. Gli export di sospensione/ripresa sono probabilmente stub nelle build retail; tre export condividono lo stesso RVA.

### 19.4 videoserver.exe Acquisizione schermo RTSP (molto probabilmente un residuo di [Xbox Dev Mode Companion](https://apps.microsoft.com/detail/9nblggh519cp))

Porta: 11442 (hardcoded nel binario). Dipendenze:

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

**Risultato chiave:** non sembra funzionare correttamente. Non è stato trovato alcun metodo per accedere allo stream video dall'interno o dall'esterno della console.

Percorsi/flag hardcoded:

    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 OneSettings / Schema di Windows Update

La Xbox include l'intero schema di targeting di Windows Update, incluse le voci di targeting `XBOXMOBILE` e i percorsi dell'hive di registro `WCOS`, confermando che Xbox Series S gira sulla base Windows Core OS (WCOS) condivisa con HoloLens e Surface Hub. Il sistema operativo è un Windows 11 24H2 leggermente personalizzato, non un sistema operativo di piattaforma costruito su misura.

---

## 20. Topologia delle partizioni dell'hypervisor

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

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

SystemOS crede di essere la **partizione radice** (falso, l'Host OS è la radice). La partizione di gioco ERA è una figlia di SystemOS. Il GUID della partizione ERA non è esposto a SystemOS tramite alcun percorso di registro accessibile e potrebbe essere randomizzato.

### Endpoint wildcard cross-partizione di HvSocket

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

Quattro GUID di servizio risolti tramite calcolo del SID del servizio SHA1:

| GUID | Servizio | Scopo |
|------|---------|---------|
| `REDACTED_GUID` | DiagTrack | Pipe di telemetria 1 |
| `REDACTED_GUID` | DiagTrack | Pipe di telemetria 2 |
| `REDACTED_GUID` | RpcSs | RPC tra partizioni |
| `REDACTED_GUID` | EventLog | Inoltro eventi tra partizioni |

DiagTrack, RpcSs ed EventLog sono cittadini di prima classe tra partizioni. Telemetria di gioco, chiamate RPC ed eventi vengono convogliati da ERA a SystemOS attraverso canali socket dell'hypervisor dedicati, invisibili a qualsiasi cosa in esecuzione all'interno di ERA.

---

## 21. Configurazione grafica

`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 versione WDDM è fissata anziché negoziata; la pipeline di visualizzazione è di proprietà del firmware e dell'hypervisor, con WDDM non coinvolto nella gestione dei monitor. Il tier 3 MPO (`AdapterMPO_3`) è il modo in cui il framebuffer di gioco ERA e la UI di SystemOS vengono composti senza blit software tra partizioni: ogni superficie occupa un piano overlay hardware separato.

---

## 22. WdApp.exe Gestore di pacchetti e strumento di gestione del ciclo di vita delle app

`J:\tools\WdApp.exe` è un gestore di pacchetti e un gestore del ciclo di vita delle applicazioni completo per la piattaforma app Xbox. Superficie completa dei comandi:| Command | Purpose |
|---------|---------|
| `install` | Trasmettere una build impacchettata da un server web, una condivisione di rete o un percorso locale |
| `register` / `unregister` | Registra/annulla la registrazione dei pacchetti di app a file sciolti |
| `registerdrive` | Registra tutte le applicazioni su un intero drive contemporaneamente |
| `registernetworkshare` | Installa da una condivisione di rete UNC con credenziali opzionali |
| `registerscratch` | Registra dal dev scratch drive |
| `registertitlescratch` | Registra dal drive scratch dei titoli ERA |
| `launch` | Avvia tramite AUMID, percorso exe o URI |
| `terminate` / `suspend` | Arresta o sospende un'app in esecuzione |
| `uninstall` | Disinstalla un'app o sue parti |
| `list` | Elenca tutte le applicazioni registrate |
| `listdlc` | Elenca i DLC installati |
| `move` / `copy` | Sposta o copia un pacchetto |
| `movedrive` / `copydrive` | Sposta o copia tutti i pacchetti su un drive |
| `applyconfig` | Avvia il sistema operativo di gioco ERA con impostazioni specificate o un `game.config`/`.xvd` |
| `queryconfig` | Stampa il numero di versione in 4 parti del sistema operativo di gioco in esecuzione |
| `queryversioninfo` | Interroga la versione del sistema operativo di gioco per un dato pacchetto |
| `collectxip` | Raccoglie la traccia XIP |
| `lastgamedetails` | Recupera i dettagli sull'ultimo gioco eseguito |
| `installkey` | Installa una chiave sulla console |
| `installplan` | Installa un piano sulla console |
| `overlayfolder` | Gestisce le cartelle di overlay dei pacchetti |

### Risultati notevoli

**`applyconfig [game.config | ERA.xvd]`** controllo diretto dell'avvio della partizione ERA dalla riga di comando. Accetta sia un'immagine disco XVD `.xvd` sia un file di impostazioni `game.config`. Eseguito senza argomenti, avvia il sistema operativo di gioco usato più di recente. Su un sistema senza contesto di gioco precedente restituisce `0x87E50002` (facility ERA, nessun XVD trovato).

**`/drive=Retail`** il comando `install` accetta `Retail`, `Development` ed `Ext1-Ext7` come specificatori di drive di destinazione, consentendo l'installazione dei pacchetti direttamente sulla partizione di archiviazione retail dalla shell di sviluppo.

**`/WaitToExit`** su `launch` fa sì che WdApp diventi il processo padre del processo avviato e catturi i codici di uscita. Le app di sistema rifiutano questa operazione con `0x8D160121` (facility Xbox PLM, genitore del ciclo di vita errato). L'avvio senza `/WaitToExit` riesce perché ShellCoreService mantiene la proprietà del ciclo di vita.

**`launch` AUMID encoding** gli AUMID delle app di sistema richiedono una codifica base64 corrispondente al modello usato negli script QuickActions di `.xboxunattend`:```
WdApp.exe launch <base64(FamilyName!AppId)>

23. API REST di Device Portal

Il server web Device Portal (WebManagement.exe, PID 2344) serve il suo frontend da M:\windows\WebManagement\www\default\. Lo schema REST API completo è documentato in js\RestDocumentation.json (40KB).

Autenticazione: autenticazione HTTP Basic su porta HTTPS 11443. Le credenziali sono il nome utente e il PIN di Device Portal impostati durante l'attivazione della modalità dev.

Namespace API

Flag di restrizione

Diversi endpoint portano flag di restrizione che li disabilitano sulle console in modalità dev retail:

I dump di processo live in modalità utente (/api/debug/dump/usermode/live?pid=<pid>) sono nonRestrictable e riescono sulla modalità dev retail.

Albero sorgente di Device Portal


24. Elenco processi live

Ottenuto tramite GET /api/resourcemanager/processes. Processi notevoli selezionati:

Tre istanze di xnetsharedservice.exe (PID 2032, 2764, 2844) vengono eseguite simultaneamente sotto SYSTEM, suggerendo istanze separate di bridge di rete per diversi canali cross-partition.

Il working set di eracontrol.exe di 991KB con nessun gioco in esecuzione conferma che è puramente guidato dagli eventi: non mantiene quasi alcuno stato quando è inattivo, risvegliandosi solo su eventi del ciclo di vita ERA.


25. Pipeline di Windows Update (Deploy:)

Impatto: Il volume Deploy:\ è localmente limitato all'accesso dallo spazio utente, ma questa restrizione viene aggirata tramite il percorso di condivisione di rete attraverso il junction S:\Deployment\SoftwareDistribution\. Le tracce ETL di aggiornamento, il percorso del database WU e l'URL dell'endpoint SLS (inclusi identificatore piattaforma e language pack installati) sono completamente leggibili.

S:\Deployment\SoftwareDistribution\ è un junction verso il volume dispositivo kernel nascosto Deploy:\.

Analisi tracce ETL

Sono state catturate due sessioni di aggiornamento:

Sessione 1 9 marzo 2026 18:25:23

  • Il servizio WU è partito a freddo, DataStore.edb non esisteva (creato nuovo in questa sessione)
  • Stato di rete: disconnessa all'avvio
  • Endpoint SLS tentato: https://slscr.update.microsoft.com/SLS/{REDACTED_GUID}/x64/10.0.26100.7010/0
  • Fallito immediatamente con 0x8024402C (nessuna connessione internet). Nessun controllo aggiornamenti completato.

Sessione 2 10 marzo 2026 03:59:18

  • Il servizio WU è partito, caricando il DataStore.edb esistente
  • Stato di rete: disconnessa all'avvio
  • La stessa richiesta SLS è fallita con 0x8024402C
  • La rete è tornata online alle 03:59:24, 6 secondi dopo che il servizio aveva già fallito e abbandonato la sessione
  • Il servizio è rimasto inattivo per 10 minuti, quindi si è arrestato correttamente alle 04:09:19 con codice di uscita 0x240001
  • Nessun controllo aggiornamenti completato in entrambe le sessioni

Nota: In entrambe le sessioni la rete non era disponibile quando il servizio WU si è inizializzato, causandone l'abbandono del controllo aggiornamenti. La sessione 2 è tornata online 6 secondi dopo che il servizio aveva già lasciato la fase di discovery, suggerendo che la pipeline di aggiornamento non ha tentativi di riconnessione dopo il fallimento del controllo di rete iniziale.

Struttura URL 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 è l'identificatore piattaforma Xbox incorporato in ogni controllo aggiornamenti. CH è diminuito da 928 a 19 tra le sessioni, coerente con un contatore di stato del catalogo che si azzera quando il database viene ricreato.

GUID configurazione servizio

[REDACTED] identificatore di configurazione del servizio Windows Update di Xbox, presente nella sottodirectory SLS\ e incorporato in ogni URL di richiesta SLS.

Albero sorgente client WU

Percorsi di build Azure DevOps interni trapelati tramite strumentazione di debug:

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\ è il percorso workspace standard dell'agente self-hosted di Azure DevOps. Il client Windows Update di Xbox condivide il codice sorgente con Windows Update desktop: è la stessa codebase compilata per la piattaforma Xbox.

Timer persistente

Il GUID timer REDACTED_GUID è stato impostato nella sessione 1 ed è sopravvissuto al riavvio nella sessione 2. È archiviato al di fuori di DataStore.edb (probabilmente nel registro) e pianifica il prossimo controllo aggiornamenti indipendentemente dal ciclo di vita del database.


26. Analisi driver dello stack I/O cross-partition

xbtplinkc.sys XVIO Transport Link Client

L'analisi degli import rivela l'intera superficie API del ring buffer XVIO e il meccanismo di traduzione 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 è la primitiva di memoria condivisa cross-partition. ERA consegna a SystemOS un Guest Physical Address; SystemOS chiama questa funzione per ottenere un mapping utilizzabile. Questo è il meccanismo dietro la cattura GameDVR, la composizione del framebuffer e l'audio cross-partition.

xbtplinkc importa anche XpalIsCapabilityEnabledByVm da xpalk.dll; il suffisso ByVm interroga lo stato delle capability a livello di hypervisor, non a livello di sistema operativo, confermando che verifica se l'hypervisor stesso ha abilitato la capability prima di procedere.

xrfs.sys Xbox Runtime Filesystem

Driver filesystem NT completo. L'analisi degli import conferma che implementa semantiche filesystem reali: Cache Manager (Cc*), I/O MDL, file lock (FsRtl*), costruzione descrittori di sicurezza, tabelle generiche AVL per l'indicizzazione delle directory.

Import distintivi principali:

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

xrfs.sys non importa XVIO direttamente. Invece, xbtplinkc.sys importa XvioTranslateXrfsGuestGpa; XRFS è il livello filesystem, XVIO fornisce la traduzione GPA sottostante.

Architettura del filesystem cross-partition

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

Import chiave specifici di Xbox:

XCRDAPI.dll controllo diretto mount XVD:

root@kitploit:~
XCrdSetEraLaunchMapping   associa il contenuto XVD alla partizione ERA prima dell'avvio
XCrdMountContentType      monta categorie di contenuti in ERA
XCrdUnmount               rimuove i mount dei contenuti ERA
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 (caricamento ritardato):

root@kitploit:~
XblaInitialize            inizializza l'identità di autenticazione Xbox Live nella partizione ERA

ext-ms-win-ntuser-rim-l1-1-0.dll (caricamento ritardato):

root@kitploit:~
RIMAddInputObserver / RIMRemoveInputObserver  intercetta l'input grezzo del controller per l'instradamento ERA

SspiCli.dll:

root@kitploit:~
LogonUserExExW            crea token di accesso utente per la sessione ERA

ext-ms-win-session-usermgr-l1-1-0.dll (caricamento ritardato):

root@kitploit:~
UMgrOpenProcessHandleForAccess

RPCRT4.dll:

root@kitploit:~
RpcServerInqCallAttributesW / I_RpcBindingInqLocalClientPID  verifica dell'identità del chiamante RPC

28. eraproxyapp.exe

eraproxyapp.exe è il compositor lato SystemOS e il bridge IPC tra la partizione ERA e la shell. 339KB, sostanzialmente più grande di eracontrol.exe (249KB).

Composizione del framebuffer:

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

eraproxyapp crea un dispositivo D3D11 e un dispositivo DirectComposition per comporre il framebuffer ERA nella shell SystemOS. La priorità dei thread multimediali AVRT garantisce una consegna frame a bassa latenza.

IPC cross-partition tramite ALPC:

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

Le sezioni di porta ALPC forniscono memoria condivisa zero-copy. Il framebuffer di gioco ERA non viene copiato, viene condiviso tramite sezioni ALPC mappate simultaneamente in entrambi gli spazi di indirizzi.

Namespace privato (canale IPC sicuro):

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

eraproxyapp stabilisce un namespace di oggetti privato con un boundary descriptor basato su SID, un namespace di oggetti denominato visibile solo a ERA e SystemOS. BCrypt fornisce materiale chiave casuale per il boundary.

Identità del titolo e audio:

root@kitploit:~
XboxLiveTitleId.dll:  GetCurrentXboxLiveInfo identifica il titolo in esecuzione
xamapi.dll:           XamApiDisableLayoutScaling
ConsoleGlobalization.dll: GetConsoleGlobalizationInfo
api-ms-win-audiocore-spatial-config-l1-1-0.dll: Create_SpatialAudioDevicePropertyReader

Named pipe:

root@kitploit:~
CreateNamedPipeW / ConnectNamedPipe / DisconnectNamedPipe

29. Analisi DLL aggiuntive

XblAuthConsoleExt.dll Identità hardware e autenticazione (46 export)

Identità console:

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

Identità titolo:

root@kitploit:~
XblaGetXboxLiveTitleId
XblaGetTitleAttestation / XblaGetTitleConsoleGeneration

Crittografia:

root@kitploit:~
XblaSignDigest         firma con la chiave privata della console
XblaGetAttestation / XblaGetTpmPcrAttestation misurazioni fTPM PCR della catena di avvio
XblaProcessChallenge / XblaProcessSpToken

XblaGetTpmPcrAttestation conferma che la console esegue l'attestazione completa della catena di avvio. Microsoft può verificare crittograficamente lo stato esatto della sequenza di avvio quando una console si autentica su Xbox Live.

xamapi.dll Shim di compatibilità Xbox Application Manager (24 export)

Sostituisce le API Win32 standard per le app ERA in esecuzione nel contesto SystemOS:

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

È così che SystemOS presenta un ambiente Windows PC convincente ai componenti che si aspettano API Win32 standard di visualizzazione e input.

xboxsynthetickm.dll Iniezione input sintetico (M:, 12 export)

Situato sul volume overlay hardware M:\ (trattato come livello hardware, non come livello applicativo):

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

È così che xCloud converte i pacchetti di rete in eventi di input locali. La console non può distinguere l'input sintetico dall'input fisico a livello hardware.

xboxcloudstreaming.dll Motore di streaming xCloud (2 export)

root@kitploit:~
GetCloudStreamManager
ShutdownCloudStreamManager

XboxLiveTitleId.dll Rilevamento gioco runtime (12 export)

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

XBBlackbox.dll Flight Recorder

Export singolo: BlackboxServiceMain

XBCastRecv.dll Ricevitore Miracast (22 export)

root@kitploit:~
GetWiFiDirectDeviceCategoryForCurrentPlatform
IsMiracastReceiverStartAllowedWithoutApp
GetEdidForCurrentDisplayDevice

Xbox.Shell.Api.dll Integrazione shell (44 export)

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

Stack controller nome in codice "Pendragon"

XAccessoriesGip.dll:

root@kitploit:~
PendragonGIP_SendGIPMessage
PendragonGIP_SetMessageCallback
PendragonGIP_Start / Stop

30. Riepilogo completo dell'architettura di sistema

Architettura complessiva

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

Inizializzazioni dei driver (ipotesi basate su ciò che ho finora)

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

Sequenza di avvio ERA (ipotesi)

  1. eracontrol.exe: NtOpenPartition - apre l'handle della partizione hypervisor ERA
  2. eracontrol.exe: XCRDAPI XCrdSetEraLaunchMapping - associa XVD alla partizione
  3. eracontrol.exe: XCRDAPI XCrdMountContentType - monta il contenuto di gioco in ERA
  4. eracontrol.exe: XblaInitialize - fornisce l'identità Xbox Live in ERA
  5. eracontrol.exe: LogonUserExExW - crea il token utente della sessione ERA
  6. eracontrol.exe: RIMAddInputObserver - inizia a instradare l'input del controller verso ERA
  7. eraproxyapp.exe: ALPC port sections - stabilisce il canale framebuffer zero-copy
  8. eraproxyapp.exe: CreatePrivateNamespaceW - stabilisce il namespace IPC sicuro
  9. eraproxyapp.exe: D3D11 + DComp - prepara il compositor del framebuffer
  10. La partizione ERA avvia il gioco

Flusso di chiamate (ipotesi)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

Mappa completa dello stack


31. Registro dei contratti WinRT

Il WinMD HDRGameCalibration contiene sorprendentemente apparentemente l'INTERO registro dei contratti WinRT di Xbox, oltre 100 contratti che definiscono ogni superficie API WinRT first-party disponibile sulla piattaforma.

Contratti notevoli

Implicazioni

Kinect come contratto mantenuto. Windows.Kinect.KinectContract v1 è presente come contratto di prima classe non deprecato, coerente con lo stack attivo (C:\Windows\System32\ht) e con KinectSensorEnabled=true in WdConfig. La visione Kinect è un'infrastruttura attivamente mantenuta anche su hardware senza un Kinect fisico. L'intera pipeline di orchestrazione (nuiservice.exe, KinectMediaSource.dll, tre tracce di inferenza, instradamento dell'output) è documentata nella Sezione 33.

Gli Ads sono infrastruttura interna. Il fatto che AdsContract sia un contratto Internal, non un'API SDK pubblica, significa che la consegna degli annunci è integrata nel sistema operativo allo stesso livello di autenticazione e archiviazione, non come integrazione SDK di terze parti.

Automazione dei test sul retail. Windows.Xbox.TestAutomationContract è presente sulle unità retail, in linea con il fatto che Windows.Xbox.TestAutomationContract è accessibile agli strumenti della modalità sviluppatore.

32. UserMgr2

UserMgr2 è l'account utente interattivo che possiede la sessione attiva con accesso effettuato. NTUSER.DAT è bloccato (UserMgr2 è attivo). Risultati chiave dal profilo:

Struttura del profilo

PercorsoContenuto
ntuser.ini3 nuove righe
AccountPictures\UserImage.jpg

Nota sui privilegi

I junction di Device Portal vengono risolti usando i permessi di UserMgr2 anziché quelli di DevToolsUser (vedi Sezione 1.2 e Domanda irrisolta 12). UserMgr2 ha un livello di privilegio superiore a DevToolsUser; UserMgr2 è il proprietario della sessione interattiva mentre DevToolsUser è un account di accesso sviluppatore limitato.

33. nuiservice.exe Pipeline di visione Kinect

nuiservice.exe (3.8MB, in esecuzione come SYSTEM, sempre attivo) è il processo di orchestrazione dell'intero stack di percezione Kinect/NUI. Ospita tre tracce di inferenza parallele: corpo, viso e audio; ciascuna eseguita come pipeline di elaborazione separata, pianificata in modo cooperativo tramite un fiber graph e alimentata con frame attraverso un IOCP pump supportato da un dispositivo di inferenza GPU D3D11.

Architettura

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

Input: KinectMediaSource.dll

L'acquisizione dei frame è gestita da 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) e alignment_color.bin (5.7MB) sono tabelle di lookup precalcolate rispettivamente per convertire i dati grezzi del sensore di profondità in coordinate 3D dello spazio mondo e per registrare i pixel di profondità con i pixel colore.

Tracciamento del corpo

Modelli caricati da X:\ht\versions\{1.0.0|1.0.1|1.0.2}\ tramite vvtechs.dll (NuiVisionCreateFactory):

  • Input: frame di profondità da KinectMediaSource.dll
  • Output: articolazioni dello scheletro, posizione della testa, stato della mano (presa/rilascio)
  • Sono presenti tre directory di versione simultaneamente; la versione attiva viene selezionata in fase di esecuzione.

Viso

Modelli caricati da C:\Windows\System32\ht\ (vedi Sezione 3.3 per l'inventario completo dei modelli):

  • Input: frame di profondità, IR e colore
  • Output: identità (chi), espressione (emozione), sguardo (direzione dell'attenzione), stato delle labbra (aperte/mosse), attributi dell'aspetto (occhiali, barba)
  • L'output dell'identità alimenta direttamente LogonUserExExW per l'accesso automatico basato sul viso (vedi Instradamento dell'output di seguito)

Audio

Gestito da speechwov.dll:

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

speechwov.dll è un motore di riconoscimento vocale e wake word. UpdateAcousticModels indica che il modello acustico può essere aggiornato in fase di esecuzione (modifiche al language pack o alla calibrazione del microfono). Questa è l'infrastruttura dei comandi vocali / "Hey Cortana" a livello di sistema.

Instradamento dell'output

nuiservice.exe distribuisce i risultati dell'inferenza attraverso più canali:

RtlCapabilityCheck è il meccanismo di controllo degli accessi: un processo deve possedere la capacità NT appropriata per ricevere qualsiasi dato NUI. Questo limita separatamente l'accesso dei titoli di gioco, l'accesso della shell e l'accesso degli sviluppatori.

Consumer (tramite sottoscrizione WNF)

Il contratto WinRT Windows.Kinect.KinectContract v1 (vedi Sezione 31) è la superficie rivolta al retail per l'accesso dei titoli di gioco a questa pipeline.

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

Ricerca condotta su una Xbox Series S retail in modalità sviluppatore. Tutto l'accesso è avvenuto tramite l'infrastruttura per la modalità sviluppatore fornita da Microsoft.

Scarica lo strumento
StrumentoScopo
Windows ExplorerCondivisione di rete Xbox (Istruzioni su https://XBOX:11443/#File%20explorer > Esplora)
SSH (DevToolsUser + PIN VS)Accesso shell a SystemOS
mklink /JCreazione di junction NTFS per esporre i drive tramite condivisione di rete
Device Portal (https://XBOX:11443)REST API, browser file, elenco processi, dump live
dumpbin /IMPORTS, dumpbin /EXPORTSAnalisi statica dei binari PE tramite condivisione di rete
PythonScript per automatizzare la REST API
PhasorRuntime di scripting da usare sulla console (copiato tramite condivisione di rete, eseguito via SSH) download qui
reg queryEnumerazione del registro dalla shell SSH
WdApp.exeGestore pacchetti e controllo del ciclo di vita ERA (enumerazione della superficie dei comandi)
WdConfig.exeEnumerazione delle API delle impostazioni della console
Analisi tracce ETLPipeline di Windows Update tramite junction S:\Deployment\SoftwareDistribution\
Dump di processi liveGET /api/debug/dump/usermode/live?pid=<pid>
GhidraAnalisi di interfacce COM / driver
IDA ProGrafi di chiamate di DLL complesse e interfacce COM
XboxToolsLa mia personale raccolta di utility per varie cose
NamespaceBase URIEndpoint principali
App Deployment/api/appx/packagemanager/installazione, disinstallazione, elenco pacchetti, gruppi di contenuti
Device Manager/api/devicemanager/albero completo gerarchico dei dispositivi
Dump Collection/api/debug/dump/dump di processi live, dump bugcheck, controllo crash
ETW/api/etw/ETW in tempo reale su WebSocket, enumerazione provider
File Explorer/api/filesystem/sfoglia, carica, scarica, elimina, rinomina
Networking/api/networking/ipconfig
OS Information/api/os/nome macchina, info SO
Performance/api/resourcemanager/elenco processi live con CPU/memoria, statistiche prestazioni di sistema
Power/api/power/batteria, piani di alimentazione, report sleep study
Remote Control/api/control/riavvia, spegni
Task Manager/api/taskmanager/avvia/arresta app, termina processi
Bluetooth/api/bt/enumera, associa, connette dispositivi audio
WiFi/api/wifi/enumera interfacce/reti, connetti, disconnetti
WER/api/wer/enumera e scarica i report di Windows Error Reporting
WPR/api/wpr/avvia/arresta/scarica tracce prestazioni WPR, profili personalizzati
FlagEndpoint interessati
NoKernelDumpsDump kernel live, download dump bugcheck
NoUserModeDumpsDump di processo live (per PID)
NoBugcheckDumpsElenco/scaricamento/controllo dump bugcheck
NoWPRBootTracingTraccia WPR all'avvio
NoPowerSchemeAccessLettura/scrittura piani di alimentazione
FileDimensioneScopo
RestDocumentation.json40KBSchema REST API completo leggibile da macchina
workspace-definitions.js26KBLayout pannelli workspace del portale (indice API secondario)
common-xbox.js21KBAggiunte al portale specifiche per Xbox rispetto al Device Portal di base
common.js56KBFramework Device Portal di base
toolhost.js7.8KBLivello di hosting strumenti
rest.js19KBLibreria di costruzione chiamate REST
d3.js570KBVisualizzazione dati D3
konva.js676KBRendering Canvas
PIDImmagineUtenteNote
156(hidden)SYSTEM66MB working set, nessun nome immagine visibile
1456xbdiagservice.exeSYSTEMServizio diagnostica Xbox
1808EtwUploader.exeSYSTEMCaricatore telemetria ETW
1832StorageManagement.exeDefaultAccountXbox.StorageManagement UWP, IsRunning: false (sospeso)
1904ApplicationClipService.exeSYSTEMGestione clip GameDVR, 37MB working set
2032xnetsharedservice.exeSYSTEMBridge di rete cross-partition
2040NetworkTransferManagerService.exeSYSTEMGestore download contenuti Xbox
2344WebManagement.exeSYSTEMServer web Device Portal
2416XUpdMgr.exeSYSTEMGestore aggiornamenti Xbox
2436PRProvisioningService.exeNETWORK SERVICEServizio provisioning PlayReady
2460XNetConfig.exeSYSTEMConfigurazione di rete
2468toolsautoexec.exeSYSTEMEsecutore autoexec script .xboxunattend
2572sihost.exeDefaultAccountHost infrastruttura shell, 60MB working set
2836XboxDevService.exeSYSTEMHost servizio sviluppatore Xbox, 37MB
3160xrun.exeDefaultAccountCoordinatore avvio giochi lato shell
3256MicrosoftXboxSecurityClip.exeSYSTEMHost verifica DRM runtime
3600XboxUI.exeDefaultAccountUI shell dashboard, 60MB working set
3844xrfssvc.exeSYSTEMServizio filesystem cross-partition XRFS, 352KB (inattivo)
3864xrmntcl.exeSYSTEMClient mount runtime Xbox
3888xtfrtservice.exeSYSTEMServizio runtime XTF
4320Guide.exeDefaultAccountGuida Xbox (Xbox.Guide_2602.0.2602.11003), IsRunning: true
4548eracontrol.exeSYSTEMGestore ciclo di vita partizione ERA, 991KB working set
4660WWAHost.exeDefaultAccountDev Home (Microsoft.Xbox.DevHome_1.0.2601.4001), IsRunning: true
6524CastSrv.exeDefaultAccountServizio cast Miracast
LivelloComponenti
ContenutoXCRDAPI.dll (montaggio/smontaggio/streaming XVD)
IdentitàXblAuthConsoleExt.dll, XboxLiveTitleId.dll, pspsra.sys
DRMMicrosoftXboxSecurityClip.exe, XCRDAPI.dll
Controllo ERAeracontrol.exe (NtOpenPartition, XCRDAPI, XblaInitialize)
Proxy ERAeraproxyapp.exe (ALPC, D3D11, DComp, spazio dei nomi privato)
Input (locale)xviokbd.sys, xviomou.sys, XAccessoriesGip.dll (Pendragon)
Input (remoto)xboxcloudstreaming.dll, xboxsynthetickm.dll
Focus inputxviomonc.sys (impersonazione)
NPFS?VMNP.SYS Driver NPFS (Named Pipe File System? Filter System?) usato anche per l'impersonazione ERA
SO hostxvmctrl.sys, XVIO.SYS, FLTMGR.sys (non sul filesystem)
FS tra partizionixrfs.sys, xbtplinkc.sys, xrmntcl.exe, xrfssvc.exe
Displayeraproxyapp.exe, xamapi.dll (override Win32), MPO tier 3
GPUumd12ddi_arden.dll, newbe_xs.dll, xbsc_xs.dll, xg_xs.dll
AudioXVMAudioServer.dll, XAudio2_8/9.dll, configurazione audio spaziale
Retexvnc.sys/xvncbus.sys (NIC virtuale), NetXVmService
DiagnosticaXBBlackbox.dll, xbdiagservice.exe, EtwUploader.exe, EtwPlus.dll (pipeline Etx)
AggiornamentoXUpdMgr.exe, client WU (wuauengcore.dll), volume Deploy:\
ShellXbox.Shell.Api.dll, XboxUI.exe, Guide.exe, sihost.exe
Streamingxboxcloudstreaming.dll, XBCastRecv.dll (Miracast)
Strumenti di sviluppoWebManagement.exe (Device Portal), stack XTF (132 file), WdApp.exe, unattendedsetuphelper.exe
Compatibilitàxamapi.dll (shim Win32), dxbc2dxil_xs.dll (DX11->DX12)
Visione / Kinectnuiservice.exe (3.8MB, SYSTEM, orchestratore sempre attivo), KinectMediaSource.dll (acquisizione frame, alignment.bin 10.7MB, alignment_color.bin 5.7MB), vvtechs.dll (NuiVisionCreateFactory, tracciamento corpo), speechwov.dll (tracciamento wake word/voce), modelli Random Forest per il viso (FaceDetector.bin, FaceRecognition.bin, ExpressionRandomForest.model, +8 altri), 3 versioni attive (X:\ht\versions\)
AnnunciAdsLauncher (app di sistema), Windows.Xbox.System.Internal.AdsContract (WinRT)
Legacy (disabilitato)Zurich (TV tuner, collegato a XVIO), PetraXC / KinectSensorControl (WDF 1.11, disabilitato finché non arriva un dispositivo Kinect, alimenta KinectMediaSource.dll tramite \\.\KinectSensorControl)
ContrattoVersioneNote
Windows.Kinect.KinectContractv1Kinect è probabilmente supportato per la retrocompatibilità dei titoli
Windows.Xbox.TestAutomationContractLa superficie di automazione dei test è presente sull'hardware retail
Windows.Xbox.System.Internal.AdsContractIl sistema Ads è un contratto WinRT interno
Windows.Xbox.System.Internal.CopyOnLan.CopyOnLanContractCopia di giochi in LAN, trasferimento di titoli sulla rete locale?
Windows.System.Internal.XboxLive.Auth.AuthContractv2Superficie di autenticazione Xbox Live interna (separata dalle API XBL pubbliche)
Singola foto 1080x1080 dell'account Microsoft, separata dal sistema dei gamerpic (vedi Sezione 3.2)
AppData\Local\Packages\Sono presenti solo configurazioni di app di sviluppo sideloadate, le app di sistema Xbox non usano i percorsi di archiviazione LocalPackages UWP standard
CanaleAPIScopo
Trasmissione a livello di sistemaRtlPublishWnfStateDataPubblica lo stato di corpo/viso/audio a tutti i sottoscrittori WNF
Accesso tramite visoLogonUserExExWAttiva l'accesso automatico dell'utente basato sul viso
Named pipe per appNamed pipe server + GetNamedPipeClientProcessIdOutput controllato per processo; verifica l'identità del chiamante prima di consegnare i dati
RPC per chiamanteRPC server + RpcServerInqCallAttributesWAccesso autenticato per chiamante ai risultati dell'inferenza
Identità persistenteState Repository (SRDictionaryToPropertySet)Persiste l'identità riconosciuta tra le sessioni
Controllo di capacitàRtlCapabilityCheckTutto l'accesso all'output di inferenza è limitato da un controllo di capacità NT
ConsumerNote
Xbox ShellAdattamento dell'interfaccia utente in base all'espressione
Guide.exeAttivatore di accesso automatico
XboxUI.exeInterfaccia utente sensibile ad attenzione/sguardo
Titoli di giocoTramite il contratto WinRT NuiVision (Windows.Kinect.KinectContract v1, retail)
xCloudil client di streaming riceve lo stato NUI