Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
XboxSeries — 对 Xbox Series 架构的个人研究 | Kitploit
工具/GitHubGitHub/daniellmcguire/xboxseries
嵌入式系统安全静态分析动态分析 (沙盒)逆向工程调试器硬件安全二进制分析学习与教育固件分析
GitHubdaniellmcguire/xboxseries

XboxSeries

对 Xbox Series 架构的个人研究

查看仓库
5741个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

Xbox Series:内部架构研究

字段值
日期2026年3月9日-12日 + 2026年7月7日-?
硬件Xbox Series S(代号:Lockhart)
操作系统构建26100.7010.amd64fre.xb_flt_2602ge.260212-1010 + 26100.8561.amd64fre.xb_flt_2606ge.260609-2200
访问方式开发者模式 + SSH + REST API + NTFS 文件共享联接点

摘要

本报告是对 Xbox Series S 内部架构的静态与动态分析,完全通过微软官方的开发者模式基础设施进行。未使用任何漏洞利用或违反政策的行为;所有访问均处于个人开发者计划的允许范围内。

本文包含从用于游戏玩法的最高层组件,直至最低层系统驱动程序组件的详细信息。预计其中大部分细节同样适用于 Xbox One。


澄清

AI 被用来将大量初步研究(超过 200 份分析输出和超过 50 条随机笔记)快速整理成此文档。所有后续编辑均手工完成。

如果你认为本报告中任何一点不清楚、记录不足或有误,欢迎 私信我;如果你对我(第 12 节中的)问题有任何答案,那也很好。GUID 和其他常见模式已通过 pre-commit 钩子删除,以防我留下任何能识别我账户的信息。

我的很多工作都是基于假设,所以 可能 不准确,而且会随着我获得更多信息并查看更多二进制文件而改变。

出于你可能能猜到的原因,我在任何情况下都不会分享直接的二进制文件、反汇编输出,或任何被视为微软及其子公司知识产权的内容。

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

关键发现

存在一个已知 SRA/ERA 模型之外的主机操作系统驱动管理层,参见信任模型(第 4.2、17.5 节)。 XVIO.SYS 和 XSraFlt.sys 由虚拟机监控程序(通过 HostOS)在 Windows 初始化之前直接加载,并且在所有可访问卷上均不存在。即使拥有完全的内核访问权限,也无法篡改它们,这是主要的安全边界。

HVCI 被故意禁用(第 18 节)。 IsSecureKernelRunning = 0x0 确认安全内核(VTL1)未在运行。代码完整性仅在加载时执行,一旦二进制文件被映射,就会留下一个 TOCTOU 窗口。这是刻意的性能权衡;安全边界在于虚拟机监控程序分区,而非分区内的内存保护。

NTFS 联接点通过网络暴露了整个 SystemOS 文件系统(第 1.2 节)。 在 SSH shell 中执行一条 mklink /J 命令即可将 C:\ 或任何其他路径映射到 Device Portal 文件共享,从而使每个系统二进制文件无需开发者模式 PIN 之外的任何额外身份验证即可远程读取。

跨分区架构已几乎完全被映射(第 4、14、26-28 节)。 ERA 游戏分区仅通过虚拟机监控程序中介的通道与 SystemOS 通信:用于 I/O 的 XVIO 环形缓冲区、用于共享内存的 GPA 转换、用于 IPC 的 HvSocket,以及用于零拷贝帧缓冲区传递的 ALPC 端口区段,后者由父级 “Host OS” 授予。

Deploy:\ 联接点绕过了本地访问限制(第 25 节)。 Windows Update 卷只能通过网络共享(S:\Deployment\SoftwareDistribution\)访问,这可能是由于某处的一些差异(也许是 xrfssvc.exe?)。

大多数二进制文件只有描述字符串,直到今天我才知道这一点,因为我除了实际连接控制台外,没有使用 Windows 做其他任何事情。很多时候这些描述很无聊(例如 XVUH、XVMCTRL),但有时又非常具有描述性(例如 Durango Virtual XVNC Bus Driver、Xbox Remote File System Service)。

范围和限制

所有测试均在一台运行开发者模式的零售版 Xbox Series S 上进行。结果反映了许多构建版本,不过我最终会对这些构建进行 diff 并写出来。不同硬件版本(Series X、Xbox One)和固件版本之间,发现可能有所不同。有些内核级接口无法访问:实时内核转储被 NoKernelDumps 限制阻止,xvmctrl.sys 的 IOCTL 接口也未完全枚举。开放问题在第 12 节中跟踪。


方法

使用的工具

研究途径

访问是通过(官方未记录的,但有社区文档的)Dev Mode SSH 接口建立的。NTFS 联接点技术(第 1.2 节)将读取访问从 D:\DevelopmentFiles 暂存空间扩展到整个 C:\ 系统卷以及所有其他盘符卷。所有分析均为只读;未修改任何系统设置(未使用 WdConfig.exe set)。Xbox 可以直接通过 SSH shell 运行标准的 x86_64 Windows 控制台二进制文件(以 /MT 编译),这被用于在本地运行分析工具。

内核转储不可用:NoKernelDumps Device Portal 限制会在零售开发者模式下阻止它们。用户模式实时进程转储是可用的,并在相关情况下使用。


1. 远程访问

1.1 Shell 访问

Xbox 开发者模式支持 Visual Studio,这使用 SSH:

  • 用户名:DevToolsUser
  • 密码:Dev Home 中显示的 Visual Studio PIN

1.2 文件系统访问

位于 https://XBOX:11443 的 Device Portal 向 D:\DevelopmentFiles 暴露了一个隐藏的 NTFS 文件共享。从 SSH shell 中:```batch mklink /J D:\DevelopmentFiles\C C:\

root@kitploit:~
这会在开发者暂存空间与系统 C: 驱动器根目录之间创建一个联接点,将整个 SystemOS 文件系统作为可读的网络共享暴露在:

    \\XBOX\DevelopmentFiles\C

这使得可以从 PC 上直接通过网络对 Xbox 系统二进制文件运行诸如 `dumpbin` 之类的工具。

---

## 2. 操作系统标识

| 字段              | 值                |
|--------------------|-------------------|
| 产品名称           | Xbox Series S     |
| 操作系统版本       | SystemOS          |
| Windows NT 版本    | 10.0              |
| 内部版本号         | 26100             |
| 内部版本字符串     | `26100.8561.amd64fre.xb_flt_2606ge.260609-2200` |
| LCUVer             | `10.0.26100.8536` |
| 分支               | `xb_flt_2602ge`   |
| 构建日期           | 2026 年 6 月 9 日 |
| 体系结构           | x64               |
| UEFI 安全启动      | `NotCapable`      |
| 主机代号           | Lockhart          |
| 主机模式           | Default           |
| 沙盒 ID            | `XDKS.1`          |

该操作系统标识为 **SystemOS**,而非 Windows。构建分支 `xb_flt_2602ge` 似乎是 Windows 代码库的一个独立 Xbox“分支”,但仍与 Windows 11 非常相似。部分 Windows 系统二进制文件与其桌面对应文件逐位完全相同,使用相同的 MSVC 工具链构建,很可能源自相同的 UUP 程序包。这与尚不明确的“Host OS”是分开的。

### 2.1 注册表标识

多个 `CurrentVersion` 字段被有意冻结,与桌面 Windows 类似(本例中是为了与 Xbox One 游戏保持兼容):

| 键 | 值 | 备注 |
|-----|-------|-------|
| `CurrentVersion` | `6.3` | 内部报告为 Windows 8.1,出于兼容性考虑 |
| `BuildGUID` | | 已清零/擦除 |
| `InstallDate` | `0` | 无安装时间戳 |
| `EditionID` | `SystemOS` | 从不更新 |
| `ReleaseId` | `2009` | 冻结在 Windows 10 20H2 时代;从不递增 |

---

## 3. 卷布局

