
Ricerca personale sull'architettura di Xbox Series
| Campo | Valore |
|---|---|
| Data | 9-12 marzo 2026 + 7-? luglio 2026 |
| Hardware | Xbox Series S (Nome in codice: Lockhart) |
| Build del sistema operativo | 26100.7010.amd64fre.xb_flt_2602ge.260212-1010 + 26100.8561.amd64fre.xb_flt_2606ge.260609-2200 |
| Metodo di accesso | Dev Mode + SSH + REST API + NTFS file share junction |
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.
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.
ERA = Partizione GameOS
SRA = Partizione SystemOS
HT = Kinect (possibilmente "Human Tracking"?)
Arden = Stack GPU Xbox Series X/S
NewBe = Compilatore shader Arden
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).
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.
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.
La Dev Mode di Xbox supporta Visual Studio, che usa SSH:
DevToolsUserIl 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:\
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)>
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.
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.
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.
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 junctionS:\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:\.
Sono state catturate due sessioni di aggiornamento:
Sessione 1 9 marzo 2026 18:25:23
DataStore.edb non esisteva (creato nuovo in questa sessione)https://slscr.update.microsoft.com/SLS/{REDACTED_GUID}/x64/10.0.26100.7010/00x8024402C (nessuna connessione internet). Nessun controllo aggiornamenti completato.Sessione 2 10 marzo 2026 03:59:18
DataStore.edb esistente0x8024402C03:59:24, 6 secondi dopo che il servizio aveva già fallito e abbandonato la sessione04:09:19 con codice di uscita 0x240001Nota: 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.
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.
[REDACTED] identificatore di configurazione del servizio Windows Update di Xbox, presente nella sottodirectory SLS\ e incorporato in ogni URL di richiesta SLS.
Percorsi di build Azure DevOps interni trapelati tramite strumentazione di debug:
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.
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.
xbtplinkc.sys XVIO Transport Link ClientL'analisi degli import rivela l'intera superficie API del ring buffer XVIO e il meccanismo di traduzione GPA:
XvioAcquireRingBufferRundown / XvioReleaseRingBufferRundown
XvioSignalFlag
XvioWriteRingBuffer
XvioGetIncomingRingBufferAvailableBytes
XvioReadRingBufferEx
XvioInitialize
XvioGetRingBufferContext
XvioCreateRingBuffer
XvioGetReservedMemory reserved hypervisor memory carve-out
XvioTranslateXrfsGuestGpa translate ERA guest physical address for SystemOS access
XvioTranslateXrfsGuestGpa è 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 FilesystemDriver 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:
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.
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
Import chiave specifici di Xbox:
XCRDAPI.dll controllo diretto mount XVD:
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
NtOpenPartition
RtlSetProcessIsCritical
RtlWaitForWnfMetaNotification / RtlPublishWnfStateData
NtQueryWnfStateData / NtDeleteWnfStateName
ext-ms-win-xblauth-console-l1-1-0.dll (caricamento ritardato):
XblaInitialize inizializza l'identità di autenticazione Xbox Live nella partizione ERA
ext-ms-win-ntuser-rim-l1-1-0.dll (caricamento ritardato):
RIMAddInputObserver / RIMRemoveInputObserver intercetta l'input grezzo del controller per l'instradamento ERA
SspiCli.dll:
LogonUserExExW crea token di accesso utente per la sessione ERA
ext-ms-win-session-usermgr-l1-1-0.dll (caricamento ritardato):
UMgrOpenProcessHandleForAccess
RPCRT4.dll:
RpcServerInqCallAttributesW / I_RpcBindingInqLocalClientPID verifica dell'identità del chiamante RPC
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:
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:
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):
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:
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:
CreateNamedPipeW / ConnectNamedPipe / DisconnectNamedPipe
XblAuthConsoleExt.dll Identità hardware e autenticazione (46 export)Identità console:
XblaGetConsoleCert / XblaGetConsoleId / XblaGetConsoleSerialNumber
XblaGetDevkitType rilevamento retail vs devkit
XblaGetXblSandbox ambiente Xbox Live (retail/preview/dev)
Identità titolo:
XblaGetXboxLiveTitleId
XblaGetTitleAttestation / XblaGetTitleConsoleGeneration
Crittografia:
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:
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):
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)GetCloudStreamManager
ShutdownCloudStreamManager
XboxLiveTitleId.dll Rilevamento gioco runtime (12 export)GetCurrentXboxLiveTitleId / GetCurrentXboxLiveInfo
GetProcessXboxLiveInfo / GetPackageXboxLiveInfo
AuthenticateSystemXboxLiveTitle
XBBlackbox.dll Flight RecorderExport singolo: BlackboxServiceMain
XBCastRecv.dll Ricevitore Miracast (22 export)GetWiFiDirectDeviceCategoryForCurrentPlatform
IsMiracastReceiverStartAllowedWithoutApp
GetEdidForCurrentDisplayDevice
Xbox.Shell.Api.dll Integrazione shell (44 export)CheckGamingPrivilegeSilently / WithUI
ShowProfileCardUI / ShowGameInviteUI
PlaySystemSound
AreWebAppsEnabled
XAccessoriesGip.dll:
PendragonGIP_SendGIPMessage
PendragonGIP_SetMessageCallback
PendragonGIP_Start / Stop
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
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
↓
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
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.
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.
UserMgr2 è l'account utente interattivo che possiede la sessione attiva con accesso effettuato. NTUSER.DAT è bloccato (UserMgr2 è attivo). Risultati chiave dal profilo:
| Percorso | Contenuto |
|---|---|
ntuser.ini | 3 nuove righe |
AccountPictures\UserImage.jpg |
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.
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.
nuiservice.exe
├── D3D11CreateDevice <- GPU inference device
├── IOCP frame pump <- async frame dispatch
└── Fiber graph <- cooperative ML inference scheduling
L'acquisizione dei frame è gestita da KinectMediaSource.dll:
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.
Modelli caricati da X:\ht\versions\{1.0.0|1.0.1|1.0.2}\ tramite vvtechs.dll (NuiVisionCreateFactory):
KinectMediaSource.dllModelli caricati da C:\Windows\System32\ht\ (vedi Sezione 3.3 per l'inventario completo dei modelli):
LogonUserExExW per l'accesso automatico basato sul viso (vedi Instradamento dell'output di seguito)Gestito da speechwov.dll:
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.
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.
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.
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.
| Strumento | Scopo |
|---|
| Windows Explorer | Condivisione di rete Xbox (Istruzioni su https://XBOX:11443/#File%20explorer > Esplora) |
SSH (DevToolsUser + PIN VS) | Accesso shell a SystemOS |
mklink /J | Creazione 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 /EXPORTS | Analisi statica dei binari PE tramite condivisione di rete |
| Python | Script per automatizzare la REST API |
| Phasor | Runtime di scripting da usare sulla console (copiato tramite condivisione di rete, eseguito via SSH) download qui |
reg query | Enumerazione del registro dalla shell SSH |
WdApp.exe | Gestore pacchetti e controllo del ciclo di vita ERA (enumerazione della superficie dei comandi) |
WdConfig.exe | Enumerazione delle API delle impostazioni della console |
| Analisi tracce ETL | Pipeline di Windows Update tramite junction S:\Deployment\SoftwareDistribution\ |
| Dump di processi live | GET /api/debug/dump/usermode/live?pid=<pid> |
| Ghidra | Analisi di interfacce COM / driver |
| IDA Pro | Grafi di chiamate di DLL complesse e interfacce COM |
| XboxTools | La mia personale raccolta di utility per varie cose |
| Namespace | Base URI | Endpoint 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 |
| Flag | Endpoint interessati |
|---|
NoKernelDumps | Dump kernel live, download dump bugcheck |
NoUserModeDumps | Dump di processo live (per PID) |
NoBugcheckDumps | Elenco/scaricamento/controllo dump bugcheck |
NoWPRBootTracing | Traccia WPR all'avvio |
NoPowerSchemeAccess | Lettura/scrittura piani di alimentazione |
| File | Dimensione | Scopo |
|---|
RestDocumentation.json | 40KB | Schema REST API completo leggibile da macchina |
workspace-definitions.js | 26KB | Layout pannelli workspace del portale (indice API secondario) |
common-xbox.js | 21KB | Aggiunte al portale specifiche per Xbox rispetto al Device Portal di base |
common.js | 56KB | Framework Device Portal di base |
toolhost.js | 7.8KB | Livello di hosting strumenti |
rest.js | 19KB | Libreria di costruzione chiamate REST |
d3.js | 570KB | Visualizzazione dati D3 |
konva.js | 676KB | Rendering Canvas |
| PID | Immagine | Utente | Note |
|---|
| 156 | (hidden) | SYSTEM | 66MB working set, nessun nome immagine visibile |
| 1456 | xbdiagservice.exe | SYSTEM | Servizio diagnostica Xbox |
| 1808 | EtwUploader.exe | SYSTEM | Caricatore telemetria ETW |
| 1832 | StorageManagement.exe | DefaultAccount | Xbox.StorageManagement UWP, IsRunning: false (sospeso) |
| 1904 | ApplicationClipService.exe | SYSTEM | Gestione clip GameDVR, 37MB working set |
| 2032 | xnetsharedservice.exe | SYSTEM | Bridge di rete cross-partition |
| 2040 | NetworkTransferManagerService.exe | SYSTEM | Gestore download contenuti Xbox |
| 2344 | WebManagement.exe | SYSTEM | Server web Device Portal |
| 2416 | XUpdMgr.exe | SYSTEM | Gestore aggiornamenti Xbox |
| 2436 | PRProvisioningService.exe | NETWORK SERVICE | Servizio provisioning PlayReady |
| 2460 | XNetConfig.exe | SYSTEM | Configurazione di rete |
| 2468 | toolsautoexec.exe | SYSTEM | Esecutore autoexec script .xboxunattend |
| 2572 | sihost.exe | DefaultAccount | Host infrastruttura shell, 60MB working set |
| 2836 | XboxDevService.exe | SYSTEM | Host servizio sviluppatore Xbox, 37MB |
| 3160 | xrun.exe | DefaultAccount | Coordinatore avvio giochi lato shell |
| 3256 | MicrosoftXboxSecurityClip.exe | SYSTEM | Host verifica DRM runtime |
| 3600 | XboxUI.exe | DefaultAccount | UI shell dashboard, 60MB working set |
| 3844 | xrfssvc.exe | SYSTEM | Servizio filesystem cross-partition XRFS, 352KB (inattivo) |
| 3864 | xrmntcl.exe | SYSTEM | Client mount runtime Xbox |
| 3888 | xtfrtservice.exe | SYSTEM | Servizio runtime XTF |
| 4320 | Guide.exe | DefaultAccount | Guida Xbox (Xbox.Guide_2602.0.2602.11003), IsRunning: true |
| 4548 | eracontrol.exe | SYSTEM | Gestore ciclo di vita partizione ERA, 991KB working set |
| 4660 | WWAHost.exe | DefaultAccount | Dev Home (Microsoft.Xbox.DevHome_1.0.2601.4001), IsRunning: true |
| 6524 | CastSrv.exe | DefaultAccount | Servizio cast Miracast |
| Livello | Componenti |
|---|
| Contenuto | XCRDAPI.dll (montaggio/smontaggio/streaming XVD) |
| Identità | XblAuthConsoleExt.dll, XboxLiveTitleId.dll, pspsra.sys |
| DRM | MicrosoftXboxSecurityClip.exe, XCRDAPI.dll |
| Controllo ERA | eracontrol.exe (NtOpenPartition, XCRDAPI, XblaInitialize) |
| Proxy ERA | eraproxyapp.exe (ALPC, D3D11, DComp, spazio dei nomi privato) |
| Input (locale) | xviokbd.sys, xviomou.sys, XAccessoriesGip.dll (Pendragon) |
| Input (remoto) | xboxcloudstreaming.dll, xboxsynthetickm.dll |
| Focus input | xviomonc.sys (impersonazione) |
| NPFS? | VMNP.SYS Driver NPFS (Named Pipe File System? Filter System?) usato anche per l'impersonazione ERA |
| SO host | xvmctrl.sys, XVIO.SYS, FLTMGR.sys (non sul filesystem) |
| FS tra partizioni | xrfs.sys, xbtplinkc.sys, xrmntcl.exe, xrfssvc.exe |
| Display | eraproxyapp.exe, xamapi.dll (override Win32), MPO tier 3 |
| GPU | umd12ddi_arden.dll, newbe_xs.dll, xbsc_xs.dll, xg_xs.dll |
| Audio | XVMAudioServer.dll, XAudio2_8/9.dll, configurazione audio spaziale |
| Rete | xvnc.sys/xvncbus.sys (NIC virtuale), NetXVmService |
| Diagnostica | XBBlackbox.dll, xbdiagservice.exe, EtwUploader.exe, EtwPlus.dll (pipeline Etx) |
| Aggiornamento | XUpdMgr.exe, client WU (wuauengcore.dll), volume Deploy:\ |
| Shell | Xbox.Shell.Api.dll, XboxUI.exe, Guide.exe, sihost.exe |
| Streaming | xboxcloudstreaming.dll, XBCastRecv.dll (Miracast) |
| Strumenti di sviluppo | WebManagement.exe (Device Portal), stack XTF (132 file), WdApp.exe, unattendedsetuphelper.exe |
| Compatibilità | xamapi.dll (shim Win32), dxbc2dxil_xs.dll (DX11->DX12) |
| Visione / Kinect | nuiservice.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\) |
| Annunci | AdsLauncher (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) |
| Contratto | Versione | Note |
|---|
Windows.Kinect.KinectContract | v1 | Kinect è probabilmente supportato per la retrocompatibilità dei titoli |
Windows.Xbox.TestAutomationContract | La superficie di automazione dei test è presente sull'hardware retail | |
Windows.Xbox.System.Internal.AdsContract | Il sistema Ads è un contratto WinRT interno | |
Windows.Xbox.System.Internal.CopyOnLan.CopyOnLanContract | Copia di giochi in LAN, trasferimento di titoli sulla rete locale? | |
Windows.System.Internal.XboxLive.Auth.AuthContract | v2 | Superficie 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 |
| Canale | API | Scopo |
|---|
| Trasmissione a livello di sistema | RtlPublishWnfStateData | Pubblica lo stato di corpo/viso/audio a tutti i sottoscrittori WNF |
| Accesso tramite viso | LogonUserExExW | Attiva l'accesso automatico dell'utente basato sul viso |
| Named pipe per app | Named pipe server + GetNamedPipeClientProcessId | Output controllato per processo; verifica l'identità del chiamante prima di consegnare i dati |
| RPC per chiamante | RPC server + RpcServerInqCallAttributesW | Accesso autenticato per chiamante ai risultati dell'inferenza |
| Identità persistente | State Repository (SRDictionaryToPropertySet) | Persiste l'identità riconosciuta tra le sessioni |
| Controllo di capacità | RtlCapabilityCheck | Tutto l'accesso all'output di inferenza è limitato da un controllo di capacità NT |
| Consumer | Note |
|---|
| Xbox Shell | Adattamento dell'interfaccia utente in base all'espressione |
Guide.exe | Attivatore di accesso automatico |
XboxUI.exe | Interfaccia utente sensibile ad attenzione/sguardo |
| Titoli di gioco | Tramite il contratto WinRT NuiVision (Windows.Kinect.KinectContract v1, retail) |
| xCloud | il client di streaming riceve lo stato NUI |