
Pesquisa pessoal sobre a arquitetura do Xbox Series
| Campo | Valor |
|---|---|
| Data | 9 a 12 de março de 2026 + 7 a ? de julho de 2026 |
| Hardware | Xbox Series S (Codename: Lockhart) |
| Build do SO | 26100.7010.amd64fre.xb_flt_2602ge.260212-1010 + 26100.8561.amd64fre.xb_flt_2606ge.260609-2200 |
| Método de acesso | Dev Mode + SSH + REST API + junction de compartilhamento de arquivos NTFS |
Este relatório é uma análise estática e dinâmica da arquitetura interna do Xbox Series S, conduzida inteiramente por meio da infraestrutura oficial de modo de desenvolvedor da Microsoft. Nenhum exploit ou violação de política foi utilizado; todo o acesso foi realizado dentro dos limites do programa de desenvolvedor individual.
Ele contém detalhes dos componentes de mais alto nível usados para jogabilidade até os componentes de driver de sistema de mais baixo nível. A maioria desses detalhes deve ser a mesma também para o Xbox One.
A IA foi usada para formatar de forma consistente a grande pesquisa inicial (mais de 200 saídas de análise e mais de 50 notas aleatórias) nisto rapidamente. Todas as edições futuras são feitas manualmente.
Se você achar que algum ponto disto está pouco claro, pouco documentado ou falso, sinta-se à vontade para enviar um DM, ou se você tiver alguma resposta para minhas perguntas (na Seção 12), também seria bom. GUIDs e outros padrões comuns são redigidos em um hook de pre-commit, apenas no caso de eu deixar algo que identifique minha conta.
Muito do que estou trabalhando são suposições, então pode ser impreciso e mudará conforme eu obtiver mais informações e analisar mais binários.
Por razões que você pode imaginar, não compartilharei de forma alguma binários diretos, saída de desmontagem ou qualquer coisa considerada propriedade intelectual da Microsoft ou de suas subsidiárias.
ERA = GameOS Partition
SRA = SystemOS Partition
HT = Kinect (possibly "Human Tracking"?)
Arden = Xbox Series X/S GPU Stack
NewBe = Arden shader compiler
Existe um gerenciamento de drivers do Host OS fora do modelo SRA/ERA conhecido; veja o modelo de confiança (Seções 4.2, 17.5). XVIO.SYS e XSraFlt.sys são carregados diretamente pelo hipervisor (via HostOS) antes da inicialização do Windows e estão ausentes de todos os volumes acessíveis. Eles não podem ser adulterados nem mesmo com acesso total ao kernel — essa é a principal fronteira de segurança.
O HVCI está deliberadamente desabilitado (Seção 18). IsSecureKernelRunning = 0x0 confirma que o Secure Kernel (VTL1) não está em execução. A integridade de código é apenas no momento do carregamento, deixando uma janela TOCTOU depois que os binários são mapeados. Isso é uma troca deliberada de desempenho; a fronteira de segurança é a partição do hipervisor, não a proteção de memória dentro da partição.
Junctions NTFS expõem todo o sistema de arquivos do SystemOS pela rede (Seção 1.2). Um único comando mklink /J a partir do shell SSH mapeia C:\ ou qualquer outra coisa para o compartilhamento de arquivos do Device Portal, tornando todos os binários do sistema legíveis remotamente sem autenticação adicional além do PIN do modo de desenvolvedor.
A arquitetura entre partições está quase totalmente mapeada (Seções 4, 14, 26-28). A partição de jogos ERA se comunica com o SystemOS exclusivamente por meio de canais mediados pelo hipervisor: ring buffers XVIO para I/O, tradução de GPA para memória compartilhada, HvSocket para IPC e seções de porta ALPC para entrega de framebuffer com cópia zero concedidas por um "Host OS" pai.
A junction Deploy:\ contorna as restrições de acesso local (Seção 25). O volume do Windows Update só é acessível por meio do compartilhamento de rede (S:\Deployment\SoftwareDistribution\) devido a alguma discrepância em algum lugar (talvez xrfssvc.exe?).
A maioria dos binários possui apenas strings de descrição; eu não sabia disso até hoje, pois não estava usando o Windows para nada além da conexão real com o Console. Muitas vezes é entediante (por exemplo, XVUH, XVMCTRL), mas outras vezes é muito descritivo (por exemplo, Durango Virtual XVNC Bus Driver, Xbox Remote File System Service).
Todos os testes foram realizados em um único Xbox Series S de varejo em modo de desenvolvedor. Os resultados refletem várias builds, porém vou eventualmente fazer o diff das builds e documentar. Os resultados podem variar entre revisões de hardware (Series X, Xbox One) e versões de firmware. Várias superfícies de nível de kernel não puderam ser alcançadas: dumps de kernel ao vivo são bloqueados pela restrição NoKernelDumps, e a superfície IOCTL de xvmctrl.sys não foi totalmente enumerada. Perguntas em aberto estão acompanhadas na Seção 12.
O acesso foi estabelecido por meio da interface SSH do Dev Mode não documentada (oficialmente, mas há documentação da comunidade). A técnica de junction NTFS (Seção 1.2) estendeu o acesso de leitura do espaço de trabalho D:\DevelopmentFiles para o volume completo do sistema C:\ e todos os volumes de letras adicionais. Toda a análise foi somente leitura; nenhuma configuração do sistema foi modificada (WdConfig.exe set não foi usado). O Xbox pode executar binários de console Windows x86_64 padrão (compilados com /MT) diretamente via shell SSH, o que foi usado para executar ferramentas de análise localmente.
Dumps de kernel não estavam disponíveis: a restrição NoKernelDumps do Device Portal os bloqueia no modo de desenvolvedor de varejo. Dumps de processo ao vivo em modo de usuário estavam disponíveis e foram usados onde relevante.
O Xbox Dev Mode suporta o Visual Studio; isto usa SSH:
DevToolsUserO Device Portal em https://XBOX:11443 expõe um compartilhamento de arquivos NTFS oculto para D:\DevelopmentFiles. A partir do shell SSH:```batch
mklink /J D:\DevelopmentFiles\C C:\
Isto cria um ponto de junção do espaço de trabalho do desenvolvedor para a raiz da unidade C: do sistema, expondo todo o sistema de arquivos do SystemOS como um compartilhamento de rede legível em:
\\XBOX\DevelopmentFiles\C
Isso permite executar ferramentas como `dumpbin` a partir de um PC diretamente contra os binários do sistema Xbox pela rede.
---
## 2. Identidade do SO
| Campo | Valor |
|--------------------|-------------------|
| Nome do Produto | Xbox Series S |
| Edição do SO | SystemOS |
| Versão do Windows NT | 10.0 |
| Número do Build | 26100 |
| String do Build | `26100.8561.amd64fre.xb_flt_2606ge.260609-2200` |
| LCUVer | `10.0.26100.8536` |
| Branch | `xb_flt_2602ge` |
| Data do Build | 09 de junho de 2026 |
| Arquitetura | x64 |
| Secure Boot UEFI | `NotCapable` |
| Codinome do Console | Lockhart |
| Modo do Console | Default |
| ID da Sandbox | `XDKS.1` |
O SO se identifica como **SystemOS**, não Windows. O branch de build `xb_flt_2602ge` parece ser um "fork" distinto do Xbox do código-fonte do Windows, ainda muito semelhante ao Windows 11. Alguns binários do sistema Windows são idênticos, bit por bit, aos seus equivalentes de desktop, compilados com o mesmo toolchain MSVC, provavelmente originados dos mesmos pacotes UUP. Isso é separado do vago "Host OS".
### 2.1 Identidade do Registro
Vários campos de `CurrentVersion` foram deliberadamente congelados, de forma semelhante ao Windows desktop (para compatibilidade com títulos do Xbox One neste caso):
| Chave | Valor | Notas |
|-----|-------|-------|
| `CurrentVersion` | `6.3` | Relata internamente como Windows 8.1, para compatibilidade |
| `BuildGUID` | | zerado/limpado |
| `InstallDate` | `0` | sem timestamp de instalação |
| `EditionID` | `SystemOS` | Nunca atualizado |
| `ReleaseId` | `2009` | Congelado na era do Windows 10 20H2; nunca incrementado |
---
## 3. Layout de Volumes
O console expõe 13 letras de unidade, a maioria das quais presume-se ser [como no Xbox One, totalmente virtual](https://xboxoneresearch.github.io/wiki/operating-system/xbox-operating-system/)
| Unidade | Rótulo | Conteúdo | Notas |
|-------|-------|----------|-------|
| `C:` | System Boot | Arquivos do SO Windows | Partição padrão do SystemOS |
| `D:` | *(nenhum)* | `DevelopmentFiles\` | Espaço de trabalho do modo dev |
| `G:` | *(nenhum)* | `GameDVR_VideoBuffer` (272MB), `GameDVR_AudioBuffer` (16MB), `GameDVR_AudioBuffer_SysLoopback` (3MB) | Buffers circulares brutos de captura, memória compartilhada entre ERA e SystemOS |
| `J:` | Sys Tools | Toolchain XTF, drivers, QuickActions | Ver Seção 5 |
| `M:` | Misc | Contém as sobreposições NTFS específicas do console para bibliotecas e drivers | Partição do SystemOS? |
| `N:` | *(nenhum)* | `BlackBox\`, `EtwPlus\`, `CMS\`, `errorstrings\`, `usersettings\` | Volume de diagnóstico e telemetria, ver Seção 3.2 |
| `Q:` | *(nenhum)* | `Users\DevToolsUser\` | diretório home do usuário |
| `S:` | *(nenhum)* | `apps\`, `Clip\`, `Deployment\`, `Prefetch\`, `Microsoft\`, `ProgramData\` | provavelmente volume do Host OS (também contém aplicativos padrão e outros recursos) |
| `T:` | *(nenhum)* | `GameDVR\`, `Update\`, junctions para Harddisk16 | Metadados do GameDVR + pipeline de atualização |
| `U:` | *(nenhum)* | `ShellState\`, `BackCompatLicenses\`, `UserDataCache\` | Estado do shell e do usuário |
| `V:` | *(nenhum)* | *(vazio)* | Propósito desconhecido |
| `X:` | SystemAux | `Apps\`, `Catalog000.bin` (2.3MB) | Binários de aplicativos do sistema: 63 aplicativos incluindo `AdsLauncher`, `Xbox.DiscordComponent`, `Xbox.SingleUserProxy`, `Xbox.NTSCaptivePortal`, `Xbox.Xmap`, `Xbox.XboxIDP`, ver Seção 3.3 |
| `Y:` | SystemAuxF | `Apps\`, `Catalog000.bin` (6.5MB) | Binários secundários de aplicativos do sistema |
Além disso, `\\.\HarddiskVolume10` existe sem atribuição de letra de unidade. Há um volume WER (Windows Error Reporting) oculto contendo `CrashDumps\`, `ReportArchive\`, `ReportQueue\` e `Temp\`. Existem pelo menos **18 objetos de dispositivo de disco físico** (`PhysicalDrive0` a `PhysicalDrive17`), todos presentes como objetos de kernel, mas inacessíveis no nível bruto a partir do espaço do usuário. `HarddiskVolume16` e `HarddiskVolume18` existem como volumes reais acessíveis, mas são bloqueados para `DevToolsUser`.
### 3.1 Caminhos de Dispositivos de Kernel Ocultos
Os seguintes caminhos existem como objetos de dispositivo de kernel, mas são inacessíveis a partir do espaço do usuário (normalmente):
- `\??\Deploy:\` Volume do pipeline de atualização/implantação do Xbox (acessível via junction pelo compartilhamento de rede em `S:\Deployment\`)
### 3.2 Volume de Diagnóstico N:\
Vários diretórios em `N:\` são ativamente ocultados por um driver de filtro de sistema de arquivos no nível do kernel, pois parecem vazios para todas as ferramentas de espaço do usuário, mas é confirmado que recebem gravação em tempo de execução:
| Caminho | Status | Notas |
|------|--------|-------|
| `N:\EtwPlus\` | **Oculto pelo kernel** | Conteúdo oculto pelo driver de filtro do sistema de arquivos |
| `N:\BlackBox\` | Acessível | Contém dados de telemetria de relatórios de falha ETL específicos do Xbox |
| `N:\errorstrings\en-US.json` | Acessível | O banco de dados completo de strings de erro do Xbox contém 797 entradas, ver Seção 3.4 |
| `N:\usersettings\18\public\` | Acessível | Gamerpic em qualidade total armazenado como PNGs sem extensão (1080×1080 RGBA, formato PNG padrão) |
`N:\usersettings\18\public\` armazena tanto `AppDisplayPic` quanto `GameDisplayPic` como arquivos sem extensão. O hash SHA256 confirma que eles são idênticos, byte por byte; a imagem de exibição do aplicativo e a gamerpic são o mesmo arquivo gravado em dois caminhos.
### 3.3 X:\ SystemAux
`X:\ht\versions\` contém uma pilha de visão Kinect ativa com **três versões simultâneas** instaladas lado a lado (1.0.0, 1.0.1, 1.0.2), totalizando 119MB. Elas correspondem aos builds de `vvtechs.dll` com versões 1.67MB->1.70MB->1.85MB, respectivamente.
**Modelos de ML de rastreamento corporal** (por diretório de versão):
| Arquivo | Tamanho | Propósito |
|------|------|---------|
| `exemplardb.xmplr` | 36.7MB | Banco de dados de exemplares de pose corporal completa |
| `FernsModel.bin` | 932KB | Detector de keypoints de profundidade (classificador de ferns aleatórios) |
| `HeadPosition.mshdf` | 262–393KB | Estimador de articulação da cabeça (varia por versão) |
| `LSVMGripReleaseRight.gbd` | 7.5KB | Classificador SVM latente de preensão/soltura, mão direita |
**Modelos de ML de rastreamento facial** (em todo o sistema, `C:\Windows\System32\ht\`):
| Arquivo | Tamanho | Propósito |
|------|------|---------|
| `FaceDetector.bin` | 3.0MB | Localizar rostos no quadro |
| `FaceRecognition.bin` | 3.4MB | Reconhecimento de identidade por profundidade/IR |
| `FaceRecognition_Color.bin` | 5.9MB | Reconhecimento de identidade por canal de cor |
| `ExpressionRandomForest.model` | 150KB | Classificador de emoções |
| `EyeLeftRandomForest.model` | 55KB | Estado do olho esquerdo |
| `EyeRightRandomForest.model` | 65KB | Estado do olho direito |
| `LookingAwayRandomForest.model` | 42KB | Detecção de olhar/atenção |
| `MouthOpenRandomForest.model` | 58KB | Estado de boca aberta |
| `MouthMovedRandomForest.model` | 35KB | Movimento dos lábios |
| `FacialHairIRRandomForest.model` | 126KB | Pelos faciais (somente sensor IR) |
| `GlassesIRRandomForest.model` | 206KB | Detecção de óculos (somente sensor IR) |
Todos os classificadores de atributos faciais são modelos **Random Forest**. A saída cobre identidade, expressão, olhar, estado dos lábios e atributos de aparência.
O `vvtechs.dll` na pilha exporta uma única função: `NuiVisionCreateFactory`. Ele importa `EtwPlus.dll` e `D3D11`, confirmando que o pipeline de visão do Kinect roda na GPU e usa o caminho de telemetria específico do Xbox. Isso está ativo em hardware sem nenhum Kinect físico conectado (ver também `KinectSensorEnabled=true` na Seção 6 e o pipeline completo de `nuiservice.exe` na Seção 33).
### 3.4 Banco de Dados de Códigos de Erro N:\errorstrings\en-US.json
797 entradas de strings de erro do Xbox. Códigos notáveis com relevância de segurança ou arquitetural:
| Código de Erro | String | Notas |
|------------|-----------------|-------|
| `0x887E0002` | Incompatibilidade de runtime/driver D3D12.X | Confirma que D3D12.X é uma variante D3D12 específica do Xbox, não D3D12 genérico |
| `0x80A40406` | Telemetria aprimorada da Microsoft habilitada no modo dev | O modo dev opta explicitamente o console por coleta elevada de telemetria |
---
## 4. Arquitetura do Hipervisor
O Xbox usa um hipervisor personalizado baseado em Hyper-V executando duas partições:
- **SystemOS**, a partição SRA
- **Partição ERA**, o ambiente de execução do GameOS / Title OS
### 4.1 Pilha de Drivers
User space: xpal.dll
↓
Kernel: xpalk.dll
↓
xvmctrl.sys (364KB)
↓
Hypervisor: XVIO.SYS
### 4.2 Principais Drivers do Hipervisor
| Driver | Tamanho | Propósito |
|-------------------|---------|----------------------------------------------------------------------|
| `xvmctrl.sys` | 364KB | Controle de VM, principal interface do hipervisor, superfície de IOCTL |
| `XVIO.SYS` | desconhecido | Xbox Virtual I/O, ABI direta do hipervisor (não está no sistema de arquivos do SystemOS) |
| `xvioc.sys` | desconhecido | Cliente XVIO, interface do lado do SystemOS para o XVIO |
| `xvbus.sys` | 73KB | Raiz do barramento virtual + provedor XVIO do HvSocket |
| `hvsocket.sys` | 185KB | Implementação de socket Hyper-V |
| `VMNP.SYS` | 106KB | Chamado de "NPFS Driver", também lida com impersonações. |
| `Xrfs.sys` | 135KB | Driver do sistema de arquivos do Xbox |
| `XRmnt.sys` | 49KB | Driver de montagem do Xbox |
| `XRo.sys` | 95KB | Filtro somente leitura do Xbox |
| `VerifierExt.sys` | 274KB | Extensão do Driver Verifier |
**Descoberta crítica:** `XVIO.SYS` e `xpalk.dll` **não têm entradas de serviço de registro** e estão **ausentes do sistema de arquivos do SystemOS**. Eles provavelmente são carregados pelo Host OS antes de o SystemOS iniciar, totalmente fora do modelo de driver local. Este é o mecanismo de segurança real; mesmo com acesso total ao kernel do SystemOS, esses componentes não podem ser adulterados.
### 4.3 Superfície da API XVIO (reconstruída a partir de imports)
Informações sobre XVIO [podem ser encontradas aqui](https://xboxoneresearch.github.io/wiki/development/xvio/xvio-overview/), no entanto, não posso confirmar que as coisas não mudaram desde o Xbox One.
A partir dos imports de `xvmctrl.sys`, `xviomonc.sys` e `srakmd_arden.sys` contra `XVIO.SYS`:
XvioInitialize / XvioCleanup
XvioCreateEvent
XvioPostMessage
XvioGetCurrentPartitionId (identifica a partição ativa, de xviomonc)
XvioGetReservedMemory (acesso à RAM reservada do hipervisor, de srakmd_arden)
XvioRegisterGpaMdl / XvioUnregisterGpa (mapeamento de Guest Physical Address)
XvioSfrMapPages / XvioSfrUnmapPages (Shared Frame Region, memória GPU entre partições)
XvioSfrCounterGet / XvioSfrPerfCounterSet
XvioSfrReadEvent
XvioSetFocus (alterna o foco de entrada entre partições)
XvioSetSystemTime
XvioSaveProvidersState / XvioRestoreProvidersState
XvioPerfMonitoringEnabled
XvioCreateRingBuffer / XvioDestroyRingBuffer
XvioGetRingBufferContext
XvioReadRingBuffer / XvioReadRingBufferEx / XvioWriteRingBuffer
XvioAcquireRingBufferRundown / XvioReleaseRingBufferRundown
`XvioRegisterGpaMdl` e as funções SFR são o mecanismo de compartilhamento de memória do hipervisor, RAM bruta e páginas de framebuffer de GPU mapeadas através da fronteira entre partições.
### 4.4 Serviços entre Partições HvSocket
`hvsocket.sys` expõe serviços para comunicação de socket entre partições:
- `HvSocketGetPartitionConnections` / `HvSocketGetPartitionListeners` enumeram canais ativos
- `HvSocketGetVmIdFromVmbusHandle` resolução de handle VMBus
- `HvSocketUpdateServiceTable` registro de todos os serviços entre partições
Uma DLL nomeada por GUID `[REDACTED]_hvsocket.dll` registra um provedor de serviço HvSocket. O GUID foi redigido caso seja identificável.
Os quatro GUIDs de endpoint curinga do HvSocket foram resolvidos via computação de SID de serviço SHA1; ver Seção 20 para detalhes completos, incluindo os canais entre partições DiagTrack, RpcSs e EventLog.
---
## 5. Volume XTF / Dev "Sys Tools" J:\
> **Impacto:** O volume `J:\` está presente em todos os Xbox de varejo. No modo desenvolvedor, o toolchain XTF completo é acessível sem autenticação adicional além do PIN do modo dev. Isso inclui depuração remota, streaming de tela, criação de perfil GPU PIX e APIs de controle do console não destinadas ao acesso do usuário final.
A descoberta mais significativa desta pesquisa. O volume `J:\` (rotulado "Sys Tools") contém o **Xbox Tools Framework (XTF)**, o toolchain interno de kit de desenvolvimento da Microsoft, que aparentemente está apenas presente em todos os Xbox de varejo. Enumeração completa: **132 arquivos, 52MB** em todo o volume.
### 5.1 Registro de Extensões XTF (`J:\tools\xtfextensions.txt`)
Todas as 20 extensões XTF estão registradas com CLSIDs COM:
| DLL | CLSID |
|----------------------------|------------------|
| `XtfApplicationServer.dll` | `{10B16182-...}` |
| `XtfConsoleControl.dll` | `{5B45D0E0-...}` |
| `XtfConnectedStorage.dll` | `{9D610BBD-...}` |
| `XtfDebugMonitor.dll` | `{9141933C-...}` |
| `XtfDebugCaptureServer.dll` | `{F306F5C7-...}` |
| `XtfFileIO.dll` | `{8A8B4D4C-...}` |
| `XtfInput.dll` | `{7CC4D09B-...}` |
| `XtfPix.dll` | `{9BD151A3-...}` |
| `XtfGameStreaming.dll` | `{AA627F22-...}` |
| `XtfDiagInfo.dll` | `{FD21AC23-...}` |
| `XtfStressServer.dll` | `{6B5B0C75-...}` |
| `XtfSymbolProxyServer.dll` | `{69ABF3A1-...}` |
| `XtfPerf.dll` | `{F82AF734-...}` |
| `XtfRemoteRun.dll` | `{D77FE8B8-...}` |
| `XtfUser.dll` | `{2E302BAA-...}` |
| `XtfAuditioning.dll` | `{B91F5206-...}` |
| `XtfCleanup.dll` | `{9CF818E5-...}` |
| `XtfCredentialsServer.dll` | `{8582A384-...}` |
| `XtfEventServer.dll` | `{749FDEFA-...}` |
| `XtfUpdateT_s.dll` | `{DCDD4E77-...}` |
### 5.2 Depurador Remoto do Visual Studio (`J:\tools\debugmon\`)
msvsmon.exe
vsdebugeng.dll (1.5MB)
vsdebugeng.impl.dll (1.6MB)
msdia120.dll
diagnosticsscripthost.dll
vsdebuglaunchnotify.exe
Payloads de depuração versionados para VS 2015 a VS 2022 (`debugmondev14payload` até `debugmondev16payload`). **Três gerações simultâneas de depurador remoto do Visual Studio estão presentes e registradas: VS2015, VS2017 e VS2019** todas coexistem no mesmo sistema de arquivos do console de varejo.
### 5.3 Outras Ferramentas Notáveis
| Binário | Propósito |
|---|---|
| `agent-xbox.exe` (1.5MB) | Agente XTF principal |
| `xtfrtservice.exe` (1.3MB) | Host do serviço de runtime XTF |
| `xstudioserviceexe.exe` | Serviço Xbox Studio |
| `xperf.exe` | Perfilador de desempenho do Xbox, presente e funcional, no entanto **o rastreamento de kernel ETW é totalmente bloqueado independentemente da ferramenta** (ver Seção 5.5) |
| `videoserver.exe` (RTSP) | Servidor de streaming de tela RTSP autônomo |
| `wdapp.exe`, `wdconfig.exe` | Wave Debugger / ferramentas de configuração |
| `wdcapture.exe` | Captura de captura de tela/vídeo |
| `wdgamestream.exe` | Controle de streaming de jogos |
| `xboxnetapidiagsystem.exe` | Diagnóstico de rede do Xbox Live |
| `xbtp.dll` (503KB) | Xbox Broadband Transfer Protocol |
| `xraytool.exe` | Ferramenta de desempenho do console Xbox (revela o fato de que o Host OS existe) |
| `xstudioclient.dll` | Biblioteca cliente do Xbox Studio |
| `unattendedsetuphelper.exe` | Kit de ferramentas completo de gerenciamento do console, ver Seção 5.6 |
### 5.4 Formato `.xboxunattend` do QuickActions
`J:\QuickActions\` contém scripts de automação no formato `.xboxunattend`. São scripts de lote do Windows simples acionados via Device Portal. Ações disponíveis:
- `Capture_Screenshot.xboxunattend` chama `wdcapture.exe screenshot`
- `Capture_Video.xboxunattend`
- `Toggle_ConsoleMode.xboxunattend` alterna os modos de emulação de hardware via `WdConfig.exe`
- `Toggle_HDR.xboxunattend`
- `Toggle_Resolution.xboxunattend`
- `Launch_DevHome.xboxunattend` / `Launch_RetailHome.xboxunattend`
- `Suspend_Title.xboxunattend`
`Toggle_ConsoleMode.xboxunattend` revela a lista completa de identificadores de modo de criação de perfil passados ao `WdConfig.exe`: `AnacondaProfiling`, `LockhartProfiling` e **`Scarlett 40 GB`**.
### 5.5 xperf / WPR
`xperf.exe` e WPR estão totalmente presentes e funcionais, incluindo um perfil WPR `NeuralProcessing`. No entanto, todo o rastreamento de kernel ETW é bloqueado por dois códigos de erro distintos:
| Código de Erro | Significado |
|------------|---------|
| `0x80070005` | `Access denied`, rejeição padrão de ACL do Windows |
| `0xc5585011` | `Xbox policy block`, **não existe string de erro voltada ao usuário para este código** (não presente em `N:\errorstrings\en-US.json`) |
A enumeração de provedores ETW mostra **zero provedores específicos do Xbox** no namespace ETW padrão. Toda a telemetria do Xbox flui através de `EtwPlus.dll` usando funções com prefixo `Etx`, um pipeline completamente separado do ETW padrão do Windows (ver Seção 19.3).
### 5.6 Ferramenta de Gerenciamento do Console unattendedsetuphelper.exe
`unattendedsetuphelper.exe` é um executável de gerenciamento do console que cobre:
- Restauração de fábrica
- Atualização de firmware baseada em rede
- Injeção de toast/notificação
- Gerenciamento do Device Portal
Ele também serve como o mecanismo de runtime para scripts `.xboxunattend` (o formato QuickActions documentado na Seção 5.4).
---
## 6. Superfície de Configurações do WdConfig
`J:\tools\WdConfig.exe` (build `10.0.26100.7010`) expõe a API completa de configuração do console. Configurações notáveis:
### Categoria Debug
| Configuração | Valor | Notas |
|---|---|---|
| `ConsoleType` | `Lockhart` | Identificador de hardware |
| `ConsoleMode` | `Default` | `AnacondaProfiling`, `LockhartProfiling`, `Scarlett 40GB` |
| `EraGraphicsDriverMode` | `Title Configured` | Opções: `Retail`, `Instrumented`, `Validated`. O equivalente SRA é `SraGraphicsDriverMode = Retail`; ERA e SRA usam configurações de modo de driver separadas |
| `EnableKernelDebugging` | `false` | Impede o teardown de falha da ERA para anexação do depurador de kernel |
| `EnablePixMemory` | `false` | Reserva 6048MB extras para PIX no modo Lockhart Profiling |
| `CrashDumpType` | `None` | Opções: `Triage`, `Mini`, `Heap` |
| `TitlePerformanceOverlay` | `false` | Overlay HUD de GPU/CPU em tempo real sobre títulos em execução |
| `ExtraTitleMemory` | `0` | Máximo de 6048MB no modo Lockhart Profiling |
| `LastShutdownReason` | `Console crash` | Persistido entre reinicializações; meu console travou no último desligamento |
| `KinectSensorEnabled` | `true` | **Definido como true em hardware sem Kinect conectado**; a pilha é provisionada independentemente da presença de hardware |
### Categoria Network
| Configuração | Valor | Notas |
|---|---|---|
| `UseDebugNicForAllTraffic` | `false` | Existe uma NIC de depuração separada, distinta da NIC real. |
### Categoria Storage
| Configuração | Valor | Notas |
|---|---|---|
| `DevkitUseRetailConnectedStorage` | `false` | Se habilitado, o modo dev usaria a partição de armazenamento conectado de varejo. Não testado. |
| `RunFromPcDataCacheSizeInGB` | `100` | **100GB reservados por padrão para o cache de títulos Run-From-PC; bloqueado, não pode ser alterado pelo usuário** |
### Categoria Unattended
| Configuração | Valor | Notas |
|---|---|---|
| `AllowUsbUnattendScript` | `true` | Scripts `.xboxunattend` em USB são executados automaticamente |
| `RunUnattendScriptImmediately` | `false` | Se true, scripts USB são executados na inicialização sem prompt de cancelamento |
### Notas de Segurança
**E-mail da conta Microsoft armazenado em texto puro.** O armazenamento WdConfig do modo dev contém o endereço de e-mail da conta Microsoft vinculada em texto puro. Isso provavelmente é legível por qualquer processo com acesso SRA.
---
## 7. XCRDAPI.dll API de Entrega de Conteúdo do Xbox
`XCRDAPI.dll` é o kernel de gerenciamento de conteúdo da plataforma Xbox. Ele lida com DirectStorage, instalação progressiva, DRM, xCloud e armazenamento de blobs em uma única biblioteca.
### 7.1 DirectStorage
DStorageGetFactory
DStorageGetMappedControlPage
A implementação de DirectStorage do Xbox está embutida no XCRDAPI, não em um SDK separado.
### 7.2 Ciclo de Vida do 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 Instalação Progressiva por Streaming
XCrdStreamingStart / XCrdStreamingStop
XCrdStreamingQueryActiveInstanceId
XCrdStreamingQueryInformation / InformationByPath / InformationEx
XCrdStreamingQueryRegionInformation / ByPath
XCrdStreamingQueryRegionSpecifiers / ByPath
XCrdStreamingQueueInsertRegion
XCrdStreamingQueueQueryRegionList / ByPath
XCrdStreamingAdjustStreamingFlags
XCrdStreamingQueryRegionIdByOffset
Pipeline completo de instalação progressiva com fila de prioridade. As regiões são blocos endereçáveis de conteúdo do jogo.
### 7.4 Integração XCloud
XCloudQueryFeatureBits
XCloudSetFeatureBits
Os sinalizadores de recursos do streaming xCloud são controlados pela mesma API do conteúdo local.
### 7.5 DRM / Atestação
XCrdQueryAttestationBlob
XCrdQueryEncryptedInfo / XCrdQueryUnlockInfo
XCrdIsSideloadedKeyPresent
XCrdEnableSharedPls / XCrdSetExternalPlsMapping
### 7.6 Sistema de Blobs de Armazenamento
XCrdStorageCreateBlob / DeleteBlob / MoveBlob / CopyBlob
XCrdStorageReadBlob / ReadBlobEx / WriteBlob / WriteBlobEx
XCrdStorageQueryBlobAttributes
XCrdXBlobCreate / Delete / Copy
XCrdFindFirstBlob / FindNextBlob / FindCloseBlob
### 7.7 Pipeline de Transferência XVD
XCrdXvdXferInitialize / Uninitialize
XCrdXvdXferStart / Stop
XCrdXvdXferRead
XCrdXvdXferGetResult
### 7.8 Sistemas de Caminhos
XCrdXasBuildPath / XasBuildPathEx / XasKeyQueryValue (XAS App Store paths)
XCrdXdsGetVolumeMapping / XdsSetVolumeMapping (XDS Delivery Service volumes)
XCrdBuildPath / XCrdParsePath / XCrdUpdatePath
XCrdQueryDevicePath / QueryDevicePathByPath
XCrdSetFlatContentPath
---
## 8. xpal.dll Camada de Abstração da Plataforma Xbox (50 exportações)
API anteriormente não documentada para identidade de hardware, capacidades e gerenciamento de energia.
### Identidade de Hardware
XpalGetConsoleCertificate hardware certificate
XpalGetConsoleIdCch console hardware ID
XpalGetConsoleSerialNumberCch serial number
XpalGetSmcFirmwareId SMC firmware version
XpalGetSouthBridgeType chipset variant
### Detecção de Geração / SKU
XpalIsGen8 Xbox One
XpalIsGen9 Series X/S
XpalGetGenerationType
XpalIsHyperV hypervisor active
XpalIsExternalDevkit / XpalIsInternalDevkit
XpalGetVmType
XpalGetSystemType / XpalGetServerType / XpalGetConsoleMode
### Sinalizadores de Capacidade
XpalIsCapabilityEnabled
XpalIsCapabilityEnabledByVm
XpalIsFactorySettingEnabled
XpalGetFactorySettings
XpalGetCapabilities
XpalIsFeatureEnabled
### Gerenciamento de Energia
XpalInitiateDump trigger crash dump on demand
XpalInitiatePowerStateToggle
XpalInitiateSystemShutdown
XpalSetWakeupTimer
XpalQueryPowerToggleSource
XpalIsInForcedCs / XpalIsTransitioningToConnectedStandby
XpalIsSilentBootMode
XpalNotifyForcedCsHeartbeat
XpalIsRebootRequested
XpalRefreshPowerChimeMode
### Configuração
XpalGetXConfig / XpalSetXConfig Xbox config store (modern EEPROM equivalent)
XpalSetSystemTime
XpalSetInformation
XpalReportUem trigger UEM (Universal Error Message)
### ERA / VM de Título
XpalQueryTitleVmInfo
XpalWaitForTitleVmTermination
XpalBackgroundActivityRequest
---
## 9. eracontrol.exe Gerenciador do Ciclo de Vida da Partição ERA
`C:\Windows\System32\eracontrol.exe` executa como LocalSystem (inicialização manual) e gerencia o ciclo de vida completo da partição de jogos ERA. A análise completa das importações está na Seção 28. Resumo das principais importações:
- `NtOpenPartition` abre diretamente o identificador da partição ERA do Hyper-V
- `RtlSetProcessIsCritical` marca a si mesmo como crítico (o sistema entra em BSOD se ele falhar)
- `XCRDAPI.dll` monta/desmonta XVDs de jogos por meio de `XCrdSetEraLaunchMapping`
- `RIMAddInputObserver` / `RIMRemoveInputObserver` intercepta a entrada bruta do controle para roteamento para a ERA
- `XblaInitialize` inicializa o contexto de autenticação do Xbox Live do console
- `LogonUserExExW` cria tokens de logon de usuário para a sessão ERA
- `UMgrOpenProcessHandleForAccess` acesso ao identificador de processo do gerenciador de usuários
- `PsmQueryBackgroundActivationType` estado de ativação em segundo plano
Também no mesmo diretório: `eraproxyapp.exe` (339KB), o compositor do lado do SystemOS e a ponte IPC entre a ERA e o shell. Análise completa das importações na Seção 29.
---
## 10. Rastreamentos ETL do BlackBox (N:\BlackBox\)
O diretório `N:\BlackBox\` contém rastreamentos do gravador de voo ETW em tempo real. A partir da análise de um rastreamento capturado:
**Nota:** O formato ETL do Xbox só será resolvido com 'tracerp'
### Caminhos Internos da Árvore de Origem (incorporados na instrumentação de depuração)
onecoreuap\xbox\xblauth\lib\authmanagerimpl.cpp
onecoreuap\xbox\xblauth\lib\authmanagertokens.cpp
onecoreuap\xbox\xblauth\lib\xstsauthorizer.cpp
onecoreuap\xbox\xblauth\util\httprequest.cpp
### Partes Confiáveis de Autenticação do 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
### Falhas Capturadas
1. **`XboxUI.exe` BEX64** O shell do Dashboard sofreu um estouro de buffer de pilha (`STATUS_STACK_BUFFER_OVERRUN`, `0xc0000409`) em `XboxUI.Data.dll` no offset `0x13eb0`
2. **`MoAppHang`** Um aplicativo UWP travado para o pacote `REDACTED_GUID`
---
## 11. Descobertas Adicionais Relevantes
### WSL Presente no Xbox
Os serviços `LxssManager` e `lxcore` estão presentes com `LaunchProtected: 0x2` (Processo Protegido) e `SeTcbPrivilege`. O WSL no Xbox executa com confiança em nível de SO e, com base no uso, quase certamente está alimentando algo ou, pelo menos, de alguma forma menor, relacionado a `Xbox.ConsoleXCloudPlayer` (cliente de streaming de jogos xCloud).
wsl.exe está presente, porém **não** é legível.
### Binários System32 Exclusivos do Xbox
DLLs notáveis não presentes no Windows padrão:
- `XCRDAPI.dll` entrega de conteúdo (documentado na Seção 7)
- `XBBlackbox.dll` gravador de voo (documentado na Seção 30)
- `XBCastRecv.dll` receptor Xbox Cast / Miracast (documentado na Seção 30)
- `XVMAudioServer.dll` servidor de áudio de VM entre partições
- `Xbox.Shell.Api.dll` / `Xbox.Shell.OneStoreServices.dll` API do shell (documentado na Seção 30)
- `XboxCommandService.dll` comando/automação
- `XboxUserSim.dll` automação de testes de UI
- `xboxgipsynthetic.dll` / `xboxsynthetickm.dll` injeção de controle virtual GIP sintético (documentado na Seção 30)
- `AppXDeploymentExtensions.xbox.dll` implantação AppX específica do Xbox
- `xvnapi.dll` API de Rede Virtual do Xbox
- `xbsc_xs.dll` Compilador de Shaders Xbox Series (documentado na Seção 16.2)
### Serviços Presentes Mas Não Documentados
- `EraControlService` ciclo de vida da partição ERA
- `XvdStreamSvc` (`xnetsharedservice.exe`) streaming XVD / instalação progressiva
- `XUpdMgr` Gerenciador de Atualizações do Xbox (separado do Windows Update de alguma forma?)
- `XSraFlt` driver de filtro SRA do Xbox
- `Manufacturing Broker` serviço de provisionamento de fábrica
- `TestSirepSvc` protocolo interno de teste SIREP
- `GameCoreController` serviço de controle do game core do GDK
- `ConnectedStorage` serviço de salvamento em nuvem do Xbox
- `VideoManagerService` gerenciamento de saída de vídeo
- `XBBlackbox` serviço de gravador de voo
- `xbdiagservice` serviço de diagnóstico do Xbox
- `XtfRtService` serviço de runtime XTF
Drivers adicionais legados/de baixo nível confirmados no registro de serviços (veja a Seção 11.2):
- `Zurich` driver virtual DVB
### `xvnc` / `xvncbus` Placa de Rede Virtual do Xbox
`xvnc.sys` e `xvncbus.sys` são uma **pilha de NIC virtual**; a enumeração do serviço `xvnc` revela:
ROOT\xvnc\0000 root/loopback virtual NIC
{e720983a-...}\wifi\01
{e720983a-...}\wfd\01 Wi-Fi Direct
{e720983a-...}\wfd_role0\01
`xvncbus` é um driver de barramento WDF 1.15 que enumera NICs virtuais sobre o adaptador sem fio físico. A partição ERA não acessa a pilha de rede diretamente; ela se comunica por meio de `NetXVmService`, que possui a camada de NIC virtual `xvnc`. O GUID `{e720983a-...}` identifica o hardware do adaptador sem fio do Xbox.
### `xviomonc.sys` Cliente de Monitor XVIO
Driver de inicialização (`Start: 0x1`) que gerencia o foco da partição de exibição. Análise das importações:
XVIO.SYS: XvioInitialize, XvioCleanup, XvioPostMessage,
XvioSetFocus, XvioGetCurrentPartitionId - new XVIO export
VMNP.SYS: NpSetupVmImpersonation
xpalk.dll: XpalIsCapabilityEnabled
`xviomonc` **não** lida com dados do framebuffer; é apenas um driver de sinalização e gerenciamento de foco. `XvioSetFocus` alterna qual partição tem o foco de exibição/entrada; `XvioGetCurrentPartitionId` identifica a partição ativa. A captura de quadros real é tratada por `srakmd_arden.sys`.
`NpSetupVmImpersonation`, de `VMNP.SYS`, permite que o driver de monitor personifique a identidade de segurança da partição ERA ao acessar recursos de exibição da ERA através do limite da partição.
### G:\ Buffers GameDVR
Três arquivos em G:\ são buffers crus circulares mapeados em memória, compartilhados entre a ERA e o SystemOS:
- `GameDVR_VideoBuffer` captura de vídeo contínua de 272MB
- `GameDVR_AudioBuffer` áudio do jogo de 16MB
- `GameDVR_AudioBuffer_SysLoopback` áudio do sistema/interface de 3MB (fluxo separado)
---
## 11.1 Descobertas do Registro
### Referência ao Drive K:\ Exclusiva de Devkit
`HKLM\SOFTWARE\Microsoft\Durango\XTF` contém um caminho hardcoded:
K:\TDK\Tools\XtfJuno.dll
### `HKLM\SYSTEM\ResourcePolicyStore`
| Camada | Orçamento de Memória |
|------|--------------|
| `BackgroundSmall` | 40MB |
| `Background` | (segundo plano padrão) |
| `Balloon` | 5120MB |
Camadas de política de CPU:
| Política | Alocação de CPU |
|--------|---------------|
| `Paused` | 1% |
| `SoftCapLow` | 10% |
| `SoftCapFull` | 100% |
| `HardCap0` | 0% - completamente congelada |
**Política BeanHog** (talvez o orçamento do processo de jogo em primeiro plano?):
- Memória: camada de primeiro plano
- CPU: 100%
- `DoNotKill`: true
- Prioridade: importância mais alta
---
## 11.2 Arqueologia do Legado do Xbox One
Três drivers da era do Xbox One sobrevivem no registro de serviços do Series S. Dois estão desabilitados; um está em execução ativa.
### Pilha do Decodificador de TV `Zurich`
`zurichs.sys` é o driver virtual DVB do Xbox One. Status: **desabilitado**, mas ainda registrado.
Descoberta importante: `zurichs.sys` importa ring buffers de `XVIO.SYS`. O sintonizador de TV foi projetado arquiteturalmente para entregar seu fluxo de vídeo decodificado por meio dos ring buffers do hipervisor XVIO. O sintonizador também usava `ZwUpdateWnfStateData` para publicar o estado do sintonizador por meio do Windows Notification Facility (WNF).
### Dispositivo de Controle do Sensor Kinect `PetraXC`
Um driver de dispositivo virtual WDF agora identificado como o **dispositivo KinectSensorControl**, a abstração de hardware no lado do kernel para o sensor de câmera do Kinect. Status: **desabilitado até o dispositivo chegar** (modelo WDF de início sob demanda).
Características notáveis:
- Compilado com **WDF 1.11**, que corresponde ao Windows 8, situando sua origem na base do kernel original do Xbox One
- Importa `XVIO.SYS`, o que significa que ele se comunica por meio do transporte de ring buffer do hipervisor
- Apresenta `\\.\KinectSensorControl` como sua interface de dispositivo, consumida por `KinectMediaSource.dll` no pipeline do nuiservice via `DeviceIoControl` (veja a Seção 33)
### `pspsra.sys` Ponte AMD PSP para SRA
Status: **em execução ativa** (`Start: 0x0`, inicialização). Acesso negado no nível do kernel; o driver está bloqueado e não pode ser inspecionado mais.
`pspsra.sys` fica diretamente abaixo da partição SRA na cadeia de inicialização como uma **ponte entre o AMD Platform Security Processor (PSP) e a camada SRA**. O AMD PSP lida com a atestação do fTPM e o certificado do console no nível do bare metal, e `pspsra.sys` é a ponte que expõe essa cadeia de confiança para a SRA. Isso o coloca no mesmo nível de confiança de `XVIO.SYS` e `XSraFlt.sys`, inicializado antes do SystemOS, opaco a ele e inacessível mesmo com acesso total ao kernel.
---
## 12. Perguntas Não Resolvidas + Drivers
Perguntas:
1. **Localização do XVIO.SYS** não está em nenhum sistema de arquivos acessível; carregado pelo hipervisor na inicialização
2. **Uso do WSL** confirmado como presente e utilizado, mas o papel específico no Xbox OS não foi totalmente mapeado
3. **`XCrdXpfOp`** função XCRDAPI não identificada (XPF = ?)
4. **Localização de `XSraFlt.sys` + `XRmnt.sys`** confirmadamente ausentes de todos os sistemas de arquivos acessíveis; carregados pelo Host OS juntamente com XVIO.SYS
5. **`xvnc` GUID `{REDACTED_GUID}`** GUID do adaptador sem fio, cadeia completa do driver não mapeada
6. **Alvo do ponto de reparse de `S:\Shares\TitleScratch`** ativamente ocultado pelo SO nas listagens de diretório; requer `FSCTL_GET_REPARSE_POINT` abaixo da camada do cmd.exe. Quase certamente `\Device\Xrfs\<partition-guid>` (veja a Seção 26)
7. **Superfície IOCTL de `xvmctrl.sys`** despejo de kernel ao vivo bloqueado (restrição `NoKernelDumps` no modo dev comercial); tabela de dispatch IOCTL ainda não enumerada
8. **GUID da partição ERA** não exposto por nenhum caminho de registro acessível; estaria visível no despejo de kernel (bloqueado, investigando contornos)
9. **Conteúdo de `N:\EtwPlus\`** ativamente ocultado por um driver de filtro do sistema de arquivos do kernel; as listagens de diretório retornam vazias apesar da atividade de escrita confirmada. A identidade do driver de filtro não foi determinada (veja a Seção 3.2)
10. O Host OS como um todo: nem sequer é totalmente certo o que ele faz.
Drivers:
1. **`xtcc.sys`**, provavelmente responsável por algo relacionado à segurança, dado seu vasto número de importações de `ntoskrnl.exe` e `XVIO.sys`
2. **`FLTMGR.SYS`** importado por `XRmnt.sys`, `XRo.sys`
---
## 13. E/S Virtualizada e Acesso Remoto (XVIO/SRA)
A análise das exportações de `xboxcloudstreaming.dll` e das entradas de registro `CurrentControlSet\Services` mostra integração profunda no nível do kernel para conexões remotas, utilizando um modelo de hardware "sintético" em vez da emulação de software padrão. A VM da ERA enxerga o(s) mesmo(s) dispositivo(s) sintético(s), não importa de onde a entrada esteja vindo (remoto, USB, sem fio, etc).
### 13.1 A Pilha XVIO (E/S Virtual)
O framework XVIO parece ser o método principal para injetar eventos no nível de hardware no SystemOS a partir de fontes externas ou entre partições.
| Serviço | Categoria | Função |
| --- | --- | --- |
| `hvsocketxvio` | Transporte | Serviço de ponte conectando soquetes Hyper-V ao protocolo XVIO. |
| `InputXVIOClient` | Coordenador | Gerencia o mapeamento de pacotes de entrada remota para nós de dispositivos virtuais. |
| `xviokbdbus` / `xviomoubus` | Driver de Barramento | Enumera dispositivos HID virtuais em um barramento interno sintético. |
| `xviokbd` / `xviomou` | Driver de Dispositivo | Drivers de função específicos para teclados e mouses virtualizados. |
### 13.2 Pipeline do Controlador Sintético
O binário `xboxcloudstreaming.dll` aproveita `XboxgipSynthetic.dll` para criar o que o SO percebe como periféricos locais fisicamente conectados.
- **Virtualização de Áudio:** Por meio de `SyntheticController_AddAudioHeadset`, o sistema pode canalizar áudio de rede remota para a pilha de áudio local do console como um dispositivo vinculado ao hardware.
- **Injeção de Entrada (RIM):** O uso do Remote Input Manager (`ext-ms-win-ntuser-rim-l1-1-0.dll`) confirma que sessões de xCloud e remote play usam os mesmos métodos de injeção de alta autoridade do Windows Remote Desktop, especificamente `InjectKeyboardInput` e `InjectPointerInput`.
### 13.3 Drivers SRA e "Arden"
> **Nota:** O driver `SraKmdArden` é específico de hardware para a arquitetura Series X/S (Arden). Esse driver provavelmente permite que o sistema intercepte o buffer de exibição no nível do kernel, minimizando a sobrecarga de latência geralmente associada ao desenho entre VMs.
### 13.4 Ponte HvSocket (GUID `4545ffe2-...`)
O GUID HvSocket anteriormente não identificado foi correspondido ao serviço `hvsocketxvio`. Isso confirma que o XVIO não é um protocolo independente, mas uma camada executada sobre o transporte de soquetes interno do Hyper-V.
Isso sugere que a **partição ERA (jogo)** não fala diretamente com a rede para entrada; em vez disso:
1. **SystemOS** recebe pacotes de rede via `XboxNetApiSvc`.
2. **`xboxcloudstreaming.dll`** processa o fluxo.
3. **`hvsocketxvio`** canaliza os dados brutos de entrada através do limite da partição via **HvSocket**.
4. A camada Hypervisor/Host os injeta na partição de destino como um evento de hardware.
---
## 14. Volume M:\ | Arquitetura de Overlay
M:\ (rotulado como "System OS Misc") funciona como um **volume overlay**, uma árvore contendo componentes que são montados sobre a imagem base C:\. Essa arquitetura permite que a Microsoft forneça uma única imagem de SO e aplique conjuntos de recursos específicos por meio de overlays no momento da montagem.
### 14.1 Estrutura do 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 Symlinks do Sistema de Arquivos
C:\ referencia componentes de M:\ por meio de symlinks NTFS. Os symlinks existem em dois níveis:
**Nível de driver do System32:**
C:\Windows\System32\drivers\srakmd_arden.sys -> M:\windows\system32\drivers\srakmd_arden.sys
**Nível de diretório do 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
O overlay M:\ é mais abrangente do que uma simples substituição de drivers/DLLs; diretórios centrais de subsistemas do Windows, incluindo a loja de fontes, aplicativos do sistema e a interface de gerenciamento web, residem inteiramente em M:\. Isso pode significar que um overlay específico controla não apenas drivers de GPU e captura, mas todo o sistema de aplicativos e a camada de shell da interface até certo ponto.
Uma enumeração recursiva completa dos symlinks de C:\ apontando para M:\ não foi concluída.
### 14.3 Drivers Específicos de Hardware (M:\windows\system32\drivers\)
| Driver | Tamanho | Finalidade |
|---|---|---|
| `srakmd_arden.sys` | 274KB | KMD de captura SRA -> capturador de quadros específico do hardware Arden |
| `acpi.sys` | 873KB | ACPI -> compilação específica de hardware (maior que a genérica) |
| `spaceport.sys` | 1MB | Porta de armazenamento -> criptografia XVD + verificação de licença |
| `spacedump.sys` | 304KB | Driver de despejo de armazenamento |
| `buttonconverter.sys` | 90KB | HID de energia/ejetação -> conversão em eventos do console |
| `qwavedrv.sys` | 90KB | Driver de QoS/qualidade de rede |
| `acpiex.sys` | 181KB | Extensões ACPI |
| `AcpiDev.sys` | 61KB | Extensões de dispositivo ACPI |
| `acpitime.sys` | 57KB | Temporizador ACPI |
**Descoberta:** `XSraFlt.sys` está ausente tanto dos drivers M:\ quanto de C:\. Ele não está armazenado em nenhum volume de sistema de arquivos acessível, o que sugere que é carregado pelo Host OS na inicialização, juntamente com `XVIO.SYS` e `FLTMGR.sys`.
### 14.4 Componentes Userspace Específicos de Hardware (M:\windows\system32\)
DLLs/EXEs notáveis exclusivos de M:\:
**Pilha de GPU / Shaders:**
- `umd12ddi_arden.dll` (1.56MB) DDI do driver em modo de usuário D3D12, hardware Arden
- `umd12ddi_d.dll` (1.5MB) UMD D3D12, compilação instrumentada para depuração/PIX
- `umd12ddi_i.dll` (1.14MB) UMD D3D12, compilação inbox/fallback
- `newbe_xs.dll` (26MB) backend do compilador de shaders GPU Arden "NewBe"
- `xbsc_xs.dll` (3.9MB) frontend do Xbox Series Shader Compiler
- `dxcompiler_xs.dll` (17.8MB) compilador HLSL do Xbox Series
- `dxbc2dxil_xs.dll` (2.9MB) conversor de bytecode DXBC para DXIL
- `pixrtddi.dll` (679KB) DDI de renderização/depuração PIX
**Toolchain para Desenvolvedores / PIX:**- `VsGraphicsRemoteEngine.exe` (4.75MB) mecanismo remoto do profiler de GPU PIX
- `VsGraphicsCapture.dll` (225KB) captura de quadros do PIX
- `VsGraphicsExperiment.dll` (327KB) estrutura de experimentos do PIX
- `DXCaptureReplay.dll` (18MB) mecanismo de replay de captura de GPU
- `DXCap.exe` (1.19MB) ferramenta de captura de GPU
- `DXToolsMonitor.dll` / `DXToolsOfflineAnalysis.dll` / `DXToolsReporting.dll` pilha de análise do PIX
- `DXGIDebug.dll` (151KB) camada de depuração DXGI
- `d3d12SDKLayers.dll` (4.8MB) camadas de validação/depuração D3D12
- `d3d11_3SDKLayers.dll` (1.19MB) camadas de depuração D3D11
- `d2d1debug3.dll` (618KB) camada de depuração D2D
- `VSD3DWARPDebug.dll` (155KB) build de depuração do rasterizador de software WARP
- `plmdebug.exe` (204KB) depurador de PLM (ciclo de vida de processo)
**Streaming / Acesso Remoto:**
- `rdpbase.dll` (1.8MB) biblioteca base RDP
- `rdpserverbase.dll` (2.3MB) base do servidor RDP
- `XboxDevService.exe` (3.7MB) host do serviço de desenvolvimento Xbox
- `XboxDevService.ProxyStub.dll`
**Pilha Social / Plugins:**
- `DiscordPlugin.dll` (139KB) integração com Discord
- `TwitchPlugin.dll` (639KB) integração de streaming com Twitch
**Outros Notáveis:**
- `XboxSyntheticKM.dll` (36KB)
- `xrmntcl.exe` (90KB) cliente de montagem do Xbox Runtime
- `xtfupdateT_s_i.dll` (98KB) ?
- `xtcapi.dll` (57KB) API XTC (Comunicações de Título do Xbox?)
- `wusys.dll` (308KB) integração com o sistema do Windows Update
---
## 15. Pilha de GPU | Pipeline de Compilação de Shaders
O pipeline completo de compilação de shaders do Xbox Series S/X reside em M:\ e está ausente de C:\. Nenhuma compilação de shader é possível sem a sobreposição específica de hardware montada.
### 15.1 `newbe_xs.dll`
DLL de 26MB. Backend do compilador de shaders da GPU Arden. Apenas 6 exports:
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
A seção `.pass` pode sugerir um pipeline de passes no estilo LLVM. `NB_CreatePixDwarfApi` gera informações de depuração de shader em nível de fonte para o PIX.
### 15.2 `xbsc_xs.dll`
41 exports cobrindo a API de compilação completa:
XBSC_PipelineCompile / XBSC_GetPipelineCompileOutput
XBSC_CompileRootSignature / XBSC_GetCompiledRootSignature
XBSC_AssembleShader / XBSC_GetAssembledShader
XBSC_DisassembleHwPipeline / XBSC_DisassembleHwPipelineWithCallback
XBSC_DisassembleRawShader / XBSC_GetDisassembly
XBSC_GetRegPressure / XBSC_GetShaderStats / XBSC_DumpShaderStats
XBSC_CompressBuffer / XBSC_DecompressBuffer (shader cache compression)
XBSC_Serialize* / XBSC_Deserialize* (pipeline state serialization)
SCCompileMultiShadersXbox / SCDumpHwShader* (batch compilation)
SC_ConvertRootSignatureToSCInputs
As seções PE `_mmddu` e `_MMDDT0` contêm **Microsoft Machine-Dependent Driver Data** (Dados de Driver Dependentes da Máquina da Microsoft), tabelas de microarquitetura de hardware embutidas no compilador (latências de instrução, topologia do arquivo de registradores, contagens de unidades de execução para Arden).
### 15.3 `dxcompiler_xs.dll`
17.8MB. Fork do Xbox Series do compilador DXC HLSL. 4 exports:
DxcCreateInstance / DxcCreateInstance2 standard DXC factory (compatible with public API)
CreateXdxrCompiler / CreateXdxrCompiler2 Xbox DXIR compiler (Xbox-specific IR format)
### 15.4 `dxbc2dxil_xs.dll` Conversor de Bytecode
2.9MB. Export único:
SCDxil_ConvertDxbcToDxil convert DX11 DXBC bytecode to DXIL for DX12 pipeline
Permite que shaders DX11 com compatibilidade reversa sejam executados no pipeline Arden exclusivo para DX12.
### 15.5 Cadeia Completa de Compilação de Shaders
Game/App submits HLSL or legacy DXBC shader
↓
[HLSL path] [DXBC legacy path]
dxcompiler_xs.dll dxbc2dxil_xs.dll
(DxcCreateInstance -> DXIL) (SCDxil_ConvertDxbcToDxil -> DXIL)
↓ ↓
└──────────┬──────────────────┘
↓
xbsc_xs.dll (XBSC_PipelineCompile)
calls newbe_xs.dll NB_ backend
uses _MMDDT0 Arden microarch tables
↓
umd12ddi_arden.dll
(submits compiled ISA via D3D12 DDI)
uses xg_xs.dll for texture layout
↓
srakmd_arden.sys (kernel)
XvioGetReservedMemory -> hypervisor carve-out RAM
zero-copy framebuffer -> ERA partition
---
## 16. `xg_xs.dll` Biblioteca de Layout de Texturas Gráficas do Xbox
Localizada em **C:\** (não em M:\). Contém 27 exports cobrindo tiling de texturas, layout de BVH para ray tracing e compressão DCC.
### 16.1 Superfície de Exports
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 Principais Descobertas
**O layout de BVH para Ray Tracing é específico do hardware.** `XGCreateBVHComputer2` expõe uma API de layout de BVH de segunda geração, sugerindo que a arquitetura Arden possui um formato distinto de nó BVH que difere do DXR genérico.
**A compressão DCC da AMD está exposta.** `XGEncodeDCC` / `XGDecodeDCC` implementam a Delta Color Compression da AMD, a compressão sem perdas de framebuffer por hardware usada nas GPUs RDNA. `XGDecodeDCCSurface` é a API que o PIX usa ao ler de volta framebuffers capturados comprimidos com DCC.
**Tiling do DirectStorage.** `XGShuffleTextureBufferForDirectStorage` realiza o embaralhamento no lado da GPU que transforma o layout de textura em disco no formato de tiling de hardware Arden durante a descompressão pela GPU, permitindo carga zero-copy para a VRAM.
**`XGSetHardwareVersion` controla todos os algoritmos de layout.** A biblioteca contém implementações de layout para múltiplas revisões de hardware. Chamar `XGSetHardwareVersion` com o identificador do Series S em vez do Series X produz resultados de tiling diferentes, refletindo as diferentes larguras de barramento de memória e geometrias de cache.
### 16.3 Seção de Metadados de Build `.xbld`
`xg_xs.dll` contém uma seção PE `.xbld` ausente em todos os outros binários do Xbox, indicando que ela se origina de um pipeline de build de CI do GDK separado, em vez do sistema de build do sistema operacional Xbox. O sistema de build do SO zera os timestamps e remove seções de metadados; o CI do GDK não.
_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
O valor `edition_name` de **"April 2026 GXDK"** antecede o lançamento público dessa edição do SDK (no momento da escrita, é 9 de março de 2026), confirmando que o SO comercial é distribuído com componentes GDK compilados contra o próximo ciclo de SDK ainda não lançado. A versão `sdktype=260400` segue o padrão `YYMMRR` (Ano/Mês/Revisão).
O timestamp `edition_build` `0x65F41B62` decodifica para **13 de março de 2024**, mais de um ano antes da data do build do SO (12 de fevereiro de 2026), indicando que os algoritmos de layout de textura permaneceram estáveis e inalterados ao longo de pelo menos 5 ciclos de lançamento do GDK.
O `mscver=193833145.100` identifica o compilador como **MSVC 19.38** (Visual Studio 2022 17.8.x).
### 16.4 Inferência do Pipeline de 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
Isso significa que o `xg_xs.dll` nos consoles comerciais é idêntico, bit a bit, ao que os desenvolvedores recebem no GDK. A verificação de hash contra o lançamento público do GDK de abril de 2026 (quando disponível) confirmaria isso.
---
## 17. Modelo de Integridade de Código Trust-by-Catalog
### 17.1 Formato do Contêiner PE
Os arquivos `Catalog*.bin` em cada volume são **executáveis PE32+ com subsystem `0x11`** ("Xbox Code Catalog"), um subsystem não documentado e ausente em qualquer documentação pública. Principais características do cabeçalho 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)
Sobre como eles funcionam, não tenho certeza, o Xbox One
### 17.2 Cadeia de Confiança
Hypervisor/Host OS validates Catalog*.bin PE Authenticode signature at boot (FORCE_INTEGRITY)
↓
Catalog payload contains hashes of protected binaries on that volume
↓
Code Integrity checks each binary's hash against catalog at load time
↓
Individual binaries carry no Authenticode signatures of their own
Este é um modelo **trust-by-catalog**. Uma única assinatura da Microsoft cobre uma grande quantidade de arquivos por volume. Binários individuais e provavelmente outros tipos de arquivo não são assinados; sua integridade é garantida pela participação no catálogo.
**Contagem de entradas e dimensionamento:**
| Volume | Catálogo | Tamanho do payload | Entradas (÷32) |
|---|---|---|---|
| C:\ | Catalog000.bin | 5,533,696 bytes | 172,928 |
| C:\ | Catalog001.bin | 253,952 bytes | 7,936 |
| C:\ | Catalog002.bin | 57,344 bytes | 1,792 |
| C:\ | Catalog003.bin | 176,128 bytes | 5,504 |
| M:\ | Catalog000.bin | 5,537,792 bytes | 173,056 |
| M:\ | Catalog001.bin | 258,048 bytes | 8,064 |
| M:\ | Catalog002.bin | 61,440 bytes | 1,920 |
| M:\ | Catalog003.bin | 180,224 bytes | 5,632 |
O tamanho do payload de cada catálogo (dentro da seção PE) é exatamente divisível por 32 sem resto, e não é consistentemente divisível por 36, 40 ou outros tamanhos comuns de registro. Isso sugere fortemente que o payload é um array plano de **registros de 32 bytes**.
**Algoritmo de hash:** SHA-256 e SHA-1 de arquivo inteiro de binários conhecidos não foram encontrados nos catálogos, descartando hash simples de arquivo inteiro. O formato mais provável é **Authenticode page hashes**, o padrão de CI do Windows em que cada página alinhada de 4KB das seções mapeadas de um arquivo PE recebe hash individualmente. Isso produziria uma entrada de 32 bytes (SHA-256) por página por arquivo, explicando as grandes contagens de entradas (172.928 entradas apenas para C:\).
**Ordenação:** O payload não está ordenado por valor de hash. O esquema de ordenação não foi determinado; as possibilidades incluem ordenação por hash do caminho do arquivo, por pacote de instalação, por deslocamento de página dentro do conjunto de arquivos do volume, ou até mesmo por alguma característica do NTFS.
**Sem cabeçalho:** Os primeiros 128 bytes do payload não contêm magic ASCII reconhecível, nenhum campo inteiro pequeno que pudesse indicar contagem ou versão, e nenhuma estrutura consistente com um cabeçalho padrão. O array de hashes começa no byte 0 do payload, sem preâmbulo.
### 17.3 Aplicação Apenas no Momento do Carregamento
A aplicação da Integridade de Código é **apenas no momento do carregamento**. Uma vez que um binário passa pela verificação de hash do catálogo e as páginas são mapeadas na memória, a CI não tem mais envolvimento. A HVCI (Hypervisor-Protected Code Integrity), se ativa no SystemOS, fecharia a janela TOCTOU (Time-of-check to time-of-use) resultante, tornando as páginas de código carregadas somente leitura por hardware no nível das tabelas de páginas do hipervisor. **HVCI está confirmadamente desativada no SystemOS**, `IsSecureKernelRunning = 0x0` (ver Seção 18). A janela TOCTOU, portanto, está presente.
### 17.5 Componentes do Host OS
Dois drivers estão confirmadamente ausentes de todos os volumes de filesystem acessíveis e são carregados diretamente pelo Host OS antes da inicialização do SRA:
- `XVIO.SYS` núcleo de E/S virtual do Xbox (sem entrada de serviço no registro, não está em nenhum volume)
- `FLTMGR.sys` gerenciador de filtros
- `XSraFlt.sys` filtro SRA (a entrada de serviço existe, mas não há arquivo correspondente em nenhum volume)
Esses componentes existem totalmente fora do modelo de confiança do catálogo. Eles não podem ser adulterados mesmo com acesso total ao kernel do SystemOS, pois são mapeados pelo bootloader antes que o HostOS (que é pai do System OS) comece a carregar.
Informações sobre os componentes do Xbox One [podem ser encontradas aqui](https://xboxoneresearch.github.io/wiki/boot/vbi/); no entanto, não posso ter certeza total de que o HostOS não mudou até agora.
---
## 18. Status da HVCI
> **Impacto:** Com a HVCI desativada, a integridade de código é apenas no momento do carregamento. Uma vez que um binário é mapeado na memória, não há aplicação por hardware impedindo a modificação em memória. A janela TOCTOU descrita na Seção 17.3 está, portanto, aberta. O limite de segurança pretendido continua a depender inteiramente de o SystemOS não se comunicar com a ERA (GameOS).
`HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\KeyGuard\Status`
IsSecureKernelRunning = 0x0
O Secure Kernel (VTL1) não está em execução no SystemOS, confirmando que a HVCI não pode estar ativa. Esta é uma troca deliberada por desempenho: nenhum custo de VTL1 sobre a atividade do kernel no loop do jogo. O limite de segurança é a própria partição do hipervisor, não a proteção de memória dentro da partição. O modelo de integridade de código (Seção 17) é, portanto, apenas no momento do carregamento, sem proteção TOCTOU.
---
## 19. Namespace de IPC do Hipervisor sevpipe
Um namespace de dispositivo de named pipes personalizado do Windows (`\\.\sevpipe\`) que serve como espinha dorsal primária de IPC para toda a comunicação entre processos e entre partições específica do Xbox. Não é uma construção do hipervisor no nível de protocolo; por baixo, são semânticas padrão de named pipes do Windows, registradas sob um namespace de dispositivo personalizado para ocultá-lo das ferramentas normais de enumeração de pipes.
### 19.1 Inventário Completo de Pipes
EtxForwarder <- telemetry data
EtxForwarderToUploaderControl <- telemetry control
XrfsPipe <- cross-partition filesystem
ERASwapChainPipe <- ERA framebuffer (dynamic)
ERAPresentPipe <- ERA present signals (dynamic)
XvioAudioPipe <- ERA audio (dynamic)
XvioAudioEventPipe <- ERA audio events (dynamic)
XboxOneAudioStatePipe <- system audio state
XTF_SYSTEM_TO_TITLE <- XTF command channel (dynamic)
XTF_TITLE_TO_SYSTEM <- XTF response channel (dynamic)
CloudStreamingServer <- xCloud (dynamic)
\SEVPipe\epmapper <- Xbox RPC endpoint mapper
\SEVPipe\epmapperX <- extended RPC endpoint mapper
Os pipes dinâmicos só existem quando a ERA está ativa, uma sessão XTF está em execução ou o xCloud está transmitindo.
### 19.2 Mapa de Controle de Acesso
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 de 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` é específica do Xbox (`FileDescription: Xbox ETW Plus API`), versão `10.0.26100.7010`. Os exports de suspend/resume são provavelmente stubs em builds comerciais; três exports compartilham o mesmo RVA.
### 19.4 Captura de Tela RTSP do videoserver.exe (provavelmente um remanescente do [Xbox Dev Mode Companion](https://apps.microsoft.com/detail/9nblggh519cp))
Porta: 11442 (hardcoded no binário). Dependências:
Windows.Xbox.Graphics.Display.Internal.DisplayManager
Windows.Xbox.System.Internal.GameStreaming.GameStreamingAgent
Windows.Xbox.Media.Capture.ApplicationClipShell
**Descoberta-chave:** Não parece funcionar corretamente. Nenhum método foi encontrado para acessar o fluxo de vídeo de dentro ou de fora do console.
Caminhos/flags 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 / Esquema do Windows Update
O Xbox carrega o esquema completo de targeting do Windows Update, incluindo entradas de targeting `XBOXMOBILE` e caminhos de hive de registro `WCOS`, confirmando que o Xbox Series S é executado sobre a fundação Windows Core OS (WCOS) compartilhada com HoloLens e Surface Hub. O SO é um Windows 11 24H2 levemente personalizado, não um SO de plataforma construído especificamente.
---
## 20. Topologia de Partições do Hipervisor
`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\HvSocket\Addresses`
LocalAddress = {REDACTED_GUID} SystemOS partition GUID
ParentAddress = {REDACTED_GUID} null parent
O SystemOS pensa que é a **partição raiz** (falso; o Host OS é a raiz). A partição de jogo ERA é filha do SystemOS. O GUID da partição ERA não é exposto ao SystemOS através de nenhum caminho de registro acessível e pode ser randomizado.
### Endpoints Wildcard entre Partições do HvSocket
`HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\HvSocket\WildcardDescriptors`
Quatro GUIDs de serviço resolvidos via computação de SID de serviço SHA1:
| GUID | Serviço | Finalidade |
|------|---------|---------|
| `REDACTED_GUID` | DiagTrack | Pipe de telemetria 1 |
| `REDACTED_GUID` | DiagTrack | Pipe de telemetria 2 |
| `REDACTED_GUID` | RpcSs | RPC entre partições |
| `REDACTED_GUID` | EventLog | Encaminhamento de eventos entre partições |
DiagTrack, RpcSs e EventLog são cidadãos de primeira classe entre partições. A telemetria do jogo, chamadas RPC e eventos são canalizados da ERA para o SystemOS através de canais de socket de hipervisor dedicados, invisíveis para qualquer coisa em execução dentro da ERA.
---
## 21. Configuração de Gráficos
`HKLM\SYSTEM\CurrentControlSet\Control\GraphicsDrivers`
WddmVersion_Max = WddmVersion_Min = 0x9C4 (WDDM 2.5) pinned, not negotiated
DisableCcdDatabase = 1
DisableHpdHandling = 1
DisableUsingMonitorPowerForSimulatedMonitor = 1
DirectFlipMemoryRequirement = 0x40 (64MB)
PinnedMemoryLimit = 0x59 (89MB)
AdapterMPO_3 = 1 MPO tier 3 enabled
A versão do WDDM é fixada em vez de negociada; o pipeline de exibição é controlado pelo firmware e pelo hipervisor, sem envolvimento do WDDM no gerenciamento de monitores. O MPO tier 3 (`AdapterMPO_3`) é como o framebuffer do jogo na ERA e a interface do SystemOS são compostos sem um blit por software entre partições: cada superfície ocupa um plano separado de overlay por hardware.
---
## 22. WdApp.exe Gerenciador de Pacotes e Ferramenta de Ciclo de Vida de Aplicativos
`J:\tools\WdApp.exe` é um gerenciador de pacotes completo e gerenciador de ciclo de vida de aplicativos para a plataforma de aplicativos do Xbox. Superfície de comandos completa:| Comando | Finalidade |
|---------|------------|
| `install` | Transmitir um build empacotado de servidor web, compartilhamento de rede ou caminho local |
| `register` / `unregister` | Registrar/cancelar registro de pacotes de aplicativos de arquivos soltos |
| `registerdrive` | Registrar todos os aplicativos de uma unidade inteira de uma só vez |
| `registernetworkshare` | Instalar a partir de um compartilhamento de rede UNC com credenciais opcionais |
| `registerscratch` | Registrar a partir da unidade scratch de desenvolvimento |
| `registertitlescratch` | Registrar a partir da unidade scratch de título ERA |
| `launch` | Iniciar por AUMID, caminho do exe ou URI |
| `terminate` / `suspend` | Parar ou suspender um aplicativo em execução |
| `uninstall` | Desinstalar um aplicativo ou partes dele |
| `list` | Listar todos os aplicativos registrados |
| `listdlc` | Listar DLCs instalados |
| `move` / `copy` | Mover ou copiar um pacote |
| `movedrive` / `copydrive` | Mover ou copiar todos os pacotes de uma unidade |
| `applyconfig` | Iniciar o sistema operacional de jogo ERA com configurações especificadas ou um `game.config`/`.xvd` |
| `queryconfig` | Exibir o número de versão de 4 partes do sistema operacional de jogo em execução |
| `queryversioninfo` | Consultar a versão do sistema operacional de jogo para um pacote fornecido |
| `collectxip` | Coletar rastreamento XIP |
| `lastgamedetails` | Recuperar detalhes sobre o último jogo executado |
| `installkey` | Instalar uma chave no console |
| `installplan` | Instalar um plano no console |
| `overlayfolder` | Gerenciar pastas de sobreposição de pacotes |
### Descobertas notáveis
**`applyconfig [game.config | ERA.xvd]`** controle direto da inicialização da partição ERA pela linha de comando. Aceita uma imagem de disco XVD `.xvd` ou um arquivo de configurações `game.config`. Executado sem argumentos, inicia o sistema operacional de jogo usado mais recentemente. Em um sistema sem contexto de jogo anterior, isso retorna `0x87E50002` (facilidade ERA, nenhuma XVD encontrada).
**`/drive=Retail`** o comando `install` aceita `Retail`, `Development` e `Ext1-Ext7` como especificadores de unidade de destino, permitindo a instalação de pacotes diretamente na partição de armazenamento de varejo a partir do shell de desenvolvimento.
**`/WaitToExit`** em `launch` faz com que o WdApp possua o processo iniciado como pai e capture os códigos de saída. Os aplicativos do sistema rejeitam isso com `0x8D160121` (facilidade Xbox PLM, pai de ciclo de vida incorreto). Iniciar sem `/WaitToExit` é bem-sucedido, pois o ShellCoreService mantém a propriedade do ciclo de vida.
**Codificação AUMID de `launch`** os AUMIDs de aplicativos do sistema exigem codificação base64 correspondente ao padrão usado nos scripts QuickActions do `.xboxunattend`:```
WdApp.exe launch <base64(FamilyName!AppId)>
O servidor web do Device Portal (WebManagement.exe, PID 2344) serve seu frontend a partir de M:\windows\WebManagement\www\default\. O esquema completo da API REST está documentado em js\RestDocumentation.json (40KB).
Autenticação: HTTP Basic auth sobre HTTPS na porta 11443. As credenciais são o nome de usuário e o PIN do Device Portal definidos durante a ativação do modo dev.
Vários endpoints carregam flags de restrição que os desabilitam em consoles de modo dev de varejo:
Dumps de processo ao vivo em modo usuário (/api/debug/dump/usermode/live?pid=<pid>) são nonRestrictable e funcionam no modo dev de varejo.
Obtida via GET /api/resourcemanager/processes. Processos notáveis selecionados:
Três instâncias de xnetsharedservice.exe (PIDs 2032, 2764, 2844) rodam simultaneamente sob SYSTEM, sugerindo instâncias separadas de ponte de rede para diferentes canais entre partições.
eracontrol.exe com working set de 991KB sem nenhum jogo em execução confirma que ele é puramente orientado a eventos: mantém quase nenhum estado quando ocioso, despertando apenas em eventos de ciclo de vida da ERA.
Impacto: O volume
Deploy:\é restrito localmente ao acesso do userspace, mas essa restrição é contornada pelo caminho de compartilhamento de rede através da junçãoS:\Deployment\SoftwareDistribution\. Os rastreamentos ETL de atualização, o caminho do banco de dados WU e a URL do endpoint SLS (incluindo o identificador de plataforma e os pacotes de idioma instalados) são totalmente legíveis.
S:\Deployment\SoftwareDistribution\ é uma junção para o volume de dispositivo kernel oculto Deploy:\.
Duas sessões de atualização foram capturadas:
Sessão 1 — 9 de março de 2026, 18:25:23
DataStore.edb não existia (criado do zero nesta sessão)https://slscr.update.microsoft.com/SLS/{REDACTED_GUID}/x64/10.0.26100.7010/00x8024402C (sem internet). Nenhuma verificação de atualização foi concluída.Sessão 2 — 10 de março de 2026, 03:59:18
DataStore.edb existente0x8024402C03:59:24, 6 segundos depois que o serviço já havia falhado e abandonado a sessão04:09:19 com código de saída 0x240001Observação: Em ambas as sessões, a rede estava indisponível quando o serviço WU inicializou, fazendo com que ele abandonasse a verificação de atualização. Na sessão 2, a rede ficou online 6 segundos depois que o serviço já havia saído da fase de descoberta, sugerindo que o pipeline de atualização não tem nova tentativa de reconexão após a falha da verificação inicial de rede.
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 é o identificador de plataforma Xbox embutido em toda verificação de atualização. CH diminuiu de 928 para 19 entre as sessões, consistente com um contador de estado do catálogo que é redefinido quando o banco de dados é recriado.
[REDACTED] identificador de configuração do serviço Windows Update do Xbox, presente no subdiretório SLS\ e embutido em toda URL de solicitação SLS.
Caminhos de build internos do Azure DevOps vazados via instrumentação de depuração:
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\ é o caminho de workspace padrão de agente auto-hospedado do Azure DevOps. O cliente Windows Update do Xbox compartilha a origem com o Windows Update de desktop: é o mesmo codebase compilado para o alvo de plataforma Xbox.
O GUID de timer REDACTED_GUID foi definido na sessão 1 e sobreviveu à reinicialização até a sessão 2. Ele é armazenado fora do DataStore.edb (provavelmente no registro) e agenda a próxima verificação de atualização independentemente do ciclo de vida do banco de dados.
xbtplinkc.sys — Cliente de Transporte de Link XVIOA análise de imports revela toda a superfície da API de ring buffer XVIO e o mecanismo de tradução de 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 é a primitiva de memória compartilhada entre partições. A ERA entrega ao SystemOS um Endereço Físico de Convidado; o SystemOS chama essa função para obter um mapeamento utilizável. Esse é o mecanismo por trás da captura do GameDVR, da composição de framebuffer e do áudio entre partições.
xbtplinkc também importa XpalIsCapabilityEnabledByVm de xpalk.dll — o sufixo ByVm consulta o estado da capacidade no nível do hipervisor, não no nível do SO, confirmando que ele verifica se o próprio hipervisor habilitou a capacidade antes de prosseguir.
xrfs.sys — Xbox Runtime FilesystemDriver completo de filesystem NT. A análise de imports confirma que ele implementa semântica real de filesystem: Cache Manager (Cc*), I/O MDL, locks de arquivo (FsRtl*), construção de descritores de segurança, tabelas genéricas de árvore AVL para indexação de diretórios.
Imports distintivos principais:
FsRtlRegisterFileSystemFilterCallbacks
IoRegisterFileSystem
RtlCreateSecurityDescriptor / RtlCreateAcl / RtlAddAccessAllowedAce
XpalIsCapabilityEnabled
WppRecorder.sys in-memory ETW trace recorder
xrfs.sys não importa XVIO diretamente. Em vez disso, xbtplinkc.sys importa XvioTranslateXrfsGuestGpa; XRFS é a camada de filesystem, XVIO fornece a tradução de GPA por baixo dela.
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
Imports principais específicos do Xbox:
XCRDAPI.dll — controle direto de montagem de XVD:
XCrdSetEraLaunchMapping associates XVD content with ERA partition pre-launch
XCrdMountContentType mounts content categories into ERA
XCrdUnmount tears down ERA content mounts
XCrdOpenAdapter / XCrdCloseAdapter
XCrdQueryDevicePath / XCrdBuildPath
XCrdDeleteXVD
XCrdSuspendResumeIoBalancer
XCrdIsCorruptionError
XCrdFreeDevicePathBuffer
ntdll.dll
NtOpenPartition
RtlSetProcessIsCritical
RtlWaitForWnfMetaNotification / RtlPublishWnfStateData
NtQueryWnfStateData / NtDeleteWnfStateName
ext-ms-win-xblauth-console-l1-1-0.dll (delay-loaded):
XblaInitialize bootstraps Xbox Live auth identity into ERA partition
ext-ms-win-ntuser-rim-l1-1-0.dll (delay-loaded):
RIMAddInputObserver / RIMRemoveInputObserver intercepts raw controller input for ERA routing
SspiCli.dll:
LogonUserExExW creates user logon tokens for the ERA session
ext-ms-win-session-usermgr-l1-1-0.dll (delay-loaded):
UMgrOpenProcessHandleForAccess
RPCRT4.dll:
RpcServerInqCallAttributesW / I_RpcBindingInqLocalClientPID RPC caller identity verification
eraproxyapp.exe é o compositor do lado do SystemOS e a ponte de IPC entre a partição ERA e o shell. 339KB, substancialmente maior que eracontrol.exe (249KB).
Composição de framebuffer:
d3d11.dll: D3D11CreateDevice
dcomp.dll: DCompositionCreateDevice
AVRT.dll: AvSetMmThreadCharacteristicsW / AvSetMmThreadPriority / AvRevertMmThreadCharacteristics
eraproxyapp cria um dispositivo D3D11 e um dispositivo DirectComposition para compor o framebuffer da ERA no shell do SystemOS. A prioridade de thread multimídia AVRT garante entrega de quadros com baixa latência.
IPC entre partições via ALPC:
ntdll: NtAlpcConnectPort / NtAlpcAcceptConnectPort
NtAlpcSendWaitReceivePort
NtAlpcCreatePortSection / NtAlpcCreateSectionView
NtAlpcDeletePortSection / NtAlpcDeleteSectionView
NtAlpcDisconnectPort / NtAlpcCancelMessage
As seções de porta ALPC fornecem memória compartilhada com zero cópia. O framebuffer do jogo ERA não é copiado; ele é compartilhado via views de seção ALPC mapeadas simultaneamente em ambos os espaços de endereçamento.
Namespace privado (canal IPC seguro): CreatePrivateNamespaceW / OpenPrivateNamespaceW CreateBoundaryDescriptorW / AddSIDToBoundaryDescriptor / DeleteBoundaryDescriptor ClosePrivateNamespace bcrypt: BCryptGenRandom / BCryptHashData / BCryptCreateHash / BCryptFinishHash
eraproxyapp estabelece um namespace privado de objetos com um descritor de limite baseado em SID, um namespace de objetos nomeados visível apenas para ERA e SystemOS. BCrypt fornece material de chave aleatório para o limite.
Identidade do título e áudio: XboxLiveTitleId.dll: GetCurrentXboxLiveInfo identifies the running title xamapi.dll: XamApiDisableLayoutScaling ConsoleGlobalization.dll: GetConsoleGlobalizationInfo api-ms-win-audiocore-spatial-config-l1-1-0.dll: Create_SpatialAudioDevicePropertyReader
Named pipes:
CreateNamedPipeW / ConnectNamedPipe / DisconnectNamedPipe
XblAuthConsoleExt.dll — Identidade de Hardware e Autenticação (46 exports)Identidade do console:
XblaGetConsoleCert / XblaGetConsoleId / XblaGetConsoleSerialNumber
XblaGetDevkitType retail vs devkit detection
XblaGetXblSandbox Xbox Live environment (retail/preview/dev)
Identidade do título:
XblaGetXboxLiveTitleId
XblaGetTitleAttestation / XblaGetTitleConsoleGeneration
Criptografia:
XblaSignDigest sign with console private key
XblaGetAttestation / XblaGetTpmPcrAttestation fTPM PCR boot chain measurements
XblaProcessChallenge / XblaProcessSpToken
XblaGetTpmPcrAttestation confirma que o console realiza atestação completa da cadeia de boot. A Microsoft pode verificar criptograficamente o estado exato da sequência de boot quando um console autentica no Xbox Live.
xamapi.dll — Shim de Compatibilidade do Xbox Application Manager (24 exports)Substitui APIs Win32 padrão para aplicativos ERA que rodam no contexto do SystemOS:
ClipCursorOverride / GetClipCursorOverride
GetCursorPosOverride / SetCursorPosOverride
GetMonitorInfoWOverride / GetSystemMetricsOverride
XamApiDisableLayoutScaling / XamApiSetLayoutScaleOverride
AdjustDeviceIdMappingForKeyEventBefore / After
UserContextExtInitialize / SetToken / Cleanup
É assim que o SystemOS apresenta um ambiente de PC Windows convincente para componentes que esperam APIs padrão de exibição e entrada do Win32.
xboxsynthetickm.dll — Injeção de Entrada Sintética (M:, 12 exports)Localizado no volume de overlay de hardware M:\ (tratado como camada de hardware, não camada de aplicativo):
SyntheticInput_CreateKeyboard / CreateMouse / CreateMouseAbsolute
SyntheticInput_InjectKeyboardInput / InjectMouseInput
SyntheticInput_ReadKeyboardOutput
É assim que o xCloud converte pacotes de rede em eventos de entrada locais. O console não consegue distinguir entrada sintética de entrada física no nível de hardware.
xboxcloudstreaming.dll — Mecanismo de Streaming do xCloud (2 exports)GetCloudStreamManager
ShutdownCloudStreamManager
XboxLiveTitleId.dll — Detecção de Jogo em Tempo de Execução (12 exports)GetCurrentXboxLiveTitleId / GetCurrentXboxLiveInfo
GetProcessXboxLiveInfo / GetPackageXboxLiveInfo
AuthenticateSystemXboxLiveTitle
XBBlackbox.dll — Flight RecorderExport único: BlackboxServiceMain
XBCastRecv.dll — Receptor Miracast (22 exports)GetWiFiDirectDeviceCategoryForCurrentPlatform
IsMiracastReceiverStartAllowedWithoutApp
GetEdidForCurrentDisplayDevice
Xbox.Shell.Api.dll — Integração com o Shell (44 exports)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
O WinMD HDRGameCalibration surpreendentemente contém aparentemente o REGISTRO COMPLETO de contratos WinRT do Xbox, com mais de 100 contratos definindo toda a superfície de API WinRT proprietária disponível na plataforma.
Kinect como um contrato mantido. Windows.Kinect.KinectContract v1 está presente como um contrato de primeira classe não obsoleto, consistente com a pilha ativa (C:\Windows\System32\ht) e KinectSensorEnabled=true no WdConfig. A visão do Kinect é uma infraestrutura ativamente mantida mesmo em hardware sem um Kinect físico. O pipeline completo de orquestração (nuiservice.exe, KinectMediaSource.dll, três trilhas de inferência, roteamento de saída) está documentado na Seção 33.
Anúncios são infraestrutura interna. O fato de AdsContract ser um contrato Internal, e não uma API pública do SDK, significa que a entrega de anúncios está integrada ao SO no mesmo nível de autenticação e armazenamento, não como uma integração de SDK de terceiros.
Automação de testes no varejo. Windows.Xbox.TestAutomationContract acompanha as unidades de varejo, consistente com o fato de Windows.Xbox.TestAutomationContract ser acessível às ferramentas do modo desenvolvedor.
UserMgr2 é a conta de usuário interativa que possui a sessão ativa conectada. NTUSER.DAT está bloqueado (UserMgr2 está ativo). Principais descobertas do perfil:
| Caminho | Conteúdo |
|---|---|
ntuser.ini | 3 quebras de linha |
AccountPictures\UserImage.jpg |
As junções do Device Portal são resolvidas usando permissões de UserMgr2 em vez das permissões de DevToolsUser (ver Seção 1.2 e Pergunta Não Resolvida 12). UserMgr2 tem um nível de privilégio mais alto que DevToolsUser; UserMgr2 é o proprietário da sessão interativa, enquanto DevToolsUser é uma conta de acesso restrito para desenvolvedores.
nuiservice.exe (3.8MB, executando como SYSTEM, sempre ativo) é o processo de orquestração para toda a pilha de percepção Kinect/NUI. Ele hospeda três trilhas de inferência paralelas: corpo, rosto e áudio; cada uma executando como um pipeline de processamento separado, agendado cooperativamente por meio de um grafo de fibras e alimentado por quadros através de um pump IOCP apoiado por um dispositivo de inferência GPU D3D11.
nuiservice.exe
├── D3D11CreateDevice <- dispositivo de inferência GPU
├── IOCP frame pump <- despacho assíncrono de quadros
└── Fiber graph <- agendamento cooperativo de inferência de ML
A ingestão de quadros é tratada por KinectMediaSource.dll:
KinectMediaSource.dll
├── MFCreate2DMediaBuffer <- aloca quadros de imagem 2D (Media Foundation)
├── alignment.bin [10.7MB] <- LUT de transformação de coordenadas de profundidade -> 3D
├── alignment_color.bin [5.7MB] <- registro de profundidade/cor
├── DeviceIoControl->\\.\KinectSensorControl <- fala com PetraXC.sys
└── CoCreateInstance {9178b0a6} <- CLSID de autorregistro
alignment.bin (10.7MB) e alignment_color.bin (5.7MB) são tabelas de consulta pré-computadas para converter dados brutos do sensor de profundidade em coordenadas 3D do espaço mundial e para registrar pixels de profundidade em pixels de cor, respectivamente.
Modelos carregados de X:\ht\versions\{1.0.0|1.0.1|1.0.2}\ via vvtechs.dll (NuiVisionCreateFactory):
KinectMediaSource.dllModelos carregados de C:\Windows\System32\ht\ (ver Seção 3.3 para o inventário completo de modelos):
LogonUserExExW para o login automático baseado em rosto (ver Roteamento de Saída abaixo)Tratado por speechwov.dll:
speechwov.dll
├── SpeechWov_Create / UpdateAcousticModels
├── SpeechWov_ProcessRecognition
└── Output->eventos de palavra de ativação, eventos de reconhecimento de fala
speechwov.dll é um mecanismo de palavra de ativação e reconhecimento de fala. UpdateAcousticModels indica que o modelo acústico pode ser atualizado em tempo de execução (alterações no pacote de idioma ou na calibração do microfone). Esta é a infraestrutura de "Hey Cortana" / comandos de voz no nível do sistema.
O nuiservice.exe distribui os resultados de inferência por vários canais:
RtlCapabilityCheck é o mecanismo de controle de acesso: um processo deve possuir a capability NT apropriada para receber qualquer dado do NUI. Isso controla separadamente o acesso de títulos de jogos, do shell e de desenvolvedores.
O contrato WinRT Windows.Kinect.KinectContract v1 (ver Seção 31) é a superfície voltada para o varejo para o acesso de títulos de jogos a este pipeline.
Camera Sensor Hardware
└── ciumd_wddm.dll <- provavelmente driver de câmera em modo de usuário WDDM
└── PetraXC.sys (KinectSensorControl) <- WDF 1.11, desabilitado até o dispositivo chegar
└── \\.\KinectSensorControl
nuiservice.exe [sempre em execução, SYSTEM]
└── KinectMediaSource.dll->DeviceIoControl->\\.\KinectSensorControl
├── Trilha 1: vvtechs.dll (corpo)
├── Trilha 2: FaceDetector/FaceRecognition + modelos RF (rosto)
└── Trilha 3: speechwov.dll (áudio)
└──->WNF / LogonUserExExW / named pipe / RPC / State Repository
Pesquisa conduzida em um Xbox Series S de varejo em modo desenvolvedor. Todo o acesso foi feito por meio da infraestrutura de modo desenvolvedor fornecida pela Microsoft.
| Ferramenta | Finalidade |
|---|
| Windows Explorer | Compartilhamento de rede do Xbox (Instruções em https://XBOX:11443/#File%20explorer > Navegar) |
SSH (DevToolsUser + VS PIN) | Acesso de shell ao SystemOS |
mklink /J | Criação de junction NTFS para expor unidades por meio do compartilhamento de rede |
Device Portal (https://XBOX:11443) | API REST, navegador de arquivos, lista de processos, dumps ao vivo |
dumpbin /IMPORTS, dumpbin /EXPORTS | Análise estática de binários PE no compartilhamento de rede |
| Python | Script para automatizar a API REST |
| Phasor | Runtime de script para uso no Console (copiado via compartilhamento de rede, executado via SSH) baixar aqui |
reg query | Enumeração do registro a partir do shell SSH |
WdApp.exe | Gerenciador de pacotes e controle do ciclo de vida da ERA (enumeração de superfície de comandos) |
WdConfig.exe | Enumeração da API de configurações do console |
| Análise de rastreamento ETL | Pipeline do Windows Update via junction S:\Deployment\SoftwareDistribution\ |
| Dumps de processo ao vivo | GET /api/debug/dump/usermode/live?pid=<pid> |
| Ghidra | Análise de interfaces COM / drivers |
| IDA Pro | Grafos de chamada de DLLs complexas e interfaces COM |
| XboxTools | Minha própria coleção de utilitários para várias coisas |
| Namespace | URI base | Endpoints principais |
|---|
| App Deployment | /api/appx/packagemanager/ | install, uninstall, list packages, content groups |
| Device Manager | /api/devicemanager/ | full hierarchical device tree |
| Dump Collection | /api/debug/dump/ | live process dumps, bugcheck dumps, crash control |
| ETW | /api/etw/ | real-time ETW over WebSocket, provider enumeration |
| File Explorer | /api/filesystem/ | browse, upload, download, delete, rename |
| Networking | /api/networking/ | ipconfig |
| OS Information | /api/os/ | machine name, OS info |
| Performance | /api/resourcemanager/ | live process list with CPU/memory, system perf stats |
| Power | /api/power/ | battery, power schemes, sleep study reports |
| Remote Control | /api/control/ | restart, shutdown |
| Task Manager | /api/taskmanager/ | start/stop apps, kill processes |
| Bluetooth | /api/bt/ | enumerate, pair, connect audio devices |
| WiFi | /api/wifi/ | enumerate interfaces/networks, connect, disconnect |
| WER | /api/wer/ | enumerate and download Windows Error Reporting reports |
| WPR | /api/wpr/ | start/stop/download WPR performance traces, custom profiles |
| Flag | Endpoints afetados |
|---|
NoKernelDumps | Live kernel dump, bugcheck dump download |
NoUserModeDumps | Live process dump (by PID) |
NoBugcheckDumps | Bugcheck dump list/download/control |
NoWPRBootTracing | Boot-time WPR trace |
NoPowerSchemeAccess | Power scheme read/write |
| Arquivo | Tamanho | Finalidade |
|---|
RestDocumentation.json | 40KB | Complete machine-readable REST API schema |
workspace-definitions.js | 26KB | Portal workspace panel layout (secondary API index) |
common-xbox.js | 21KB | Xbox-specific portal additions over base Device Portal |
common.js | 56KB | Base Device Portal framework |
toolhost.js | 7.8KB | Tool hosting layer |
rest.js | 19KB | REST call construction library |
d3.js | 570KB | D3 data visualization |
konva.js | 676KB | Canvas rendering |
| PID | Imagem | Usuário | Observações |
|---|
| 156 | (oculto) | SYSTEM | 66MB working set, no image name visible |
| 1456 | xbdiagservice.exe | SYSTEM | Xbox diagnostics service |
| 1808 | EtwUploader.exe | SYSTEM | ETW telemetry uploader |
| 1832 | StorageManagement.exe | DefaultAccount | Xbox.StorageManagement UWP, IsRunning: false (suspended) |
| 1904 | ApplicationClipService.exe | SYSTEM | GameDVR clip management, 37MB working set |
| 2032 | xnetsharedservice.exe | SYSTEM | Cross-partition networking bridge |
| 2040 | NetworkTransferManagerService.exe | SYSTEM | Xbox content download manager |
| 2344 | WebManagement.exe | SYSTEM | Device Portal web server |
| 2416 | XUpdMgr.exe | SYSTEM | Xbox Update Manager |
| 2436 | PRProvisioningService.exe | NETWORK SERVICE | PlayReady provisioning service |
| 2460 | XNetConfig.exe | SYSTEM | Network configuration |
| 2468 | toolsautoexec.exe | SYSTEM | .xboxunattend script autoexec runner |
| 2572 | sihost.exe | DefaultAccount | Shell infrastructure host, 60MB working set |
| 2836 | XboxDevService.exe | SYSTEM | Xbox developer service host, 37MB |
| 3160 | xrun.exe | DefaultAccount | Shell-side game launch coordinator |
| 3256 | MicrosoftXboxSecurityClip.exe | SYSTEM | Runtime DRM verification host |
| 3600 | XboxUI.exe | DefaultAccount | Dashboard shell UI, 60MB working set |
| 3844 | xrfssvc.exe | SYSTEM | XRFS cross-partition filesystem service, 352KB (idle) |
| 3864 | xrmntcl.exe | SYSTEM | Xbox Runtime Mount client |
| 3888 | xtfrtservice.exe | SYSTEM | XTF runtime service |
| 4320 | Guide.exe | DefaultAccount | Xbox Guide (Xbox.Guide_2602.0.2602.11003), IsRunning: true |
| 4548 | eracontrol.exe | SYSTEM | ERA partition lifecycle manager, 991KB working set |
| 4660 | WWAHost.exe | DefaultAccount | Dev Home (Microsoft.Xbox.DevHome_1.0.2601.4001), IsRunning: true |
| 6524 | CastSrv.exe | DefaultAccount | Miracast cast service |
| Camada | Componentes |
|---|
| Conteúdo | XCRDAPI.dll (montagem/desmontagem/streaming de XVD) |
| Identidade | XblAuthConsoleExt.dll, XboxLiveTitleId.dll, pspsra.sys |
| DRM | MicrosoftXboxSecurityClip.exe, XCRDAPI.dll |
| ERA Control | eracontrol.exe (NtOpenPartition, XCRDAPI, XblaInitialize) |
| ERA Proxy | eraproxyapp.exe (ALPC, D3D11, DComp, namespace privado) |
| Entrada (local) | xviokbd.sys, xviomou.sys, XAccessoriesGip.dll (Pendragon) |
| Entrada (remota) | xboxcloudstreaming.dll, xboxsynthetickm.dll |
| Foco de Entrada | xviomonc.sys (impersonação) |
| NPFS? | VMNP.SYS Driver NPFS (Sistema de Arquivos de Pipe Nomeado? Sistema de Filtro?) também usado para impersonação do ERA |
| Host OS | xvmctrl.sys, XVIO.SYS, FLTMGR.sys (não está no sistema de arquivos) |
| FS entre partições | xrfs.sys, xbtplinkc.sys, xrmntcl.exe, xrfssvc.exe |
| Exibição | eraproxyapp.exe, xamapi.dll (substituições Win32), MPO nível 3 |
| GPU | umd12ddi_arden.dll, newbe_xs.dll, xbsc_xs.dll, xg_xs.dll |
| Áudio | XVMAudioServer.dll, XAudio2_8/9.dll, configuração de áudio espacial |
| Rede | xvnc.sys/xvncbus.sys (NIC virtual), NetXVmService |
| Diagnóstico | XBBlackbox.dll, xbdiagservice.exe, EtwUploader.exe, EtwPlus.dll (pipeline Etx) |
| Atualização | XUpdMgr.exe, cliente WU (wuauengcore.dll), volume Deploy:\ |
| Shell | Xbox.Shell.Api.dll, XboxUI.exe, Guide.exe, sihost.exe |
| Streaming | xboxcloudstreaming.dll, XBCastRecv.dll (Miracast) |
| Ferramentas de Dev | WebManagement.exe (Portal do Dispositivo), pilha XTF (132 arquivos), WdApp.exe, unattendedsetuphelper.exe |
| Compatibilidade | xamapi.dll (shim Win32), dxbc2dxil_xs.dll (DX11->DX12) |
| Visão / Kinect | nuiservice.exe (3.8MB, SYSTEM, orquestrador sempre ativo), KinectMediaSource.dll (ingestão de quadros, alignment.bin 10.7MB, alignment_color.bin 5.7MB), vvtechs.dll (NuiVisionCreateFactory, rastreamento corporal), speechwov.dll (palavra de ativação/rastreamento de fala), modelos Random Forest de rosto (FaceDetector.bin, FaceRecognition.bin, ExpressionRandomForest.model, +8 outros), 3 versões ativas (X:\ht\versions\) |
| Anúncios | AdsLauncher (app de sistema), Windows.Xbox.System.Internal.AdsContract (WinRT) |
| Legado (desabilitado) | Zurich (sintonizador de TV, vinculado ao XVIO), PetraXC / KinectSensorControl (WDF 1.11, desabilitado até o dispositivo Kinect chegar, alimenta KinectMediaSource.dll via \\.\KinectSensorControl) |
| Contrato | Versão | Notas |
|---|
Windows.Kinect.KinectContract | v1 | O Kinect provavelmente é suportado para compatibilidade retroativa de títulos |
Windows.Xbox.TestAutomationContract | A superfície de automação de testes acompanha o hardware de varejo | |
Windows.Xbox.System.Internal.AdsContract | O sistema de anúncios é um contrato WinRT interno | |
Windows.Xbox.System.Internal.CopyOnLan.CopyOnLanContract | Cópia de jogos em LAN, transferência de títulos pela rede local? | |
Windows.System.Internal.XboxLive.Auth.AuthContract | v2 | Superfície de autenticação interna do Xbox Live (separada das APIs públicas XBL) |
| Foto única de 1080x1080 da conta Microsoft, separada do sistema de gamerpic (ver Seção 3.2) |
AppData\Local\Packages\ | Apenas configurações de aplicativos de desenvolvimento com sideload presentes, os aplicativos de sistema do Xbox não usam caminhos de armazenamento LocalPackages UWP padrão |
| Canal | API | Finalidade |
|---|
| Transmissão em todo o sistema | RtlPublishWnfStateData | Publica o estado de corpo/rosto/áudio para todos os assinantes WNF |
| Login facial | LogonUserExExW | Aciona o login automático de usuário baseado em rosto |
| Pipe nomeado por app | Servidor de pipe nomeado + GetNamedPipeClientProcessId | Saída controlada por processo; verifica a identidade do chamador antes de entregar os dados |
| RPC por chamador | Servidor RPC + RpcServerInqCallAttributesW | Acesso autenticado por chamador aos resultados de inferência |
| Identidade persistente | State Repository (SRDictionaryToPropertySet) | Persiste a identidade reconhecida entre sessões |
| Portão de capability | RtlCapabilityCheck | Todo acesso à saída de inferência é controlado por verificação de capability NT |
| Consumidor | Notas |
|---|
| Xbox Shell | Adaptação de interface ciente de expressões |
Guide.exe | Acionador de login automático |
XboxUI.exe | Interface ciente de atenção/olhar |
| Títulos de jogos | Via contrato WinRT NuiVision (Windows.Kinect.KinectContract v1, varejo) |
| xCloud | o cliente de streaming recebe o estado do NUI |