该主机暴露了 13 个驱动器号,其中大多数被推测为[与 Xbox One 一样完全是虚拟的](https://xboxoneresearch.github.io/wiki/operating-system/xbox-operating-system/)

| 驱动器 | 卷标 | 内容 | 备注 |
|-------|-------|----------|-------|
| `C:` | System Boot | Windows 操作系统文件 | 标准 SystemOS 分区 |
| `D:` | *(无)* | `DevelopmentFiles\` | 开发者模式暂存空间 |
| `G:` | *(无)* | `GameDVR_VideoBuffer` (272MB), `GameDVR_AudioBuffer` (16MB), `GameDVR_AudioBuffer_SysLoopback` (3MB) | 原始循环捕获缓冲区,ERA 与 SystemOS 之间的共享内存 |
| `J:` | Sys Tools | XTF 工具链、驱动程序、QuickActions | 参见第 5 节 |
| `M:` | Misc | 包含主机特定的 NTFS 覆盖层,用于库和驱动程序 | System OS 分区? |
| `N:` | *(无)* | `BlackBox\`, `EtwPlus\`, `CMS\`, `errorstrings\`, `usersettings\` | 诊断与遥测卷,参见第 3.2 节 |
| `Q:` | *(无)* | `Users\DevToolsUser\` | 用户主目录 |
| `S:` | *(无)* | `apps\`, `Clip\`, `Deployment\`, `Prefetch\`, `Microsoft\`, `ProgramData\` | 可能是 Host OS 卷(也包含默认应用和其他资源) |
| `T:` | *(无)* | `GameDVR\`, `Update\`, junctions to Harddisk16 | GameDVR 元数据 + 更新管道 |
| `U:` | *(无)* | `ShellState\`, `BackCompatLicenses\`, `UserDataCache\` | Shell 与用户状态 |
| `V:` | *(无)* | *(空)* | 用途未知 |
| `X:` | SystemAux | `Apps\`, `Catalog000.bin` (2.3MB) | 系统应用二进制文件:63 个应用,包括 `AdsLauncher`、`Xbox.DiscordComponent`、`Xbox.SingleUserProxy`、`Xbox.NTSCaptivePortal`、`Xbox.Xmap`、`Xbox.XboxIDP`,参见第 3.3 节 |
| `Y:` | SystemAuxF | `Apps\`, `Catalog000.bin` (6.5MB) | 辅助系统应用二进制文件 |

此外,存在未分配驱动器号的 `\\.\HarddiskVolume10`。还有一个隐藏的 WER(Windows 错误报告)卷,包含 `CrashDumps\`、`ReportArchive\`、`ReportQueue\` 和 `Temp\`。至少存在 **18 个物理磁盘设备对象**(`PhysicalDrive0` 至 `PhysicalDrive17`),它们都以内核对象形式存在,但无法从用户空间在原始层面访问。`HarddiskVolume16` 和 `HarddiskVolume18` 作为真实可访问的卷存在,但对 `DevToolsUser` 被阻止访问。

### 3.1 隐藏的内核设备路径

以下路径作为内核设备对象存在,但(通常)无法从用户空间访问:

- `\??\Deploy:\` Xbox 更新/部署管道卷(可通过网络共享 `S:\Deployment\` 上的联接点访问)

### 3.2 N:\ 诊断卷

`N:\` 上的几个目录被文件系统筛选器驱动程序在内核层面主动隐藏,它们对所有用户空间工具都显示为空,但已确认在运行时会被写入:

| 路径 | 状态 | 备注 |
|------|--------|-------|
| `N:\EtwPlus\` | **内核隐藏** | 内容被文件系统筛选器驱动程序隐藏 |
| `N:\BlackBox\` | 可访问 | 包含 Xbox 特定的 ETL 崩溃报告遥测数据 |
| `N:\errorstrings\en-US.json` | 可访问 | 完整的 Xbox 错误字符串数据库,包含 797 个条目,参见第 3.4 节 |
| `N:\usersettings\18\public\` | 可访问 | 全质量玩家图片以无扩展名 PNG 存储(1080×1080 RGBA,标准 PNG 格式) |

`N:\usersettings\18\public\` 将 `AppDisplayPic` 和 `GameDisplayPic` 都存储为无扩展名文件。SHA256 哈希确认它们逐字节完全相同——应用显示图片与玩家图片是同一文件,被写入两个路径。

### 3.3 X:\ SystemAux

`X:\ht\versions\` 包含一个活动的 Kinect 视觉堆栈,**三个版本同时**并排安装(1.0.0、1.0.1、1.0.2),总计 119MB。它们分别对应 `vvtechs.dll` 的构建版本 1.67MB->1.70MB->1.85MB。

**身体追踪机器学习模型**(每个版本目录下):

| 文件 | 大小 | 用途 |
|------|------|---------|
| `exemplardb.xmplr` | 36.7MB | 全身姿态样本数据库 |
| `FernsModel.bin` | 932KB | 深度关键点检测器(随机蕨类分类器) |
| `HeadPosition.mshdf` | 262–393KB | 头部关节点估计器(随版本而异) |
| `LSVMGripReleaseRight.gbd` | 7.5KB | 潜在 SVM 握持/释放分类器(右手) |

**面部追踪机器学习模型**(系统范围,`C:\Windows\System32\ht\`):

| 文件 | 大小 | 用途 |
|------|------|---------|
| `FaceDetector.bin` | 3.0MB | 在画面中定位人脸 |
| `FaceRecognition.bin` | 3.4MB | 深度/红外身份识别 |
| `FaceRecognition_Color.bin` | 5.9MB | 彩色通道身份识别 |
| `ExpressionRandomForest.model` | 150KB | 情绪分类器 |
| `EyeLeftRandomForest.model` | 55KB | 左眼状态 |
| `EyeRightRandomForest.model` | 65KB | 右眼状态 |
| `LookingAwayRandomForest.model` | 42KB | 视线/注意力检测 |
| `MouthOpenRandomForest.model` | 58KB | 嘴巴张开状态 |
| `MouthMovedRandomForest.model` | 35KB | 嘴唇运动 |
| `FacialHairIRRandomForest.model` | 126KB | 面部毛发(仅红外传感器) |
| `GlassesIRRandomForest.model` | 206KB | 眼镜检测(仅红外传感器) |

所有面部属性分类器都是**随机森林**模型。输出涵盖身份、表情、视线、嘴唇状态和外观属性。

该堆栈中的 `vvtechs.dll` 只导出一个函数:`NuiVisionCreateFactory`。它导入 `EtwPlus.dll` 和 `D3D11`,证实 Kinect 视觉管道在 GPU 上运行,并使用 Xbox 特定的遥测路径。这在未连接实体 Kinect 的硬件上也处于活动状态(另请参见第 6 节中的 `KinectSensorEnabled=true`,以及第 33 节中的完整 `nuiservice.exe` 管道)。

### 3.4 N:\errorstrings\en-US.json 错误代码数据库

797 条 Xbox 错误字符串条目。具有安全或架构意义的重要代码:

| 错误代码 | 字符串 | 备注 |
|------------|-----------------|-------|
| `0x887E0002` | D3D12.X runtime/driver mismatch | 确认 D3D12.X 是 Xbox 特定的 D3D12 变体,而非通用 D3D12 |
| `0x80A40406` | Enhanced Microsoft telemetry enabled in dev mode | 开发者模式明确让主机选择加入增强型遥测收集 |

---

## 4. 虚拟机监控程序架构

Xbox 使用基于 Hyper-V 的自定义虚拟机监控程序,运行两个分区:

- **SystemOS**,即 SRA 分区
- **ERA 分区**,即 GameOS / Title OS 执行环境

### 4.1 驱动程序堆栈

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

### 4.2 关键虚拟机监控程序驱动程序

| 驱动程序         | 大小    | 用途                                                              |
|-------------------|---------|----------------------------------------------------------------------|
| `xvmctrl.sys`     | 364KB   | VM 控制,主虚拟机监控程序接口,IOCTL 接口面                 |
| `XVIO.SYS`        | unknown | Xbox 虚拟 I/O,直接虚拟机监控程序 ABI(不在 SystemOS 文件系统上) |
| `xvioc.sys`       | unknown | XVIO 客户端,SystemOS 侧的 XVIO 接口                         |
| `xvbus.sys`       | 73KB    | 虚拟总线根 + HvSocket XVIO 提供程序                            |
| `hvsocket.sys`    | 185KB   | Hyper-V 套接字实现                                        |
| `VMNP.SYS`        | 106KB   | 名为“NPFS 驱动程序”,也处理模拟操作。                      |
| `Xrfs.sys`        | 135KB   | Xbox 文件系统驱动程序                                               |
| `XRmnt.sys`       | 49KB    | Xbox 挂载驱动程序                                                    |
| `XRo.sys`         | 95KB    | Xbox 只读筛选器                                                 |
| `VerifierExt.sys` | 274KB   | 驱动程序验证程序扩展                                            |

**关键发现:** `XVIO.SYS` 和 `xpalk.dll` **没有注册表服务条目**,并且**不存在于 SystemOS 文件系统中**。它们很可能在 SystemOS 启动之前由 Host OS 加载,完全在本地驱动程序模型之外。这才是真正的安全机制;即使拥有完整的 SystemOS 内核访问权限,这些组件也无法被篡改。

### 4.3 XVIO API 接口面(根据导入重构)

关于 XVIO 的信息[可以在这里找到](https://xboxoneresearch.github.io/wiki/development/xvio/xvio-overview/),但我无法确认自 Xbox One 以来情况是否发生了变化。

根据 `xvmctrl.sys`、`xviomonc.sys` 和 `srakmd_arden.sys` 对 `XVIO.SYS` 的导入:

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

`XvioRegisterGpaMdl` 与 SFR 函数构成了虚拟机监控程序的内存共享机制,即原始 RAM 和 GPU 帧缓冲页跨分区边界进行映射。

### 4.4 HvSocket 跨分区服务

`hvsocket.sys` 为跨分区套接字通信提供服务:

- `HvSocketGetPartitionConnections` / `HvSocketGetPartitionListeners` 枚举活动通道
- `HvSocketGetVmIdFromVmbusHandle` VMBus 句柄解析
- `HvSocketUpdateServiceTable` 所有跨分区服务的注册表

一个以 GUID 命名的 DLL `[REDACTED]_hvsocket.dll` 注册了一个 HvSocket 服务提供程序。由于该 GUID 具有可识别性风险,因此已被隐去。

四个通配符 HvSocket 端点 GUID 已通过 SHA1 服务 SID 计算解析,完整详情(包括 DiagTrack、RpcSs 和 EventLog 跨分区通道)参见第 20 节。

---

## 5. J:\ “Sys Tools” XTF / 开发者卷

> **影响:** `J:\` 卷存在于每台零售版 Xbox 上。在开发者模式下,除开发者模式 PIN 外,无需额外身份验证即可访问完整的 XTF 工具链。这包括远程调试、屏幕流式传输、PIX GPU 分析,以及并非面向最终用户访问的主机控制 API。

这是本研究最重要的发现。`J:\` 卷(卷标为“Sys Tools”)包含 **Xbox 工具框架(XTF)**,即 Microsoft 的内部开发套件工具链,显然它就这样存在于每台零售版 Xbox 上。完整枚举:整个卷共 **132 个文件,52MB**。

### 5.1 XTF 扩展注册表(`J:\tools\xtfextensions.txt`)

全部 20 个 XTF 扩展均以 COM CLSID 注册:

| DLL                        | CLSID            | 
|----------------------------|------------------|
| `XtfApplicationServer.dll` | `{10B16182-...}` |
| `XtfConsoleControl.dll` | `{5B45D0E0-...}` |
| `XtfConnectedStorage.dll` | `{9D610BBD-...}` |
| `XtfDebugMonitor.dll` | `{9141933C-...}` |
| `XtfDebugCaptureServer.dll` | `{F306F5C7-...}` |
| `XtfFileIO.dll` | `{8A8B4D4C-...}` |
| `XtfInput.dll` | `{7CC4D09B-...}` |
| `XtfPix.dll` | `{9BD151A3-...}` |
| `XtfGameStreaming.dll` | `{AA627F22-...}` |
| `XtfDiagInfo.dll` | `{FD21AC23-...}` |
| `XtfStressServer.dll` | `{6B5B0C75-...}` |
| `XtfSymbolProxyServer.dll` | `{69ABF3A1-...}`  |
| `XtfPerf.dll` | `{F82AF734-...}` |
| `XtfRemoteRun.dll` | `{D77FE8B8-...}` |
| `XtfUser.dll` | `{2E302BAA-...}` |
| `XtfAuditioning.dll` | `{B91F5206-...}` |
| `XtfCleanup.dll` | `{9CF818E5-...}` |
| `XtfCredentialsServer.dll` | `{8582A384-...}` |
| `XtfEventServer.dll` | `{749FDEFA-...}` |
| `XtfUpdateT_s.dll` | `{DCDD4E77-...}` |

### 5.2 Visual Studio 远程调试器(`J:\tools\debugmon\`)

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

包含 VS 2015 至 VS 2022 的带版本调试负载(`debugmondev14payload` 至 `debugmondev16payload`)。**三套 Visual Studio 远程调试器同时存在并已注册:VS2015、VS2017 和 VS2019**,它们共处于同一台零售版主机的文件系统上。

### 5.3 其他值得注意的工具

| 二进制文件 | 用途 |
|---|---|
| `agent-xbox.exe` (1.5MB) | 主 XTF 代理 |
| `xtfrtservice.exe` (1.3MB) | XTF 运行时服务宿主 |
| `xstudioserviceexe.exe` | Xbox Studio 服务 |
| `xperf.exe` | Xbox 性能分析器,存在且功能正常,但**无论使用何种工具,ETW 内核跟踪都被完全阻止**(参见第 5.5 节) |
| `videoserver.exe` (RTSP) | 独立 RTSP 屏幕流式传输服务器 |
| `wdapp.exe`, `wdconfig.exe` | Wave 调试器 / 配置工具 |
| `wdcapture.exe` | 截图/视频捕获 |
| `wdgamestream.exe` | 游戏流式传输控制 |
| `xboxnetapidiagsystem.exe` | Xbox Live 网络诊断 |
| `xbtp.dll` (503KB) | Xbox 宽带传输协议 |
| `xraytool.exe` | Xbox 主机性能工具(揭示了 Host OS 存在的事实) |
| `xstudioclient.dll` | Xbox Studio 客户端库 |
| `unattendedsetuphelper.exe` | 完整的主机管理工具包,参见第 5.6 节 |

### 5.4 QuickActions `.xboxunattend` 格式

`J:\QuickActions\` 包含 `.xboxunattend` 格式的自动化脚本。这些是通过 Device Portal 触发的普通 Windows 批处理脚本。可用的操作:

- `Capture_Screenshot.xboxunattend` 调用 `wdcapture.exe screenshot`
- `Capture_Video.xboxunattend`
- `Toggle_ConsoleMode.xboxunattend` 通过 `WdConfig.exe` 循环切换硬件仿真模式
- `Toggle_HDR.xboxunattend`
- `Toggle_Resolution.xboxunattend`
- `Launch_DevHome.xboxunattend` / `Launch_RetailHome.xboxunattend`
- `Suspend_Title.xboxunattend`

`Toggle_ConsoleMode.xboxunattend` 揭示了传递给 `WdConfig.exe` 的完整分析模式标识符列表:`AnacondaProfiling`、`LockhartProfiling` 和 **`Scarlett 40 GB`**。

### 5.5 xperf / WPR

`xperf.exe` 和 WPR 完整存在且功能正常,包括一个 `NeuralProcessing` WPR 配置文件。但是,所有 ETW 内核跟踪都会被两个不同的错误代码阻止:

| 错误代码 | 含义 |
|------------|---------|
| `0x80070005` | `Access denied`,标准的 Windows ACL 拒绝 |
| `0xc5585011` | `Xbox policy block`,**此代码不存在面向用户的错误字符串**(不在 `N:\errorstrings\en-US.json` 中) |

ETW 提供程序枚举显示,标准 ETW 命名空间中有 **零个 Xbox 特定提供程序**。所有 Xbox 遥测都通过 `EtwPlus.dll` 以 `Etx` 前缀函数流动,这是与标准 Windows ETW 完全独立的管道(参见第 19.3 节)。

### 5.6 unattendedsetuphelper.exe 主机管理工具

`unattendedsetuphelper.exe` 是一个主机管理可执行文件,涵盖:

- 工厂重置
- 基于网络的固件更新
- Toast/通知注入
- Device Portal 管理

它还是 `.xboxunattend` 脚本(第 5.4 节中记录的 QuickActions 格式)的运行时引擎。

---

## 6. WdConfig 设置接口面

`J:\tools\WdConfig.exe`(内部版本 `10.0.26100.7010`)公开了完整的主机配置 API。值得注意的设置:

### 调试类别

| 设置 | 值 | 备注 |
|---|---|---|
| `ConsoleType` | `Lockhart` | 硬件标识符 |
| `ConsoleMode` | `Default` | `AnacondaProfiling`、`LockhartProfiling`、`Scarlett 40GB` |
| `EraGraphicsDriverMode` | `Title Configured` | 选项:`Retail`、`Instrumented`、`Validated`。SRA 对应项为 `SraGraphicsDriverMode = Retail`,ERA 与 SRA 使用独立的驱动程序模式设置 |
| `EnableKernelDebugging` | `false` | 阻止 ERA 崩溃拆除,以便附加内核调试器 |
| `EnablePixMemory` | `false` | 在 Lockhart Profiling 模式下为 PIX 额外保留 6048MB |
| `CrashDumpType` | `None` | 选项:`Triage`、`Mini`、`Heap` |
| `TitlePerformanceOverlay` | `false` | 在运行中的游戏上叠加实时 GPU/CPU HUD |
| `ExtraTitleMemory` | `0` | 在 Lockhart Profiling 模式下最大为 6048MB |
| `LastShutdownReason` | `Console crash` | 跨重启持久化;我的主机在上次关机时发生崩溃 |
| `KinectSensorEnabled` | `true` | **在未连接 Kinect 的硬件上被设置为 true**;无论硬件是否存在,该堆栈都会被预配 |

### 网络类别

| 设置 | 值 | 备注 |
|---|---|---|
| `UseDebugNicForAllTraffic` | `false` | 存在一个独立的调试网卡,与零售网卡不同。 |

### 存储类别

| 设置 | 值 | 备注 |
|---|---|---|
| `DevkitUseRetailConnectedStorage` | `false` | 如果启用,开发者模式将使用零售版连接的存储分区。未测试。 |
| `RunFromPcDataCacheSizeInGB` | `100` | **默认预留 100GB 用于 Run-From-PC 游戏缓存;已锁定,用户无法更改** |

### 无人值守类别

| 设置 | 值 | 备注 |
|---|---|---|
| `AllowUsbUnattendScript` | `true` | USB 上的 `.xboxunattend` 脚本自动运行 |
| `RunUnattendScriptImmediately` | `false` | 如果为 true,USB 脚本将在启动时运行,且无取消提示 |

### 安全说明

**Microsoft 帐户电子邮件以明文存储。** 开发者模式的 WdConfig 存储区以明文形式包含关联的 Microsoft 帐户电子邮件地址。任何具有 SRA 访问权限的进程都可能读取到它。

---

## 7. XCRDAPI.dll Xbox 内容交付 API

`XCRDAPI.dll` 是 Xbox 平台的内容管理内核。它在单个库中处理 DirectStorage、渐进式安装、DRM、xCloud 和 Blob 存储。

### 7.1 DirectStorage

    DStorageGetFactory
    DStorageGetMappedControlPage

Xbox 的 DirectStorage 实现嵌入在 XCRDAPI 中,而不是单独的 SDK。

### 7.2 XVD 生命周期### 7.3 渐进式流式安装

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

完整且基于优先级队列的渐进式安装管道。区域是可寻址的游戏内容块。

### 7.4 XCloud 集成

    XCloudQueryFeatureBits
    XCloudSetFeatureBits

xCloud 流式传输功能标志与本地内容一样,通过同一 API 进行控制。

### 7.5 DRM / 证明

    XCrdQueryAttestationBlob
    XCrdQueryEncryptedInfo / XCrdQueryUnlockInfo
    XCrdIsSideloadedKeyPresent
    XCrdEnableSharedPls / XCrdSetExternalPlsMapping

### 7.6 存储 Blob 系统

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

### 7.7 XVD 传输管道

    XCrdXvdXferInitialize / Uninitialize
    XCrdXvdXferStart / Stop
    XCrdXvdXferRead
    XCrdXvdXferGetResult

### 7.8 路径系统

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

---

## 8. xpal.dll Xbox 平台抽象层(50 个导出)

此前未记录的可用于硬件身份、功能和电源管理的 API。

### 硬件身份

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

### 代次 / SKU 检测

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


### 功能标志

    XpalIsCapabilityEnabled
    XpalIsCapabilityEnabledByVm
    XpalIsFactorySettingEnabled
    XpalGetFactorySettings
    XpalGetCapabilities
    XpalIsFeatureEnabled


### 电源管理

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


### 配置

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


### ERA / 游戏 VM

    XpalQueryTitleVmInfo
    XpalWaitForTitleVmTermination
    XpalBackgroundActivityRequest

---

## 9. eracontrol.exe ERA 分区生命周期管理器

`C:\Windows\System32\eracontrol.exe` 以 LocalSystem 身份运行(手动启动),并管理完整的 ERA 游戏分区生命周期。完整导入分析见第 28 节。关键导入摘要:

- `NtOpenPartition` 直接打开 Hyper-V ERA 分区句柄
- `RtlSetProcessIsCritical` 将自身标记为关键进程(若崩溃会导致系统 BSOD)
- `XCRDAPI.dll` 通过 `XCrdSetEraLaunchMapping` 挂载/卸载游戏 XVD
- `RIMAddInputObserver` / `RIMRemoveInputObserver` 拦截原始控制器输入以路由至 ERA
- `XblaInitialize` 引导主机 Xbox Live 认证上下文
- `LogonUserExExW` 为 ERA 会话创建用户登录令牌
- `UMgrOpenProcessHandleForAccess` 用户管理器进程句柄访问
- `PsmQueryBackgroundActivationType` 后台激活状态

同一目录下还可以找到:`eraproxyapp.exe`(339KB),即 SystemOS 侧合成器,也是 ERA 与 Shell 之间的 IPC 桥接。完整导入分析见第 29 节。

---

## 10. BlackBox ETL 跟踪(N:\BlackBox\)

`N:\BlackBox\` 目录包含实时 ETW 飞行记录器跟踪。根据对捕获跟踪的分析:

**注意:** Xbox ETL 格式只能通过 'tracerp' 解析

### 内部源代码树路径(嵌入在调试检测中)

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

### Xbox Live 认证信赖方

    http://xdes.xboxlive.com/          Xbox Dev/Engineering Services
    http://xboxlive.com                Standard XBL
    http://mp.microsoft.com/           Microsoft Passport (MSA)
    http://instance.mgt.xboxlive.com   Instance/session management

### 捕获的崩溃

1. **`XboxUI.exe` BEX64** 仪表盘 Shell 在 `XboxUI.Data.dll` 偏移 `0x13eb0` 处触发栈缓冲区溢出(`STATUS_STACK_BUFFER_OVERRUN`,`0xc0000409`)
2. **`MoAppHang`** 包 `REDACTED_GUID` 的 UWP 应用挂起

---

## 11. 其他值得注意的发现

### Xbox 上存在 WSL

`LxssManager` 和 `lxcore` 服务存在,并带有 `LaunchProtected: 0x2`(受保护进程)和 `SeTcbPrivilege`。Xbox 上的 WSL 以操作系统级信任运行,根据其使用情况,几乎可以肯定在驱动某个功能,或至少以某种次要方式与 `Xbox.ConsoleXCloudPlayer`(xCloud 游戏流式传输客户端)相关。

wsl.exe 存在,但是**不可读取**。

### Xbox 独占的 System32 二进制文件

标准 Windows 中不存在的重要 DLL:

- `XCRDAPI.dll` 内容分发(见第 7 节)
- `XBBlackbox.dll` 飞行记录器(见第 30 节)
- `XBCastRecv.dll` Xbox Cast / Miracast 接收器(见第 30 节)
- `XVMAudioServer.dll` 跨分区 VM 音频服务器
- `Xbox.Shell.Api.dll` / `Xbox.Shell.OneStoreServices.dll` Shell API(见第 30 节)
- `XboxCommandService.dll` 命令/自动化
- `XboxUserSim.dll` UI 测试自动化
- `xboxgipsynthetic.dll` / `xboxsynthetickm.dll` 合成 GIP 虚拟控制器注入(见第 30 节)
- `AppXDeploymentExtensions.xbox.dll` Xbox 专用 AppX 部署
- `xvnapi.dll` Xbox 虚拟网络 API
- `xbsc_xs.dll` Xbox Series 着色器编译器(见第 16.2 节)

### 存在但未记录的服务

- `EraControlService` ERA 分区生命周期
- `XvdStreamSvc`(`xnetsharedservice.exe`)XVD 流式传输 / 渐进式安装
- `XUpdMgr` Xbox 更新管理器(以某种方式独立于 Windows Update?)
- `XSraFlt` Xbox SRA 筛选器驱动程序
- `Manufacturing Broker` 工厂预配置服务
- `TestSirepSvc` SIREP 内部测试协议
- `GameCoreController` GDK 游戏核心控制器服务
- `ConnectedStorage` Xbox 云存档服务
- `VideoManagerService` 视频输出管理
- `XBBlackbox` 飞行记录器服务
- `xbdiagservice` Xbox 诊断服务
- `XtfRtService` XTF 运行时服务

服务注册表中确认存在的其他旧版/底层驱动程序(见第 11.2 节):

- `Zurich` DVB 虚拟驱动程序

### `xvnc` / `xvncbus` Xbox 虚拟网卡

`xvnc.sys` 和 `xvncbus.sys` 是一个**虚拟网卡堆栈**,`xvnc` 服务枚举显示:

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

`xvncbus` 是一个 WDF 1.15 总线驱动程序,在物理无线适配器之上枚举虚拟网卡。ERA 分区不直接访问网络堆栈,而是通过拥有 `xvnc` 虚拟网卡层的 `NetXVmService` 进行通信。GUID `{e720983a-...}` 标识 Xbox 无线适配器硬件。

### `xviomonc.sys` XVIO 监视器客户端

管理显示分区焦点的启动时加载驱动程序(`Start: 0x1`)。导入分析:

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

`xviomonc` **不**处理帧缓冲数据,它只是一个信号和焦点管理驱动程序。`XvioSetFocus` 切换哪个分区拥有显示/输入焦点;`XvioGetCurrentPartitionId` 标识活动分区。实际的帧捕获由 `srakmd_arden.sys` 处理。

来自 `VMNP.SYS` 的 `NpSetupVmImpersonation` 允许监视器驱动程序在跨分区边界访问 ERA 显示资源时模拟 ERA 分区的安全身份。

### G:\ GameDVR 缓冲区

G:\ 上的三个文件是 ERA 与 SystemOS 之间共享的原始循环内存映射缓冲区:

- `GameDVR_VideoBuffer` 272MB 循环视频捕获
- `GameDVR_AudioBuffer` 16MB 游戏音频
- `GameDVR_AudioBuffer_SysLoopback` 3MB 系统/UI 音频(独立流)

---

## 11.1 注册表发现

### 仅开发套件可见的 K:\ 驱动器引用

`HKLM\SOFTWARE\Microsoft\Durango\XTF` 包含一个硬编码路径:

    K:\TDK\Tools\XtfJuno.dll

### `HKLM\SYSTEM\ResourcePolicyStore`

| 层级 | 内存预算 |
|------|--------------|
| `BackgroundSmall` | 40MB |
| `Background` | (标准后台) |
| `Balloon` | 5120MB |

CPU 策略层级:

| 策略 | CPU 分配 |
|--------|---------------|
| `Paused` | 1% |
| `SoftCapLow` | 10% |
| `SoftCapFull` | 100% |
| `HardCap0` | 0% - 完全冻结 |

**BeanHog 策略**(可能是前台游戏进程预算?):

- 内存:前台层级
- CPU:100%
- `DoNotKill`:true
- 优先级:最高重要性

---

## 11.2 Xbox One 遗留考古

来自 Xbox One 时代的三个驱动程序仍存留在 Series S 的服务注册表中。两个已禁用;一个正在运行。

### `Zurich` 电视调谐器解码器堆栈

`zurichs.sys` 是 Xbox One DVB 虚拟驱动程序。状态:**已禁用**,但仍已注册。

关键发现:`zurichs.sys` 导入了 `XVIO.SYS` 环形缓冲区。该电视调谐器在架构上被设计为通过 XVIO 虚拟机监控程序环形缓冲区传递其解码后的视频流。该调谐器还使用 `ZwUpdateWnfStateData` 通过 Windows 通知机制 (WNF) 发布调谐器状态。

### `PetraXC` Kinect 传感器控制设备

一个 WDF 虚拟设备驱动程序,现已确认为 **KinectSensorControl 设备**,即 Kinect 摄像头传感器的内核侧硬件抽象。状态:**在设备接入前保持禁用**(WDF 按需启动模型)。

值得注意的特征:

- 基于 **WDF 1.11** 构建,对应 Windows 8,表明其源自最初的 Xbox One 内核基线
- 导入 `XVIO.SYS`,意味着它通过虚拟机监控程序环形缓冲区传输进行通信
- 将其设备接口呈现为 `\\.\KinectSensorControl`,由 nuiservice 管道中的 `KinectMediaSource.dll` 通过 `DeviceIoControl` 使用(见第 33 节)

### `pspsra.sys` AMD PSP 到 SRA 的桥接

状态:**正在运行**(`Start: 0x0`,启动时加载)。在内核级别被拒绝访问,驱动程序被锁定,无法进一步检查。

`pspsra.sys` 在启动链中直接位于 SRA 分区之下,充当 **AMD 平台安全处理器 (PSP) 与 SRA 层之间的桥接**。AMD PSP 在裸机层面处理 fTPM 证明和主机证书,而 `pspsra.sys` 是将该信任链呈现到 SRA 中的桥接。这使得它与 `XVIO.SYS` 和 `XSraFlt.sys` 处于相同的信任层级,在 SystemOS 之前初始化,对 SystemOS 不透明,即使在完全内核访问下也无法触达。

---

## 12. 未解决的问题 + 驱动程序

问题:

1. **XVIO.SYS 位置** 不在任何可访问的文件系统上;由虚拟机监控程序在启动时加载
2. **WSL 用途** 已确认存在并被使用,但在 Xbox OS 中的具体作用未被完全映射
3. **`XCrdXpfOp`** 身份不明的 XCRDAPI 函数(XPF = ?)
4. **`XSraFlt.sys` + `XRmnt.sys` 位置** 已确认所有可访问文件系统上均不存在;由主机操作系统与 XVIO.SYS 一起加载
5. **`xvnc` GUID `{REDACTED_GUID}`** 无线适配器 GUID,完整驱动链未被映射
6. **`S:\Shares\TitleScratch` 重解析点目标** 在目录列表中被操作系统主动遮蔽;需要绕过 cmd.exe 层使用 `FSCTL_GET_REPARSE_POINT`。几乎可以肯定为 `\Device\Xrfs\<partition-guid>`(见第 26 节)
7. **`xvmctrl.sys` IOCTL 接口** 实时内核转储被阻止(零售开发模式下的 `NoKernelDumps` 限制);IOCTL 分发表尚未枚举
8. **ERA 分区 GUID** 未通过任何可访问的注册表路径暴露;在内核转储中可见(已被阻止,正在研究绕过方法)
9. **`N:\EtwPlus\` 内容** 被一个内核文件系统筛选器驱动程序主动隐藏;尽管已确认有写入活动,目录列表仍返回为空。筛选器驱动程序的标识尚未确定(见第 3.2 节)
10. 主机操作系统整体上,甚至不完全确定它做什么。

驱动程序:

1. **`xtcc.sys`**,鉴于其对 `ntoskrnl.exe` 和 `XVIO.sys` 的大量导入,很可能负责某些与安全相关的工作
2. **`FLTMGR.SYS`** 被 `XRmnt.sys`、`XRo.sys` 导入

---

## 13. 虚拟化 I/O 与远程访问(XVIO/SRA)

对 `xboxcloudstreaming.dll` 导出和 `CurrentControlSet\Services` 注册表项的分析显示,远程连接具备深入的内核级集成,采用“合成”硬件模型,而非标准软件模拟。无论输入来自何处(远程、USB、无线等),ERA VM 都会看到相同的合成设备。

### 13.1 XVIO(虚拟 I/O)堆栈

XVIO 框架似乎是将硬件级事件从外部或跨分区来源注入 SystemOS 的主要方法。

| 服务 | 类别 | 功能 |
| --- | --- | --- |
| `hvsocketxvio` | 传输 | 将 Hyper-V 套接字连接到 XVIO 协议的桥接服务。 |
| `InputXVIOClient` | 协调器 | 管理远程输入数据包到虚拟设备节点的映射。 |
| `xviokbdbus` / `xviomoubus` | 总线驱动程序 | 在合成内部总线上枚举虚拟 HID 设备。 |
| `xviokbd` / `xviomou` | 设备驱动程序 | 虚拟化键盘和鼠标的特定功能驱动程序。 |

### 13.2 合成控制器管道

`xboxcloudstreaming.dll` 二进制文件利用 `XboxgipSynthetic.dll` 来创建操作系统感知为物理连接的本地外设。

- **音频虚拟化:** 通过 `SyntheticController_AddAudioHeadset`,系统可以将远程网络音频作为硬件绑定设备接入主机的本地音频堆栈。
- **输入注入 (RIM):** 对远程输入管理器 (Remote Input Manager)(`ext-ms-win-ntuser-rim-l1-1-0.dll`)的使用证实,xCloud 和远程畅玩会话使用了与 Windows 远程桌面相同的高权限注入方法,具体为 `InjectKeyboardInput` 和 `InjectPointerInput`。

### 13.3 SRA 与 “Arden” 驱动程序

> **注意:** `SraKmdArden` 驱动程序是 Series X/S 架构(Arden)专用的硬件驱动。该驱动程序可能允许系统在内核级别拦截显示缓冲区,从而最大程度地减少通常与跨 VM 绘制相关的延迟开销。

### 13.4 HvSocket 桥接(GUID `4545ffe2-...`)

此前未识别的 HvSocket GUID 已与 `hvsocketxvio` 服务匹配。这确认 XVIO 不是独立协议,而是运行在 Hyper-V 内部套接字传输之上的一个层。

这表明 **ERA(游戏)分区**不直接通过输入与网络通信;而是:

1. **SystemOS** 通过 `XboxNetApiSvc` 接收网络数据包。
2. **`xboxcloudstreaming.dll`** 处理该流。
3. **`hvsocketxvio`** 通过 **HvSocket** 将原始输入数据跨分区边界传输。
4. 虚拟机监控程序/主机层将其作为硬件事件注入目标分区。

---

## 14. M:\ 卷 | 覆盖架构

M:\(标记为 “System OS Misc”)充当**覆盖卷**,其中包含一个组件树,这些组件挂载在基础 C:\ 映像之上。这种架构允许微软发布单一操作系统映像,并在挂载时通过覆盖层应用特定功能集。

### 14.1 卷结构

    M:\
    ├── Catalog000-003.bin     volume-specific code integrity catalogs
    └── windows\
        ├── system32\
        │   ├── drivers\       kernel drivers
        │   ├── ht\            Kinect support (see section 33)
        │   └── [~120 DLLs]    userspace components
        ├── SystemApps\        system apps
        ├── DefaultApp\
        ├── Fonts\
        ├── Speech_OneCore\
        ├── textinput\
        └── WebManagement\

### 14.2 文件系统符号链接

C:\ 通过 NTFS 符号链接引用 M:\ 组件。符号链接存在于两个层级:

**System32 驱动程序层:**

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

**Windows 目录层**

    C:\Windows\DefaultApp    -> M:\Windows\DefaultApp
    C:\Windows\Fonts         -> M:\Windows\Fonts
    C:\Windows\SystemApps    -> M:\Windows\SystemApps
    C:\Windows\WebManagement -> M:\Windows\WebManagement

M:\ 覆盖层比简单的驱动/DLL 替换更广泛,核心 Windows 子系统目录(包括字体存储、系统应用和 Web 管理界面)完全驻留在 M:\ 中。这可能意味着某个特定覆盖层不仅控制 GPU 和捕获驱动程序,还在一定程度上控制整个系统应用和 UI Shell 层。

尚未完成 C:\ 指向 M:\ 的符号链接的完整递归枚举。

### 14.3 硬件特定驱动程序(M:\windows\system32\drivers\)

| 驱动程序 | 大小 | 用途 |
|---|---|---|
| `srakmd_arden.sys` | 274KB | SRA 捕获 KMD -> Arden 硬件特定帧采集器 |
| `acpi.sys` | 873KB | ACPI -> 硬件特定构建(比通用版大) |
| `spaceport.sys` | 1MB | 存储端口 -> XVD 加密 + 许可证检查 |
| `spacedump.sys` | 304KB | 存储转储驱动程序 |
| `buttonconverter.sys` | 90KB | 电源/弹出 HID -> 主机事件转换 |
| `qwavedrv.sys` | 90KB | QoS/网络质量驱动程序 |
| `acpiex.sys` | 181KB | ACPI 扩展 |
| `AcpiDev.sys` | 61KB | ACPI 设备扩展 |
| `acpitime.sys` | 57KB | ACPI 定时器 |

**发现:** `XSraFlt.sys` 在 M:\ 驱动程序和 C:\ 中均不存在。它没有存储在任何可访问的文件系统卷上,表明它由主机操作系统在启动时与 `XVIO.SYS` 和 `FLTMGR.sys` 一起加载。

### 14.4 硬件特定用户态组件(M:\windows\system32\)

M:\ 独有的值得注意的 DLL/EXE:

**GPU / 着色器堆栈:**

- `umd12ddi_arden.dll` (1.56MB)  D3D12 用户模式驱动程序 DDI,Arden 硬件
- `umd12ddi_d.dll` (1.5MB)  D3D12 UMD,调试/PIX 插桩构建
- `umd12ddi_i.dll` (1.14MB)  D3D12 UMD,内置/回退构建
- `newbe_xs.dll` (26MB)  “NewBe” Arden GPU 着色器编译器后端
- `xbsc_xs.dll` (3.9MB)  Xbox Series 着色器编译器前端
- `dxcompiler_xs.dll` (17.8MB)  Xbox Series HLSL 编译器
- `dxbc2dxil_xs.dll` (2.9MB)  DXBC 到 DXIL 字节码转换器
- `pixrtddi.dll` (679KB)  PIX 渲染/调试 DDI

**开发人员 / PIX 工具链:**- `VsGraphicsRemoteEngine.exe`(4.75MB)PIX GPU 分析器远程引擎
- `VsGraphicsCapture.dll`(225KB)PIX 帧捕获
- `VsGraphicsExperiment.dll`(327KB)PIX 实验框架
- `DXCaptureReplay.dll`(18MB)GPU 捕获回放引擎
- `DXCap.exe`(1.19MB)GPU 捕获工具
- `DXToolsMonitor.dll` / `DXToolsOfflineAnalysis.dll` / `DXToolsReporting.dll` PIX 分析栈
- `DXGIDebug.dll`(151KB)DXGI 调试层
- `d3d12SDKLayers.dll`(4.8MB)D3D12 验证/调试层
- `d3d11_3SDKLayers.dll`(1.19MB)D3D11 调试层
- `d2d1debug3.dll`(618KB)D2D 调试层
- `VSD3DWARPDebug.dll`(155KB)WARP 软件光栅化器调试构建
- `plmdebug.exe`(204KB)PLM(进程生命周期)调试器

**流式传输 / 远程访问:**

- `rdpbase.dll`(1.8MB)RDP 基础库
- `rdpserverbase.dll`(2.3MB)RDP 服务器基础
- `XboxDevService.exe`(3.7MB)Xbox 开发服务宿主
- `XboxDevService.ProxyStub.dll`

**社交 / 插件栈:**

- `DiscordPlugin.dll`(139KB)Discord 集成
- `TwitchPlugin.dll`(639KB)Twitch 流式传输集成

**其他值得注意的:**

- `XboxSyntheticKM.dll`(36KB)
- `xrmntcl.exe`(90KB)Xbox Runtime Mount 客户端
- `xtfupdateT_s_i.dll`(98KB)?
- `xtcapi.dll`(57KB)XTC API(Xbox Title Communications?)
- `wusys.dll`(308KB)Windows Update 系统集成

---

## 15. GPU 栈 | 着色器编译管线

完整的 Xbox Series S/X 着色器编译管线位于 M:\ 上,C:\ 中不存在。没有硬件专属覆盖层挂载,就无法进行任何着色器编译。

### 15.1 `newbe_xs.dll`

26MB DLL。Arden GPU 着色器编译器后端。仅有 6 个导出:

    NB_CompileShader          编译单个着色器阶段
    NB_CompilePipeline        编译完整管线状态对象
    NB_CreateOptimizer        创建寄存器分配器 / 指令调度器
    NB_GetRegPressure         寄存器压力分析(面向 PIX)
    NB_GetShaderStats         硬件着色器统计
    NB_CreatePixDwarfApi      为 GPU 着色器生成 DWARF 调试信息

`.pass` 段可能暗示 LLVM 风格的 pass 管线。`NB_CreatePixDwarfApi` 为 PIX 生成源码级着色器调试信息。

### 15.2 `xbsc_xs.dll`

41 个导出,覆盖完整编译 API:

    XBSC_PipelineCompile / XBSC_GetPipelineCompileOutput
    XBSC_CompileRootSignature / XBSC_GetCompiledRootSignature
    XBSC_AssembleShader / XBSC_GetAssembledShader
    XBSC_DisassembleHwPipeline / XBSC_DisassembleHwPipelineWithCallback
    XBSC_DisassembleRawShader / XBSC_GetDisassembly
    XBSC_GetRegPressure / XBSC_GetShaderStats / XBSC_DumpShaderStats
    XBSC_CompressBuffer / XBSC_DecompressBuffer          (着色器缓存压缩)
    XBSC_Serialize* / XBSC_Deserialize*                  (管线状态序列化)
    SCCompileMultiShadersXbox / SCDumpHwShader*           (批量编译)
    SC_ConvertRootSignatureToSCInputs


`_mmddu` 和 `_MMDDT0` PE 段包含 **Microsoft Machine-Dependent Driver Data**,即编译器中内置的硬件微架构表(Arden 的指令延迟、寄存器文件拓扑、执行单元数量)。

### 15.3 `dxcompiler_xs.dll`

17.8MB。Xbox Series 版的 DXC HLSL 编译器分支。4 个导出:

    DxcCreateInstance / DxcCreateInstance2   标准 DXC 工厂(兼容公共 API)
    CreateXdxrCompiler / CreateXdxrCompiler2 Xbox DXIR 编译器(Xbox 专用 IR 格式)

### 15.4 `dxbc2dxil_xs.dll` 字节码转换器

2.9MB。单个导出:

    SCDxil_ConvertDxbcToDxil   将 DX11 DXBC 字节码转换为 DXIL 以用于 DX12 管线


允许向后兼容的 DX11 着色器在纯 DX12 的 Arden 管线上运行。

### 15.5 完整着色器编译链

    Game/App 提交 HLSL 或旧版 DXBC 着色器
                ↓
        [HLSL 路径]                    [DXBC 旧版路径]
    dxcompiler_xs.dll                dxbc2dxil_xs.dll
    (DxcCreateInstance -> DXIL)       (SCDxil_ConvertDxbcToDxil -> DXIL)
                ↓                             ↓
                └──────────┬──────────────────┘
                            ↓
                xbsc_xs.dll (XBSC_PipelineCompile)
                调用 newbe_xs.dll NB_ 后端
                使用 _MMDDT0 Arden 微架构表
                            ↓
                umd12ddi_arden.dll
                (通过 D3D12 DDI 提交编译后的 ISA)
                使用 xg_xs.dll 进行纹理布局
                            ↓
                srakmd_arden.sys(内核)
                XvioGetReservedMemory -> 虚拟机监控程序预留 RAM
                零拷贝帧缓冲 -> ERA 分区

---

## 16. `xg_xs.dll` Xbox 图形纹理布局库

位于 **C:\** 上(而非 M:\)。包含 27 个导出,涵盖纹理平铺、光线追踪 BVH 布局和 DCC 压缩。

### 16.1 导出面

    XGComputeBufferLayout
    XGComputeTexture1DLayout / 2DLayout / 3DLayout
    XGComputeOptimalSwizzleMode / OptimalDepthStencilSwizzleMode
    XGComputeTileShape
    XGSuggestSwizzleMode
    XGValidateDepthStencilSwizzleMode / XGValidateDescriptor
    XGCreateTexture1DComputer / 2DComputer / 3DComputer
    XGCreateTextureComputer / XGCreateTextureComputerFromDescriptor
    XGCreateBVHComputer / XGCreateBVHComputer2       光线追踪 BVH 布局
    XGEncodeDCC / XGDecodeDCC / XGDecodeDCCSurface   AMD Delta Color Compression
    XGShuffleTextureBufferForDirectStorage           面向 DirectStorage 的 GPU 端纹理平铺
    XGSetHardwareVersion                             针对 Series S 与 Series X 内存布局进行配置
    XGInitializeLibrary / XGTerminateLibrary
    XGEnableExclusiveLocking / XGEnterExclusiveLock / XGLeaveExclusiveLock

### 16.2 关键发现

**光线追踪 BVH 布局是硬件相关的。** `XGCreateBVHComputer2` 暴露了第二代 BVH 布局 API,表明 Arden 架构具有不同于通用 DXR 的独特 BVH 节点格式。

**暴露了 AMD DCC 压缩。** `XGEncodeDCC` / `XGDecodeDCC` 实现了 AMD 的 Delta Color Compression,即 RDNA GPU 上使用的硬件无损帧缓冲压缩。`XGDecodeDCCSurface` 是 PIX 在回读 DCC 压缩的捕获帧缓冲时使用的 API。

**DirectStorage 平铺。** `XGShuffleTextureBufferForDirectStorage` 执行 GPU 端混洗,在 GPU 解压缩期间将磁盘上的纹理布局转换为 Arden 硬件平铺格式,从而实现零拷贝加载到 VRAM。

**`XGSetHardwareVersion` 控制所有布局算法。** 该库包含针对多个硬件版本的布局实现。使用 Series S 与 Series X 标识符调用 `XGSetHardwareVersion` 会产生不同的平铺结果,反映不同的内存总线宽度和缓存几何结构。

### 16.3 `.xbld` 构建元数据段

`xg_xs.dll` 包含一个 `.xbld` PE 段,这是所有其他 Xbox 二进制文件中都没有的,表明它来自独立的 GDK CI 构建管线,而非 Xbox 操作系统构建系统。操作系统构建系统会将时间戳归零并剥离元数据段;GDK CI 则不会。

    _xbld_edition_build         = GXDK, 0x65F41B62
    _xbld_edition_full_productbuild = GXDK, 10.0.26100.7010
    _xbld_edition_sdktype       = GXDK, 260400
    _xbld_edition_name          = GXDK, April 2026 GXDK
    _xbld_edition_mscver        = GXDK, 193833145.100

`edition_name` 的值为 **"April 2026 GXDK"**,早于该 SDK 版本的公开发布时间(截至撰写本文时为 2026 年 3 月 9 日),证实零售操作系统随附的 GDK 组件是基于下一个未发布的 SDK 周期构建的。`sdktype=260400` 版本号遵循 `YYMMRR`(年/月/修订)模式。

`edition_build` 时间戳 `0x65F41B62` 解码为 **2024 年 3 月 13 日**,比操作系统构建日期(2026 年 2 月 12 日)早了一年多,表明纹理布局算法至少已经稳定且未修改地跨越了 5 个 GDK 发布周期。

`mscver=193833145.100` 将编译器标识为 **MSVC 19.38**(Visual Studio 2022 17.8.x)。

### 16.4 构建管线推断(UUP?)

    GDK CI 管线构建 xg_xs.dll(保留 .xbld 元数据)
                ↓
        ┌─────────────────────────┐
        ↓                         ↓
    Xbox OS 镜像直接               April 2026 GDK SDK 包
    摄取产物                       将相同二进制文件交付给开发者
        ↓
    随每台零售主机发布

这意味着零售主机上的 `xg_xs.dll` 与开发者在 GDK 中收到的二进制文件逐位相同。对照 April 2026 公共 GDK 版本(可用时)进行哈希验证可以证实这一点。

---

## 17. 基于目录的代码完整性模型

### 17.1 PE 容器格式

每个卷上的 `Catalog*.bin` 文件都是 **subsystem `0x11`**("Xbox Code Catalog")的 PE32+ 可执行文件,这是一个在任何公共文档中都不存在的未文档化子系统。关键 PE 头特征:

    Magic:          PE32+(64 位)
    Subsystem:      0x11  ("Xbox Code Catalog",取自 MSVC link.exe 中的字符串)
    Entry point:    0(从不执行)
    Code size:      0(无可执行代码)
    DLL Chars:      IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
                    IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY  <- 关键
                    IMAGE_DLLCHARACTERISTICS_NX_COMPAT
    Sections:       1 个未命名只读段(原始有效载荷)

至于这些如何工作,我不太确定,Xbox One

### 17.2 信任链

    虚拟机监控程序/宿主机 OS 在启动时验证 Catalog*.bin PE Authenticode 签名(FORCE_INTEGRITY)
                ↓
    目录有效载荷包含该卷上受保护二进制文件的哈希
                ↓
    代码完整性在加载时对照目录检查每个二进制文件的哈希
                ↓
    单个二进制文件自身不携带 Authenticode 签名

这是一种**基于目录的信任**模型。一个 Microsoft 签名覆盖每个卷上的大量文件。单个二进制文件以及可能其他文件类型都是未签名的;其完整性通过目录成员身份得到保证。

**条目数量与大小:**

| 卷 | 目录 | 有效载荷大小 | 条目数(÷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 |

每个目录的有效载荷长度(在 PE 段内)都能被 32 整除且无余数,但不能始终被 36、40 或其他常见记录大小整除。这强烈表明有效载荷是 **32 字节记录**的扁平数组。

**哈希算法:** 在目录中未找到已知二进制文件的整个文件 SHA-256 和 SHA-1,排除了简单的整文件哈希。最可能的格式是 **Authenticode 页面哈希**,即 Windows CI 标准,其中 PE 文件映射节的每个 4KB 对齐页面被单独哈希。这将为每个文件的每个页面生成一个 32 字节(SHA-256)条目,从而解释了庞大的条目数量(仅 C:\ 就有 172,928 个条目)。

**排序:** 有效载荷未按哈希值排序。排序方案尚未确定,可能包括按文件路径哈希排序、按安装包排序、按卷文件集内的页面偏移量排序,甚至按某种 NTFS 特性排序。

**无头部:** 有效载荷的前 128 个字节不包含可识别的 ASCII 魔数,没有可能指示计数或版本的小整数字段,也没有与标准头部一致的结构。哈希数组从有效载荷的第 0 字节开始,没有前导部分。

### 17.3 仅加载时强制

代码完整性强制是**仅加载时**的。一旦二进制文件通过目录哈希验证并将页面映射到内存中,CI 就不再参与。HVCI(虚拟机监控程序保护的代码完整性)如果在 SystemOS 上激活,将通过使已加载代码页在虚拟机监控程序页表级别上变为硬件只读,从而关闭由此产生的 TOCTOU(检查时间到使用时间)窗口。**已确认 HVCI 在 SystemOS 上关闭**,`IsSecureKernelRunning = 0x0`(见第 18 节)。因此 TOCTOU 窗口存在。

### 17.5 宿主机 OS 组件

已确认有两个驱动程序不在所有可访问的文件系统卷上,并由宿主机 OS 在 SRA 初始化之前直接加载:

- `XVIO.SYS` Xbox Virtual I/O 核心(无注册表服务条目,不在任何卷上)
- `FLTMGR.sys` 筛选器管理器
- `XSraFlt.sys` SRA 筛选器(服务条目存在,但任何卷上都没有对应文件)

这些组件完全存在于目录信任模型之外。即使拥有完整的 SystemOS 内核访问权限也无法篡改它们,因为它们由引导加载程序在 HostOS(System OS 的父级)开始加载之前映射。

关于 Xbox One 组件的信息 [可在此处找到](https://xboxoneresearch.github.io/wiki/boot/vbi/),但我不能完全确定 HostOS 至今未发生变化。

---

## 18. HVCI 状态

> **影响:** 由于 HVCI 关闭,代码完整性仅作用于加载时。一旦二进制文件被映射到内存中,就没有硬件强制措施可以阻止内存内修改。因此第 17.3 节所述的 TOCTOU 窗口是敞开的。预期的安全边界仍然完全依赖于 SystemOS 不与 ERA(GameOS)通信。

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

    IsSecureKernelRunning = 0x0

Secure Kernel(VTL1)未在 SystemOS 上运行,确认 HVCI 不可能处于活动状态。这是刻意的性能权衡,不收取游戏循环中内核活动的 VTL1 开销。安全边界是虚拟机监控程序分区本身,而不是分区内的内存保护。因此,代码完整性模型(第 17 节)仅作用于加载时,且没有 TOCTOU 保护。

---

## 19. sevpipe 虚拟机监控程序 IPC 命名空间

一个自定义的 Windows 命名管道设备命名空间(`\\.\sevpipe\`),作为所有 Xbox 特定的进程间和跨分区通信的主要 IPC 骨干。在协议层面并非虚拟机监控程序构造,底层是标准 Windows 命名管道语义,注册在自定义设备命名空间下以使其对常规管道枚举工具隐藏。

### 19.1 完整管道清单

    EtxForwarder                  <- 遥测数据
    EtxForwarderToUploaderControl <- 遥测控制
    XrfsPipe                      <- 跨分区文件系统
    ERASwapChainPipe              <- ERA 帧缓冲(动态)
    ERAPresentPipe                <- ERA 呈现信号(动态)
    XvioAudioPipe                 <- ERA 音频(动态)
    XvioAudioEventPipe            <- ERA 音频事件(动态)
    XboxOneAudioStatePipe         <- 系统音频状态
    XTF_SYSTEM_TO_TITLE           <- XTF 命令通道(动态)
    XTF_TITLE_TO_SYSTEM           <- XTF 响应通道(动态)
    CloudStreamingServer          <- xCloud(动态)
    \SEVPipe\epmapper             <- Xbox RPC 端点映射器
    \SEVPipe\epmapperX            <- 扩展 RPC 端点映射器

动态管道仅在 ERA 处于活动状态、XTF 会话正在运行或 xCloud 正在流式传输时存在。

### 19.2 访问控制映射

    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 遥测管线

    Process 调用 EtxEventWrite()
        ↓
    EtwPlus.dll
        ↓ 写入
    \\.\pipe\EtxUploader
        ↓
    EtwUploader.exe(PID 1808,SYSTEM)
        ↓ 转发到
    \\.\sevpipe\EtxForwarder          <- 数据
    \\.\sevpipe\EtxForwarderToUploaderControl  <- 控制
        ↓
    NetworkTransferManagerService.exe(PID 2040,SYSTEM)
        ↓
    [未知端点,动态库加载]
        ↑
    DevToolsUser 可以注入 EtxForwarder 并控制管道

`EtwPlus.dll` 是 Xbox 专用的(`FileDescription: Xbox ETW Plus API`),版本 `10.0.26100.7010`。挂起/恢复导出在零售构建上很可能是存根,三个导出共享同一个 RVA。

### 19.4 videoserver.exe RTSP 屏幕捕获(很可能是 [Xbox Dev Mode Companion](https://apps.microsoft.com/detail/9nblggh519cp) 的遗留物)

端口:11442(硬编码在二进制文件中)。依赖项:

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

**关键发现:** 似乎无法正常工作。尚未找到从控制台内部或外部访问视频流的方法。

硬编码路径/标志:

    DisableXboxDevToolsTelemetry     <- 用于抑制其遥测的环境变量
    VideoServerMaxPacketSize         <- 可通过环境变量配置
    EnableVideoServer                <- 已确认此处存在 WdConfig 标志
    OSDATA\...\DevkitProperties      <- 运行时读取开发套件属性

### 19.5 OneSettings / Windows Update Schema

Xbox 携带完整的 Windows Update 定向模式,包括 `XBOXMOBILE` 定向条目和 `WCOS` 注册表配置单元路径,证实 Xbox Series S 运行在与 HoloLens 和 Surface Hub 共享的 Windows Core OS(WCOS)基础上。该操作系统是轻度定制的 Windows 11 24H2,而非专门构建的平台操作系统。

---

## 20. 虚拟机监控程序分区拓扑

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

    LocalAddress  = {REDACTED_GUID}  SystemOS 分区 GUID
    ParentAddress = {REDACTED_GUID}  空父级

SystemOS 认为自己是 **根分区**(这是错误的,Host OS 才是根分区)。ERA 游戏分区是 SystemOS 的子分区。ERA 分区 GUID 未通过任何可访问的注册表路径暴露给 SystemOS,并且可能是随机化的。

### HvSocket 跨分区通配符端点

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

四个通过 SHA1 服务 SID 计算解析的服务 GUID:

| GUID | 服务 | 用途 |
|------|---------|------|
| `REDACTED_GUID` | DiagTrack | 遥测管道 1 |
| `REDACTED_GUID` | DiagTrack | 遥测管道 2 |
| `REDACTED_GUID` | RpcSs | 分区间 RPC |
| `REDACTED_GUID` | EventLog | 跨分区事件转发 |

DiagTrack、RpcSs 和 EventLog 是一等跨分区公民。游戏遥测、RPC 调用和事件通过专用的虚拟机监控程序套接字通道从 ERA 传输到 SystemOS,这些通道对 ERA 内部运行的任何内容都不可见。

---

## 21. 图形配置

`HKLM\SYSTEM\CurrentControlSet\Control\GraphicsDrivers`

    WddmVersion_Max = WddmVersion_Min = 0x9C4  (WDDM 2.5)固定,不进行协商
    DisableCcdDatabase                = 1
    DisableHpdHandling                = 1
    DisableUsingMonitorPowerForSimulatedMonitor = 1
    DirectFlipMemoryRequirement       = 0x40  (64MB)
    PinnedMemoryLimit                 = 0x59  (89MB)
    AdapterMPO_3                      = 1    MPO 第 3 级已启用

WDDM 版本是固定的而非协商的,显示管线由固件和虚拟机监控程序拥有,WDDM 不参与显示器处理。MPO 第 3 级(`AdapterMPO_3`)是 ERA 游戏帧缓冲与 SystemOS UI 在分区之间无需软件 blit 即可合成的方式:每个表面占据一个独立的硬件覆盖平面。

---

## 22. WdApp.exe 包管理器与应用生命周期工具

`J:\tools\WdApp.exe` 是 Xbox 应用平台的完整包管理器和应用生命周期管理器。完整命令面:| Command | Purpose |
|---------|---------|
| `install` | 从 Web 服务器、网络共享或本地路径流式安装打包构建 |
| `register` / `unregister` | 注册/注销松散文件应用包 |
| `registerdrive` | 一次性注册整个驱动器上的所有应用 |
| `registernetworkshare` | 从 UNC 网络共享安装,可指定凭据 |
| `registerscratch` | 从开发暂存驱动器注册 |
| `registertitlescratch` | 从 ERA 标题暂存驱动器注册 |
| `launch` | 通过 AUMID、exe 路径或 URI 启动 |
| `terminate` / `suspend` | 停止或挂起正在运行的应用 |
| `uninstall` | 卸载应用或其部分组件 |
| `list` | 列出所有已注册的应用 |
| `listdlc` | 列出已安装的 DLC |
| `move` / `copy` | 移动或复制包 |
| `movedrive` / `copydrive` | 移动或复制驱动器上的所有包 |
| `applyconfig` | 使用指定设置或 `game.config`/`.xvd` 启动 ERA 游戏 OS |
| `queryconfig` | 打印正在运行的游戏 OS 的 4 部分版本号 |
| `queryversioninfo` | 查询给定包的游戏 OS 版本 |
| `collectxip` | 收集 XIP 跟踪 |
| `lastgamedetails` | 检索有关最后运行游戏的信息 |
| `installkey` | 将密钥安装到主机 |
| `installplan` | 将计划安装到主机 |
| `overlayfolder` | 管理包覆盖文件夹 |

### 重要发现

**`applyconfig [game.config | ERA.xvd]`** 从命令行直接控制 ERA 分区启动。接受 `.xvd` XVD 磁盘镜像或 `game.config` 设置文件。不带参数运行时会启动最近使用的游戏 OS。在没有先前游戏上下文的系统上,这会返回 `0x87E50002`(ERA 功能,未找到 XVD)。

**`/drive=Retail`** `install` 命令接受 `Retail`、`Development` 和 `Ext1-Ext7` 作为目标驱动器说明符,从而允许从开发 shell 直接将包安装到零售存储分区。

**`/WaitToExit`** 在 `launch` 上使 WdApp 作为启动进程的父进程并捕获退出代码。系统应用会以 `0x8D160121`(Xbox PLM 功能,生命周期父进程错误)拒绝此操作。不带 `/WaitToExit` 启动时会成功,因为 ShellCoreService 保留生命周期所有权。

**`launch` AUMID 编码** 系统应用 AUMID 需要 base64 编码,匹配 `.xboxunattend` QuickActions 脚本中使用的模式。```
WdApp.exe launch <base64(FamilyName!AppId)>

23. Device Portal REST API

Device Portal Web 服务器(WebManagement.exe,PID 2344)从 M:\windows\WebManagement\www\default\ 提供其前端。完整的 REST API 架构记录在 js\RestDocumentation.json(40KB)中。

认证: 通过 HTTPS 端口 11443 进行 HTTP 基本认证。凭据为开发模式激活期间设置的 Device Portal 用户名和 PIN。

API 命名空间

限制标志

多个端点带有限制标志,在零售开发模式主机上禁用这些端点:

用户模式实时进程转储(/api/debug/dump/usermode/live?pid=<pid>)是 nonRestrictable(不可限制)的,在零售开发模式下可成功执行。

Device Portal 源文件树


24. 实时进程列表

通过 GET /api/resourcemanager/processes 获取。选定的值得注意的进程:

xnetsharedservice.exe 的三个实例(PID 2032、2764、2844)在 SYSTEM 下同时运行,表明不同的跨分区通道对应独立的网络桥接实例。

eracontrol.exe 的工作集为 991KB,在没有游戏运行时,这证实了它是纯事件驱动的,空闲时几乎不持有任何状态,仅在 ERA 生命周期事件时被唤醒。


25. Windows 更新管道(Deploy:\)

影响: Deploy:\ 卷在本地限制用户空间访问,但此限制可通过 S:\Deployment\SoftwareDistribution\ 联接的网络共享路径绕过。更新 ETL 跟踪、WU 数据库路径和 SLS 端点 URL(包括平台标识符和已安装语言包)均可完全读取。

S:\Deployment\SoftwareDistribution\ 是指向隐藏的 Deploy:\ 内核设备卷的联接。

ETL 跟踪分析

捕获了两次更新会话:

会话 1:2026 年 3 月 9 日 18:25:23

  • WU 服务冷启动,DataStore.edb 不存在(本次会话中全新创建)
  • 网络状态:启动时已断开
  • 尝试的 SLS 端点:https://slscr.update.microsoft.com/SLS/{REDACTED_GUID}/x64/10.0.26100.7010/0
  • 立即以 0x8024402C(无互联网)失败。未完成任何更新检查。

会话 2:2026 年 3 月 10 日 03:59:18

  • WU 服务启动,加载现有的 DataStore.edb
  • 网络状态:启动时已断开
  • 相同的 SLS 请求以 0x8024402C 失败
  • 网络在 03:59:24 上线,距服务失败并放弃会话已过去 6 秒
  • 服务空闲了 10 分钟,然后在 04:09:19 以退出代码 0x240001 干净地关闭
  • 两次会话均未完成任何更新检查

注意: 在两次会话中,WU 服务初始化时网络均不可用,导致其放弃更新检查。会话 2 在网络上线时,服务已退出发现阶段 6 秒,这表明更新管道在初始网络检查失败后没有重新连接重试机制。

SLS 端点 URL 结构

root@kitploit:~
https://slscr.update.microsoft.com/SLS/{SERVICE_GUID}/x64/{BUILD}/0
?CH=928          catalog hash / change counter (928 in session 1, 19 in session 2)
&L=en-US;...     31 installed language packs
&PT=0xc0         platform type: Xbox
&WUA=1451.2510.27012.0  Windows Update Agent version

PT=0xc0 是嵌入在每次更新检查中的 Xbox 平台标识符。CH 在两次会话之间从 928 降至 19,与目录状态计数器一致,该计数器在数据库重建时会重置。

服务配置 GUID

[REDACTED] Xbox Windows 更新服务配置标识符,存在于 SLS\ 子目录中,并嵌入到每个 SLS 请求 URL 中。

WU 客户端源代码树

通过调试插桩泄漏的内部 Azure DevOps 构建路径:

root@kitploit:~
C:\__w\1\s\src\Client\comapi\DiscoveryJob.cpp
C:\__w\1\s\src\Client\comapi\XxxJob.cpp
C:\__w\1\s\src\Client\lib\DownloadFile\DownloadSession.cpp
C:\__w\1\s\src\Client\Engine\handler\UHManager\uhmgr.cpp
C:\__w\1\s\src\Client\lib\util\fileutil.cpp
C:\__w\1\s\src\Client\lib\wusyshelper\wusyshelper.cpp

C:\__w\1\s\ 是标准 Azure DevOps 自托管代理工作区路径。Xbox Windows 更新客户端与桌面 Windows 更新共享源代码,它是针对 Xbox 平台目标编译的同一代码库。

持久计时器

计时器 GUID REDACTED_GUID 在会话 1 中设置,并在重启后保留到会话 2。它存储在 DataStore.edb 之外(可能在注册表中),并独立于数据库生命周期调度下一次更新检查。


26. 跨分区 I/O 栈驱动程序分析

xbtplinkc.sys XVIO 传输链路客户端

导入分析揭示了完整的 XVIO 环形缓冲区 API 接口和 GPA 转换机制:

root@kitploit:~
XvioAcquireRingBufferRundown / XvioReleaseRingBufferRundown
XvioSignalFlag
XvioWriteRingBuffer
XvioGetIncomingRingBufferAvailableBytes
XvioReadRingBufferEx
XvioInitialize
XvioGetRingBufferContext
XvioCreateRingBuffer
XvioGetReservedMemory           reserved hypervisor memory carve-out
XvioTranslateXrfsGuestGpa       translate ERA guest physical address for SystemOS access

XvioTranslateXrfsGuestGpa 是跨分区共享内存原语。ERA 向 SystemOS 提供一个来宾物理地址(Guest Physical Address);SystemOS 调用此函数以获得可用的映射。这是 GameDVR 捕获、帧缓冲合成和跨分区音频背后的机制。

xbtplinkc 还从 xpalk.dll 导入 XpalIsCapabilityEnabledByVm。ByVm 后缀在 hypervisor 级别(而非操作系统级别)查询能力状态,证实它在继续执行前会检查 hypervisor 本身是否已启用该能力。

xrfs.sys Xbox 运行时文件系统

完整的 NT 文件系统驱动程序。导入分析证实其实现了真正的文件系统语义:缓存管理器(Cc*)、MDL I/O、文件锁(FsRtl*)、安全描述符构建、用于目录索引的 AVL 树通用表。

关键区分性导入:

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

xrfs.sys 不直接导入 XVIO。相反,xbtplinkc.sys 导入 XvioTranslateXrfsGuestGpa;XRFS 是文件系统层,XVIO 在其之下提供 GPA 转换。

跨分区文件系统架构

root@kitploit:~
ERA game process
    ↓
ERA kernel / XVIO guest side
    ↓  [hypervisor shared memory / GPA translation via XvioTranslateXrfsGuestGpa]
SystemOS: xbtplinkc.sys  (ring buffer transport)
    ↓
SystemOS: xrfs.sys       (NT filesystem semantics)
    ↓
S:\Shares\TitleScratch   (junction, target redacted by OS)
    ↓
SystemOS userspace / shell

27. eracontrol.exe

关键的 Xbox 专用导入:

XCRDAPI.dll 直接 XVD 挂载控制:

root@kitploit:~
XCrdSetEraLaunchMapping   associates XVD content with ERA partition pre-launch
XCrdMountContentType      mounts content categories into ERA
XCrdUnmount               tears down ERA content mounts
XCrdOpenAdapter / XCrdCloseAdapter
XCrdQueryDevicePath / XCrdBuildPath
XCrdDeleteXVD
XCrdSuspendResumeIoBalancer
XCrdIsCorruptionError
XCrdFreeDevicePathBuffer

ntdll.dll

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

ext-ms-win-xblauth-console-l1-1-0.dll(延迟加载):

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

ext-ms-win-ntuser-rim-l1-1-0.dll(延迟加载):

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

SspiCli.dll:

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

ext-ms-win-session-usermgr-l1-1-0.dll(延迟加载):

root@kitploit:~
UMgrOpenProcessHandleForAccess

RPCRT4.dll:

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

28. eraproxyapp.exe

eraproxyapp.exe 是 SystemOS 侧的合成器,也是 ERA 分区与 Shell 之间的 IPC 桥。339KB,明显大于 eracontrol.exe(249KB)。

帧缓冲合成:

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

eraproxyapp 创建 D3D11 设备和 DirectComposition 设备,用于将 ERA 帧缓冲合成到 SystemOS Shell 中。AVRT 多媒体线程优先级确保低延迟帧投递。

通过 ALPC 的跨分区 IPC:

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

ALPC 端口区段提供零拷贝共享内存。ERA 游戏帧缓冲不会被拷贝,而是通过同时映射到两个地址空间的 ALPC 区段视图进行共享。

私有命名空间(安全 IPC 通道):

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

eraproxyapp 建立一个带有基于 SID 的边界描述符的私有对象命名空间,该命名空间仅对 ERA 和 SystemOS 可见。BCrypt 为边界提供随机密钥材料。

标题标识和音频:

root@kitploit:~
XboxLiveTitleId.dll:  GetCurrentXboxLiveInfo identifies the running title
xamapi.dll:           XamApiDisableLayoutScaling
ConsoleGlobalization.dll: GetConsoleGlobalizationInfo
api-ms-win-audiocore-spatial-config-l1-1-0.dll: Create_SpatialAudioDevicePropertyReader

命名管道:

root@kitploit:~
CreateNamedPipeW / ConnectNamedPipe / DisconnectNamedPipe

29. 其他 DLL 分析

XblAuthConsoleExt.dll 硬件标识与认证(46 个导出)

主机标识:

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

标题标识:

root@kitploit:~
XblaGetXboxLiveTitleId
XblaGetTitleAttestation / XblaGetTitleConsoleGeneration

加密:

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

XblaGetTpmPcrAttestation 证实主机执行完整的启动链证明。当主机向 Xbox Live 认证时,微软可以以加密方式验证启动序列的确切状态。

xamapi.dll Xbox 应用程序管理器兼容性填充层(24 个导出)

为在 SystemOS 上下文中运行的 ERA 应用覆盖标准 Win32 API:

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

这就是 SystemOS 向期望标准 Win32 显示和输入 API 的组件呈现可信 Windows PC 环境的方式。

xboxsynthetickm.dll 合成输入注入(M:\,12 个导出)

位于硬件覆盖卷 M:\ 上(被视为硬件层,而非应用层):

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

这就是 xCloud 将网络数据包转换为本地输入事件的方式。主机在硬件层面无法区分合成输入与物理输入。

xboxcloudstreaming.dll xCloud 流式传输引擎(2 个导出)

root@kitploit:~
GetCloudStreamManager
ShutdownCloudStreamManager

XboxLiveTitleId.dll 运行时游戏检测(12 个导出)

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

XBBlackbox.dll 飞行记录器

单个导出:BlackboxServiceMain

XBCastRecv.dll Miracast 接收器(22 个导出)

root@kitploit:~
GetWiFiDirectDeviceCategoryForCurrentPlatform
IsMiracastReceiverStartAllowedWithoutApp
GetEdidForCurrentDisplayDevice

Xbox.Shell.Api.dll Shell 集成(44 个导出)

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

控制器栈代号“Pendragon”

XAccessoriesGip.dll:

root@kitploit:~
PendragonGIP_SendGIPMessage
PendragonGIP_SetMessageCallback
PendragonGIP_Start / Stop

30. 完整系统架构总结

整体架构

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

驱动程序初始化(基于目前已有信息的假设)

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

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

ERA 启动序列(假设)

  1. eracontrol.exe: NtOpenPartition - 打开 ERA hypervisor 分区句柄
  2. eracontrol.exe: XCRDAPI XCrdSetEraLaunchMapping - 将 XVD 与分区关联
  3. eracontrol.exe: XCRDAPI XCrdMountContentType - 将游戏内容挂载到 ERA
  4. eracontrol.exe: XblaInitialize - 将 Xbox Live 身份预配到 ERA
  5. eracontrol.exe: LogonUserExExW - 创建 ERA 会话用户令牌
  6. eracontrol.exe: RIMAddInputObserver - 开始将控制器输入路由到 ERA
  7. eraproxyapp.exe: ALPC 端口区段 - 建立零拷贝帧缓冲通道
  8. eraproxyapp.exe: CreatePrivateNamespaceW - 建立安全 IPC 命名空间
  9. eraproxyapp.exe: D3D11 + DComp - 准备帧缓冲合成器
  10. ERA 分区启动游戏

调用流程(假设)ERA Game Process needs GPU memory:

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

全栈映射


31. WinRT 契约注册表

HDRGameCalibration WinMD 出人意料地包含了看似完整的 Xbox WinRT 契约注册表——100 多个契约,定义了平台上可用的所有第一方 WinRT API 接口。

值得注意的契约

影响

Kinect 作为受维护的契约。 Windows.Kinect.KinectContract v1 以未弃用的一等契约形式存在,与活动堆栈(C:\Windows\System32\ht)以及 WdConfig 中的 KinectSensorEnabled=true 一致。即使在没有物理 Kinect 的硬件上,Kinect 视觉也是积极维护的基础设施。完整的编排管线(nuiservice.exe、KinectMediaSource.dll、三条推理轨道、输出路由)在第 33 节中记录。

广告是内部基础设施。 AdsContract 是 Internal 契约而非公共 SDK API,这意味着广告投放与身份验证和存储处于同一层级内置于操作系统中,而不是第三方 SDK 集成。

零售版上的测试自动化。 Windows.Xbox.TestAutomationContract 随零售版设备一同提供,与开发者模式工具可访问 Windows.Xbox.TestAutomationContract 的事实一致。


32. UserMgr2

UserMgr2 是拥有当前已登录交互式会话的用户帐户。NTUSER.DAT 已锁定(UserMgr2 处于活动状态)。以下是该配置文件的关键发现:

配置文件结构

路径内容
ntuser.ini3 个换行符
AccountPictures\UserImage.jpg一张 1080x1080 微软帐户照片,与玩家图片系统分开(见第 3.2 节)
AppData\Local\Packages\仅存在旁加载的开发应用配置,

权限说明

设备门户的连接点使用 UserMgr2 权限而非 DevToolsUser 权限解析(见第 1.2 节和未解决问题 12)。UserMgr2 拥有比 DevToolsUser 更高的权限级别;UserMgr2 是交互式会话所有者,而 DevToolsUser 是受限的开发者访问帐户。


33. nuiservice.exe Kinect 视觉管线

nuiservice.exe(3.8MB,以 SYSTEM 身份运行,常驻)是整个 Kinect/NUI 感知栈的编排进程。它承载三条并行推理轨道:身体、人脸和音频;每条轨道作为独立的处理管线运行,通过纤程图协同调度,并由基于 D3D11 GPU 推理设备的 IOCP 泵输送帧。

架构

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

输入:KinectMediaSource.dll

帧摄取由 KinectMediaSource.dll 处理:

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

alignment.bin(10.7MB)和 alignment_color.bin(5.7MB)是预先计算好的查找表,分别用于将原始深度传感器数据转换为 3D 世界空间坐标,以及将深度像素配准到彩色像素。

身体跟踪

模型通过 vvtechs.dll(NuiVisionCreateFactory)从 X:\ht\versions\{1.0.0|1.0.1|1.0.2}\ 加载:

  • **输入:**来自 KinectMediaSource.dll 的深度帧
  • **输出:**骨骼关节点、头部位置、手部状态(握持/松开)
  • 三个版本目录同时存在;活动版本在运行时选择

人脸

模型从 C:\Windows\System32\ht\ 加载(完整模型清单见第 3.3 节):

  • **输入:**深度、红外和彩色帧
  • **输出:**身份(是谁)、表情(情绪)、注视方向(注意力方向)、嘴唇状态(张开/移动)、外貌属性(眼镜、胡须)
  • 身份输出直接馈入 LogonUserExExW,用于基于人脸的自动登录(见下文输出路由)

音频

由 speechwov.dll 处理:

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

speechwov.dll 是唤醒词和语音识别引擎。UpdateAcousticModels 表示声学模型可以在运行时更新(语言包或麦克风校准更改)。这是系统级别的“Hey Cortana”/语音命令基础设施。

输出路由

nuiservice.exe 通过多个渠道分发推理结果:

RtlCapabilityCheck 是访问控制机制:进程必须持有相应的 NT 能力才能接收任何 NUI 数据。这会分别门控游戏标题访问、Shell 访问和开发者访问。

消费者(通过 WNF 订阅)

WinRT 契约 Windows.Kinect.KinectContract v1(见第 31 节)是游戏访问此管线的零售面向接口。

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

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

研究在开发者模式的零售版 Xbox Series S 上进行。所有访问均通过微软提供的开发者模式基础设施完成。

下载工具
工具用途
Windows ExplorerXbox 网络共享(说明见 https://XBOX:11443/#File%20explorer > 浏览)
SSH(DevToolsUser + VS PIN)对 SystemOS 的 Shell 访问
mklink /J创建 NTFS 联接点,以通过网络共享暴露驱动器
Device Portal(https://XBOX:11443)REST API、文件浏览器、进程列表、实时转储
dumpbin /IMPORTS、dumpbin /EXPORTS通过网络共享对 PE 二进制文件进行静态分析
Python用于自动化 REST API 的脚本
Phasor可在控制台上使用的脚本运行时(通过网络共享复制,通过 SSH 运行)在此下载
reg query从 SSH shell 枚举注册表
WdApp.exe包管理器和 ERA 生命周期控制(命令接口枚举)
WdConfig.exe控制台设置 API 枚举
ETL 跟踪分析通过 S:\Deployment\SoftwareDistribution\ 联接点分析 Windows Update 管道
实时进程转储GET /api/debug/dump/usermode/live?pid=<pid>
GhidraCOM 接口 / 驱动分析
IDA Pro复杂 DLL 和 COM 接口的调用图
XboxTools我自己收集的各种实用工具
命名空间基础 URI关键端点
应用部署/api/appx/packagemanager/安装、卸载、列出程序包、内容组
设备管理器/api/devicemanager/完整的层级设备树
转储收集/api/debug/dump/实时进程转储、bugcheck 转储、崩溃控制
ETW/api/etw/基于 WebSocket 的实时 ETW、提供程序枚举
文件资源管理器/api/filesystem/浏览、上传、下载、删除、重命名
网络/api/networking/ipconfig
操作系统信息/api/os/计算机名、操作系统信息
性能/api/resourcemanager/带 CPU/内存的实时进程列表、系统性能统计
电源/api/power/电池、电源方案、睡眠研究报告
远程控制/api/control/重启、关机
任务管理器/api/taskmanager/启动/停止应用、终止进程
蓝牙/api/bt/枚举、配对、连接音频设备
WiFi/api/wifi/枚举接口/网络、连接、断开
WER/api/wer/枚举并下载 Windows 错误报告
WPR/api/wpr/启动/停止/下载 WPR 性能跟踪、自定义配置文件
标志受影响的端点
NoKernelDumps实时内核转储、bugcheck 转储下载
NoUserModeDumps实时进程转储(按 PID)
NoBugcheckDumpsBugcheck 转储列表/下载/控制
NoWPRBootTracing启动时 WPR 跟踪
NoPowerSchemeAccess电源方案读/写
文件大小用途
RestDocumentation.json40KB完整的机器可读 REST API 架构
workspace-definitions.js26KB门户工作区面板布局(辅助 API 索引)
common-xbox.js21KB基于基础 Device Portal 的 Xbox 专用门户扩展
common.js56KB基础 Device Portal 框架
toolhost.js7.8KB工具托管层
rest.js19KBREST 调用构建库
d3.js570KBD3 数据可视化
konva.js676KBCanvas 渲染
PID映像用户备注
156(hidden)SYSTEM66MB 工作集,映像名称不可见
1456xbdiagservice.exeSYSTEMXbox 诊断服务
1808EtwUploader.exeSYSTEMETW 遥测上传器
1832StorageManagement.exeDefaultAccountXbox.StorageManagement UWP,IsRunning: false(已挂起)
1904ApplicationClipService.exeSYSTEMGameDVR 剪辑管理,37MB 工作集
2032xnetsharedservice.exeSYSTEM跨分区网络桥接
2040NetworkTransferManagerService.exeSYSTEMXbox 内容下载管理器
2344WebManagement.exeSYSTEMDevice Portal Web 服务器
2416XUpdMgr.exeSYSTEMXbox 更新管理器
2436PRProvisioningService.exeNETWORK SERVICEPlayReady 预配服务
2460XNetConfig.exeSYSTEM网络配置
2468toolsautoexec.exeSYSTEM.xboxunattend 脚本自动执行运行器
2572sihost.exeDefaultAccountShell 基础设施主机,60MB 工作集
2836XboxDevService.exeSYSTEMXbox 开发者服务主机,37MB
3160xrun.exeDefaultAccountShell 侧游戏启动协调器
3256MicrosoftXboxSecurityClip.exeSYSTEM运行时 DRM 验证主机
3600XboxUI.exeDefaultAccount仪表板 Shell UI,60MB 工作集
3844xrfssvc.exeSYSTEMXRFS 跨分区文件系统服务,352KB(空闲)
3864xrmntcl.exeSYSTEMXbox 运行时挂载客户端
3888xtfrtservice.exeSYSTEMXTF 运行时服务
4320Guide.exeDefaultAccountXbox 指南(Xbox.Guide_2602.0.2602.11003),IsRunning: true
4548eracontrol.exeSYSTEMERA 分区生命周期管理器,991KB 工作集
4660WWAHost.exeDefaultAccountDev Home(Microsoft.Xbox.DevHome_1.0.2601.4001),IsRunning: true
6524CastSrv.exeDefaultAccountMiracast 投射服务
层次组件
内容XCRDAPI.dll(XVD 挂载/卸载/流式传输)
身份XblAuthConsoleExt.dll、XboxLiveTitleId.dll、pspsra.sys
DRMMicrosoftXboxSecurityClip.exe、XCRDAPI.dll
ERA 控制eracontrol.exe(NtOpenPartition、XCRDAPI、XblaInitialize)
ERA 代理eraproxyapp.exe(ALPC、D3D11、DComp、私有命名空间)
输入(本地)xviokbd.sys、xviomou.sys、XAccessoriesGip.dll(Pendragon)
输入(远程)xboxcloudstreaming.dll、xboxsynthetickm.dll
输入焦点xviomonc.sys(模拟)
NPFS?VMNP.SYS NPFS 驱动(命名管道文件系统?过滤系统?)也用于 ERA 模拟
主机 OSxvmctrl.sys、XVIO.SYS、FLTMGR.sys(不在文件系统上)
跨分区文件系统xrfs.sys、xbtplinkc.sys、xrmntcl.exe、xrfssvc.exe
显示eraproxyapp.exe、xamapi.dll(Win32 覆盖)、MPO 第 3 层
GPUumd12ddi_arden.dll、newbe_xs.dll、xbsc_xs.dll、xg_xs.dll
音频XVMAudioServer.dll、XAudio2_8/9.dll、空间音频配置
网络xvnc.sys/xvncbus.sys(虚拟网卡)、NetXVmService
诊断XBBlackbox.dll、xbdiagservice.exe、EtwUploader.exe、EtwPlus.dll(Etx 管线)
更新XUpdMgr.exe、WU 客户端(wuauengcore.dll)、Deploy:\ 卷
ShellXbox.Shell.Api.dll、XboxUI.exe、Guide.exe、sihost.exe
串流xboxcloudstreaming.dll、XBCastRecv.dll(Miracast)
开发工具WebManagement.exe(设备门户)、XTF 堆栈(132 个文件)、WdApp.exe、unattendedsetuphelper.exe
兼容性xamapi.dll(Win32 垫片)、dxbc2dxil_xs.dll(DX11->DX12)
视觉 / Kinectnuiservice.exe(3.8MB,SYSTEM,常驻编排器)、KinectMediaSource.dll(帧摄取、alignment.bin 10.7MB、alignment_color.bin 5.7MB)、vvtechs.dll(NuiVisionCreateFactory、身体跟踪)、speechwov.dll(唤醒词/语音跟踪)、人脸随机森林模型(FaceDetector.bin、FaceRecognition.bin、ExpressionRandomForest.model,另有 8 个)、3 个活动版本(X:\ht\versions\)
广告AdsLauncher(系统应用)、Windows.Xbox.System.Internal.AdsContract(WinRT)
旧版(已禁用)Zurich(电视调谐器,与 XVIO 关联)、PetraXC / KinectSensorControl(WDF 1.11,在 Kinect 设备接入前保持禁用,通过 \\.\KinectSensorControl 向 KinectMediaSource.dll 提供数据)
契约版本备注
Windows.Kinect.KinectContractv1Kinect 可能为游戏向后兼容提供支持
Windows.Xbox.TestAutomationContract测试自动化接口随零售硬件一同提供
Windows.Xbox.System.Internal.AdsContract广告系统是内部 WinRT 契约
Windows.Xbox.System.Internal.CopyOnLan.CopyOnLanContract局域网游戏复制、本地网络游戏传输?
Windows.System.Internal.XboxLive.Auth.AuthContractv2内部 Xbox Live 身份验证接口(与公共 XBL API 分开)
Xbox 系统应用不使用标准 UWP LocalPackages 存储路径
渠道API用途
系统级广播RtlPublishWnfStateData向所有 WNF 订阅者发布身体/人脸/音频状态
人脸登录LogonUserExExW触发基于人脸的自动用户登录
每应用命名管道Named pipe server + GetNamedPipeClientProcessId按进程门控输出;在交付数据前验证调用者身份
每调用者 RPCRPC server + RpcServerInqCallAttributesW每调用者经身份验证的推理结果访问
持久身份State Repository (SRDictionaryToPropertySet)跨会话保留已识别的身份
能力门控RtlCapabilityCheck所有对推理输出的访问均由 NT 能力检查门控
消费者备注
Xbox Shell表情感知的 UI 自适应
Guide.exe自动登录触发器
XboxUI.exe注意力/注视感知的 UI
游戏通过 NuiVision WinRT 契约(Windows.Kinect.KinectContract v1,零售版)
xCloud串流客户端接收 NUI 状态