Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
XboxSeries — Xbox Series 아키텍처에 대한 개인 연구 | Kitploit
도구/GitHubGitHub/daniellmcguire/xboxseries
Embedded Systems SecurityStatic AnalysisDynamic Analysis (Sandboxing)Reverse EngineeringDebuggersHardware SecurityBinary AnalysisLearning & EducationFirmware Analysis
GitHubdaniellmcguire/xboxseries

XboxSeries

Xbox Series 아키텍처에 대한 개인 연구

57441개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기웹사이트

Xbox Series: 내부 아키텍처 연구

필드값
날짜March 9-12, 2026 + July 7-?, 2026
하드웨어Xbox Series S (코드명: Lockhart)
OS 빌드26100.7010.amd64fre.xb_flt_2602ge.260212-1010 + 26100.8561.amd64fre.xb_flt_2606ge.260609-2200
액세스 방법개발자 모드 + SSH + REST API + NTFS 파일 공유 정션

요약

이 보고서는 Xbox Series S 내부 아키텍처에 대한 정적 및 동적 분석으로, 전적으로 Microsoft의 공식 개발자 모드 인프라를 통해 수행되었다. 익스플로잇이나 정책 위반은 사용되지 않았으며, 모든 액세스는 개별 개발자 프로그램의 범위 내에서 이루어졌다.

게임 플레이에 사용되는 최상위 구성 요소부터 최하위 시스템 드라이버 구성 요소까지의 세부 사항이 포함되어 있다. 이러한 세부 사항의 대부분은 Xbox One에서도 동일할 것으로 예상된다.


명확화

AI는 방대한 초기 연구(200개 이상의 분석 출력과 50개 이상의 임의 메모)를 이것으로 매우 빠르게 일관된 형식으로 정리하는 데 사용되었다. 이후의 모든 편집은 수동으로 이루어진다.

이 문서의 어떤 부분이 불명확하거나, 문서화가 부족하거나, 잘못되었다고 생각되면 언제든 DM을 보내주세요. (섹션 12에 있는) 제 질문에 대한 답변이 있다면 그것도 좋습니다. GUID 및 기타 일반적인 패턴은 제 계정을 식별할 수 있는 것을 남길 경우를 대비해 pre-commit 훅에서 삭제된다.

제가 작업 중인 많은 부분은 가정에 기반하므로 부정확할 수 있으며, 더 많은 정보를 얻고 더 많은 바이너리를 조사함에 따라 변경될 것이다.

짐작할 수 있는 이유로, 저는 어떤 상황에서도 직접적인 바이너리, 디스어셈블리 출력, 또는 Microsoft 및 그 자회사의 IP로 간주되는 어떤 것도 공유하지 않을 것이다.

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 모델 외부에 드라이버를 관리하는 Host OS가 존재한다(신뢰 모델 섹션 4.2, 17.5 참조). XVIO.SYS와 XSraFlt.sys는 Windows가 초기화되기 전에 하이퍼바이저(HostOS를 통해)가 직접 로드하며, 접근 가능한 모든 볼륨에 존재하지 않는다. 전체 커널 액세스 권한이 있어도 이들을 변조할 수 없으며, 이것이 주요 보안 경계이다.

HVCI는 의도적으로 비활성화되어 있다(섹션 18). IsSecureKernelRunning = 0x0은 보안 커널(VTL1)이 실행 중이 아님을 확인한다. 코드 무결성은 로드 시점에만 적용되므로, 바이너리가 매핑된 후에는 TOCTOU 창이 남는다. 이는 의도적인 성능 트레이드오프이며, 보안 경계는 파티션 내 메모리 보호가 아니라 하이퍼바이저 파티션이다.

NTFS 정션은 전체 SystemOS 파일시스템을 네트워크로 노출한다(섹션 1.2). SSH 셸에서 단 한 번의 mklink /J 명령으로 C:\ 또는 다른 무엇이든 Device Portal 파일 공유에 매핑하여, 개발자 모드 PIN 외에 추가 인증 없이 모든 시스템 바이너리를 원격으로 읽을 수 있게 된다.

파티션 간 아키텍처는 거의 완전히 매핑되었다(섹션 4, 14, 26-28). ERA 게임 파티션은 하이퍼바이저가 중개하는 채널을 통해서만 SystemOS와 통신한다: I/O용 XVIO 링 버퍼, 공유 메모리용 GPA 변환, IPC용 HvSocket, 부모 "Host OS"가 부여하는 제로카피 프레임버퍼 전달용 ALPC 포트 섹션.

Deploy:\ 정션은 로컬 액세스 제한을 우회한다(섹션 25). Windows Update 볼륨은 어딘가의 불일치(아마도 xrfssvc.exe?) 때문에 네트워크 공유(S:\Deployment\SoftwareDistribution\)를 통해서만 접근할 수 있다.

대부분의 바이너리는 설명 문자열만 가지고 있는데, 콘솔에 실제 연결하는 것 외에는 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에서 추적된다.


방법론

사용된 도구

접근 방법

액세스는 공식적으로 문서화되지 않았지만(커뮤니티 문서는 여기) 개발자 모드 SSH 인터페이스를 통해 설정되었다. NTFS 정션 기법(섹션 1.2)은 D:\DevelopmentFiles 임시 공간에서 전체 C:\ 시스템 볼륨 및 모든 추가 드라이브 문자 볼륨으로 읽기 액세스를 확장했다. 모든 분석은 읽기 전용이었으며 시스템 설정은 변경되지 않았다(WdConfig.exe set는 사용되지 않음). Xbox는 SSH 셸을 통해 표준 x86_64 Windows 콘솔 바이너리(/MT로 컴파일된)를 직접 실행할 수 있으며, 이를 사용하여 분석 도구를 로컬에서 실행했다.

커널 덤프는 사용할 수 없었다: NoKernelDumps Device Portal 제한이 리테일 개발자 모드에서 이를 차단한다. 사용자 모드 라이브 프로세스 덤프는 사용할 수 있었고 관련된 곳에서 사용되었다.


1. 원격 액세스

1.1 셸 액세스

Xbox 개발자 모드는 Visual Studio를 지원하며, 이 기능은 SSH를 사용합니다:

  • 사용자 이름: DevToolsUser
  • 비밀번호: Dev Home에 표시된 Visual Studio PIN

1.2 파일시스템 액세스

https://XBOX:11443의 Device Portal은 D:\DevelopmentFiles에 대한 숨겨진 NTFS 파일 공유를 노출한다. SSH 셸에서:```batch mklink /J D:\DevelopmentFiles\C C:\

root@kitploit:~
이렇게 하면 개발자 스크래치 공간에서 시스템 C: 드라이브 루트로의 정션 포인트가 생성되어 SystemOS 파일시스템 전체가 다음 위치에서 읽기 가능한 네트워크 공유로 노출됩니다:

    \\XBOX\DevelopmentFiles\C

이를 통해 PC에서 `dumpbin` 같은 도구를 네트워크를 통해 Xbox 시스템 바이너리에 직접 실행할 수 있습니다.

---

## 2. OS 식별

| 필드 | 값 |
|--------------------|-------------------|
| 제품 이름 | Xbox Series S |
| OS 에디션 | 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` |

OS는 Windows가 아닌 **SystemOS**로 식별됩니다. 빌드 분기 `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` | | 0으로 설정/삭제됨 |
| `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 OS 파일 | 표준 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\`, Harddisk16으로의 정션 | GameDVR 메타데이터 + 업데이트 파이프라인 |
| `U:` | *(없음)* | `ShellState\`, `BackCompatLicenses\`, `UserDataCache\` | 셸 및 사용자 상태 |
| `V:` | *(없음)* | *(비어 있음)* | 알 수 없는 용도 |
| `X:` | SystemAux | `Apps\`, `Catalog000.bin` (2.3MB) | 시스템 앱 바이너리: `AdsLauncher`, `Xbox.DiscordComponent`, `Xbox.SingleUserProxy`, `Xbox.NTSCaptivePortal`, `Xbox.Xmap`, `Xbox.XboxIDP` 등 63개 앱, 섹션 3.3 참조 |
| `Y:` | SystemAuxF | `Apps\`, `Catalog000.bin` (6.5MB) | 보조 시스템 앱 바이너리 |

추가로, `\\.\HarddiskVolume10`은 드라이브 문자가 할당되지 않은 채 존재합니다. `CrashDumps\`, `ReportArchive\`, `ReportQueue\`, `Temp\`를 포함하는 숨겨진 WER(Windows Error Reporting) 볼륨이 있습니다. 최소 **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\`에는 **세 가지 동시 버전**(1.0.0, 1.0.1, 1.0.2)이 나란히 설치된 활성 Kinect 비전 스택이 포함되어 있으며 총 119MB입니다. 이는 각각 1.67MB->1.70MB->1.85MB로 버전이 매겨진 `vvtechs.dll` 빌드에 해당합니다.

**바디 트래킹 ML 모델** (버전 디렉터리별):

| 파일 | 크기 | 용도 |
|------|------|---------|
| `exemplardb.xmplr` | 36.7MB | 전체 신체 포즈 예시 데이터베이스 |
| `FernsModel.bin` | 932KB | 깊이 키포인트 감지기 (랜덤 퍼른 분류기) |
| `HeadPosition.mshdf` | 262–393KB | 머리 관절 추정기 (버전에 따라 다름) |
| `LSVMGripReleaseRight.gbd` | 7.5KB | 오른손 잡기/놓기 잠재 SVM 분류기 |

**얼굴 트래킹 ML 모델** (시스템 전체, `C:\Windows\System32\ht\`):

| 파일 | 크기 | 용도 |
|------|------|---------|
| `FaceDetector.bin` | 3.0MB | 프레임에서 얼굴 위치 찾기 |
| `FaceRecognition.bin` | 3.4MB | 깊이/IR 신원 인식 |
| `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 | 수염/털 (IR 센서 전용) |
| `GlassesIRRandomForest.model` | 206KB | 안경 감지 (IR 센서 전용) |

모든 얼굴 속성 분류기는 **Random Forest** 모델입니다. 출력은 신원, 표정, 시선, 입술 상태, 외형 속성을 포함합니다.

스택의 `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 런타임/드라이버 불일치 | D3D12.X가 일반 D3D12가 아닌 Xbox 특유의 D3D12 변형임을 확인 |
| `0x80A40406` | 개발자 모드에서 향상된 Microsoft 원격 분석 활성화 | 개발자 모드는 콘솔을 명시적으로 높은 수준의 원격 분석 수집에 옵트인시킴 |

---

## 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 클라이언트, XVIO에 대한 SystemOS 측 인터페이스 |
| `xvbus.sys` | 73KB | 가상 버스 루트 + HvSocket XVIO 공급자 |
| `hvsocket.sys` | 185KB | Hyper-V 소켓 구현 |
| `VMNP.SYS` | 106KB | "NPFS 드라이버"로 명명되며 가장(impersonation)도 처리합니다. |
| `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는 식별될 가능성이 있어 편집되었습니다.

4개의 와일드카드 HvSocket 엔드포인트 GUID는 SHA1 서비스 SID 계산을 통해 확인되었습니다. DiagTrack, RpcSs, EventLog 크로스 파티션 채널을 포함한 전체 세부 정보는 섹션 20을 참조하세요.

---

## 5. J:\ "Sys Tools" XTF / 개발자 볼륨

> **영향:** `J:\` 볼륨은 모든 일반(retail) Xbox에 존재합니다. 개발자 모드에서는 개발자 모드 PIN 외에 추가 인증 없이 전체 XTF 툴체인에 접근할 수 있습니다. 여기에는 원격 디버깅, 화면 스트리밍, PIX GPU 프로파일링, 최종 사용자 액세스를 위한 것이 아닌 콘솔 제어 API가 포함됩니다.

이 연구에서 가장 중요한 발견입니다. "Sys Tools"로 레이블이 지정된 `J:\` 볼륨에는 Microsoft의 내부 개발자 키트 툴체인인 **Xbox Tools Framework (XTF)**가 포함되어 있으며, 이는 분명히 모든 일반 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`까지). **VS2015, VS2017, VS2019의 세 가지 Visual Studio 원격 디버거 세대가 동시에 존재하고 등록되어 있으며**, 모두 동일한 일반 콘솔 파일시스템에 공존합니다.

### 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`(Xbox 정책 차단), **이 코드에 대한 사용자 대상 오류 문자열이 존재하지 않음** (`N:\errorstrings\en-US.json`에 없음) |

ETW 공급자 열거는 표준 ETW 네임스페이스에서 **Xbox 특유의 공급자가 0개**임을 보여줍니다. 모든 Xbox 원격 분석은 표준 Windows ETW와 완전히 분리된 파이프라인인 `Etx` 접두사 함수를 사용하여 `EtwPlus.dll`을 통해 흐릅니다 (섹션 19.3 참조).

### 5.6 unattendedsetuphelper.exe 콘솔 관리 도구

`unattendedsetuphelper.exe`는 다음을 포함하는 콘솔 관리 실행 파일입니다:

- 공장 초기화
- 네트워크 기반 펌웨어 업데이트
- 토스트/알림 삽입
- 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 프로파일링 모드에서 PIX용 추가 6048MB 예약 |
| `CrashDumpType` | `None` | 옵션: `Triage`, `Mini`, `Heap` |
| `TitlePerformanceOverlay` | `false` | 실행 중인 타이틀의 실시간 GPU/CPU HUD 오버레이 |
| `ExtraTitleMemory` | `0` | Lockhart 프로파일링 모드에서 최대 6048MB |
| `LastShutdownReason` | `Console crash` | 재부팅 후에도 유지됨, 마지막 종료 시 내 콘솔이 충돌함 |
| `KinectSensorEnabled` | `true` | **Kinect가 연결되지 않은 하드웨어에서도 true로 설정됨**, 하드웨어 존재 여부와 관계없이 스택이 프로비저닝됨 |

### 네트워크 범주

| 설정 | 값 | 비고 |
|---|---|---|
| `UseDebugNicForAllTraffic` | `false` | 실제 NIC와 구별되는 별도의 디버그 NIC가 존재합니다. |

### 저장소 범주

| 설정 | 값 | 비고 |
|---|---|---|
| `DevkitUseRetailConnectedStorage` | `false` | 활성화하면 개발자 모드가 일반(retail) 연결 저장소 파티션을 사용합니다. 테스트되지 않음. |
| `RunFromPcDataCacheSizeInGB` | `100` | **Run-From-PC 타이틀 캐시용으로 기본적으로 100GB 예약됨; 잠겨 있어 사용자가 변경할 수 없음** |

### 무인(Unattended) 범주

| 설정 | 값 | 비고 |
|---|---|---|
| `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 구현은 별도의 SDK가 아닌 XCRDAPI에 내장되어 있습니다.

### 7.2 XVD 수명 주기XCrdOpenAdapter / 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 프로그레시브 스트리밍 설치

    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개)

이전에 문서화되지 않은 하드웨어 ID, 기능 및 전원 관리를 위한 API입니다.

### 하드웨어 ID

    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와 셸 사이의 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** 대시보드 셸이 `XboxUI.Data.dll`의 오프셋 `0x13eb0`에서 스택 버퍼 오버런(`STATUS_STACK_BUFFER_OVERRUN`, `0xc0000409`)에 도달했습니다.
2. **`MoAppHang`** 패키지 `REDACTED_GUID`에 대한 UWP 앱 응답 없음.

---

## 11. 추가 주요 발견 사항

### Xbox에 존재하는 WSL

`LxssManager` 및 `lxcore` 서비스는 `LaunchProtected: 0x2`(보호 프로세스) 및 `SeTcbPrivilege`와 함께 존재합니다. Xbox의 WSL은 OS 수준 신뢰로 실행되며, 사용 용도에 따라 거의 확실히 무언가를 구동하거나 적어도 `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` 셸 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`는 **가상 NIC 스택**입니다. `xvnc` 서비스 열거:

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

`xvncbus`는 물리적 무선 어댑터 위에 가상 NIC를 열거하는 WDF 1.15 버스 드라이버입니다. ERA 파티션은 네트워크 스택에 직접 액세스하지 않으며, `xvnc` 가상 NIC 계층을 소유한 `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 파티션의 보안 ID를 가장할 수 있습니다.

### 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` TV 튜너 디코더 스택

`zurichs.sys`는 Xbox One DVB 가상 드라이버입니다. 상태: **비활성화**, 하지만 여전히 등록되어 있습니다.

핵심 발견: `zurichs.sys`는 `XVIO.SYS` 링 버퍼를 임포트합니다. TV 튜너는 디코딩된 비디오 스트림을 XVIO 하이퍼바이저 링 버퍼를 통해 전달하도록 설계되었습니다. 튜너는 또한 `ZwUpdateWnfStateData`를 사용하여 Windows Notification Facility(WNF)를 통해 튜너 상태를 게시했습니다.

### `PetraXC` Kinect 센서 컨트롤 장치

이제 **KinectSensorControl 장치**로 식별되는 WDF 가상 장치 드라이버로, 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 Platform Security Processor(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와 함께 호스트 OS가 로드
5. **`xvnc` GUID `{REDACTED_GUID}`** 무선 어댑터 GUID, 전체 드라이버 체인 매핑되지 않음
6. **`S:\Shares\TitleScratch` 리파스 포인트 대상** 디렉터리 목록에서 OS가 적극적으로 편집; 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. 호스트 OS 자체, 전체적으로 무엇을 하는지조차 확실하지 않음.

드라이버:

1. **`xtcc.sys`**, 방대한 양의 `ntoskrnl.exe` 및 `XVIO.sys` 임포트를 고려할 때 보안 관련 기능을 담당할 가능성이 높음
2. **`FLTMGR.SYS`** `XRmnt.sys`, `XRo.sys`가 임포트

---

## 13. 가상화 I/O 및 원격 액세스 (XVIO/SRA)

`xboxcloudstreaming.dll` 내보내기 및 `CurrentControlSet\Services` 레지스트리 항목 분석은 표준 소프트웨어 에뮬레이션이 아닌 "합성" 하드웨어 모델을 활용하는 원격 연결을 위한 깊은 커널 수준 통합을 보여줍니다. ERA VM은 입력이 어디에서 오든(원격, USB, 무선 등) 동일한 합성 장치를 봅니다.

### 13.1 XVIO(가상 I/O) 스택

XVIO 프레임워크는 외부 또는 교차 파티션 소스에서 SystemOS로 하드웨어 수준 이벤트를 주입하는 기본 방법으로 보입니다.

| 서비스 | 범주 | 기능 |
| --- | --- | --- |
| `hvsocketxvio` | 전송 | Hyper-V 소켓을 XVIO 프로토콜에 연결하는 브리지 서비스. |
| `InputXVIOClient` | 조정자 | 원격 입력 패킷을 가상 장치 노드에 매핑하는 것을 관리. |
| `xviokbdbus` / `xviomoubus` | 버스 드라이버 | 합성 내부 버스에 가상 HID 장치를 열거. |
| `xviokbd` / `xviomou` | 장치 드라이버 | 가상화된 키보드와 마우스용 특정 기능 드라이버. |

### 13.2 합성 컨트롤러 파이프라인

`xboxcloudstreaming.dll` 바이너리는 `XboxgipSynthetic.dll`을 활용하여 OS가 물리적으로 연결된 로컬 주변 장치로 인식하는 것을 생성합니다.

- **오디오 가상화:** `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:\ 이미지 위에 마운트되는 구성 요소를 포함하는 트리입니다. 이 아키텍처를 통해 Microsoft는 단일 OS 이미지를 제공하고 마운트 시 오버레이를 통해 특정 기능 집합을 적용할 수 있습니다.

### 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 하위 시스템 디렉터리가 전적으로 M:\에 상주합니다. 이는 특정 오버레이가 GPU 및 캡처 드라이버뿐만 아니라 전체 시스템 앱 및 UI 셸 계층을 어느 정도 제어할 수 있음을 의미할 수 있습니다.

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`와 함께 호스트 OS가 로드함을 시사합니다.

### 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 런타임 마운트 클라이언트
- `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 스타일의 패스 파이프라인을 암시할 수 있다. `NB_CreatePixDwarfApi`는 PIX용 소스 수준 셰이더 디버그 정보를 생성한다.

### 15.2 `xbsc_xs.dll`

전체 컴파일 API를 다루는 41개 내보내기:

    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. DXC HLSL 컴파일러의 Xbox Series 포크. 내보내기 4개:

    DxcCreateInstance / DxcCreateInstance2   표준 DXC 팩토리(공개 API와 호환)
    CreateXdxrCompiler / CreateXdxrCompiler2 Xbox DXIR 컴파일러(Xbox 전용 IR 형식)

### 15.4 `dxbc2dxil_xs.dll` 바이트코드 변환기

2.9MB. 단일 내보내기:

    SCDxil_ConvertDxbcToDxil   DX11 DXBC 바이트코드를 DX12 파이프라인용 DXIL로 변환


DX12 전용 Arden 파이프라인에서 이전 버전과 호환되는 DX11 셰이더를 실행할 수 있게 해준다.

### 15.5 전체 셰이더 컴파일 체인

    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` Xbox 그래픽 텍스처 레이아웃 라이브러리

**C:\**에 위치(M:\ 아님). 텍스처 타일링, 레이 트레이싱 BVH 레이아웃, DCC 압축을 다루는 27개 내보내기 포함.

### 16.1 내보내기 표면

    XGComputeBufferLayout
    XGComputeTexture1DLayout / 2DLayout / 3DLayout
    XGComputeOptimalSwizzleMode / OptimalDepthStencilSwizzleMode
    XGComputeTileShape
    XGSuggestSwizzleMode
    XGValidateDepthStencilSwizzleMode / XGValidateDescriptor
    XGCreateTexture1DComputer / 2DComputer / 3DComputer
    XGCreateTextureComputer / XGCreateTextureComputerFromDescriptor
    XGCreateBVHComputer / XGCreateBVHComputer2       레이 트레이싱 BVH 레이아웃
    XGEncodeDCC / XGDecodeDCC / XGDecodeDCCSurface   AMD 델타 컬러 압축
    XGShuffleTextureBufferForDirectStorage           DirectStorage용 GPU 측 텍스처 타일링
    XGSetHardwareVersion                             Series S vs Series X 메모리 레이아웃 구성
    XGInitializeLibrary / XGTerminateLibrary
    XGEnableExclusiveLocking / XGEnterExclusiveLock / XGLeaveExclusiveLock

### 16.2 주요 발견 사항

**레이 트레이싱 BVH 레이아웃은 하드웨어별로 다르다.** `XGCreateBVHComputer2`는 2세대 BVH 레이아웃 API를 노출하며, 이는 Arden 아키텍처가 일반 DXR과 다른 고유한 BVH 노드 형식을 가짐을 시사한다.

**AMD DCC 압축이 노출되어 있다.** `XGEncodeDCC` / `XGDecodeDCC`는 RDNA GPU에 사용되는 하드웨어 무손실 프레임버퍼 압축인 AMD의 델타 컬러 압축을 구현한다. `XGDecodeDCCSurface`는 PIX가 캡처된 DCC 압축 프레임버퍼를 읽어낼 때 사용하는 API다.

**DirectStorage 타일링.** `XGShuffleTextureBufferForDirectStorage`는 GPU 압축 해제 중 디스크상의 텍스처 레이아웃을 Arden 하드웨어 타일링 형식으로 변환하는 GPU 측 셔플을 수행하여 VRAM으로의 제로 카피 로드를 가능하게 한다.

**`XGSetHardwareVersion`은 모든 레이아웃 알고리즘을 게이트한다.** 이 라이브러리에는 여러 하드웨어 개정판에 대한 레이아웃 구현이 포함되어 있다. `XGSetHardwareVersion`을 Series S 식별자로 호출하느냐 Series X 식별자로 호출하느냐에 따라 서로 다른 메모리 버스 폭과 캐시 지오메트리를 반영한 다른 타일링 결과가 생성된다.

### 16.3 `.xbld` 빌드 메타데이터 섹션

`xg_xs.dll`에는 다른 모든 Xbox 바이너리에는 없는 `.xbld` PE 섹션이 포함되어 있는데, 이는 Xbox OS 빌드 시스템이 아닌 별도의 GDK CI 빌드 파이프라인에서 생성되었음을 나타낸다. OS 빌드 시스템은 타임스탬프를 0으로 만들고 메타데이터 섹션을 제거하지만, 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일)보다 앞선 것으로, 정식 OS가 아직 릴리스되지 않은 다음 SDK 주기를 대상으로 빌드된 GDK 구성 요소를 포함하여 출시됨을 확인해 준다. `sdktype=260400` 버전은 `YYMMRR`(연/월/개정) 패턴을 따른다.

`edition_build` 타임스탬프 `0x65F41B62`는 **2024년 3월 13일**로 해독되며, OS 빌드 날짜(2026년 2월 12일)보다 1년 이상 앞선 것으로, 텍스처 레이아웃 알고리즘이 최소 5개 GDK 릴리스 주기에 걸쳐 안정적으로 유지되었고 수정되지 않았음을 나타낸다.

`mscver=193833145.100`은 컴파일러가 **MSVC 19.38**(Visual Studio 2022 17.8.x)임을 식별한다.

### 16.4 빌드 파이프라인 추론(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

즉, 정식 콘솔에 포함된 `xg_xs.dll`은 개발자가 GDK에서 받는 바이너리와 비트 단위로 동일하다. 2026년 4월 공개 GDK 릴리스(사용 가능해지면)에 대한 해시 검증으로 이를 확인할 수 있을 것이다.

---

## 17. 카탈로그 기반 코드 무결성 모델

### 17.1 PE 컨테이너 형식

각 볼륨의 `Catalog*.bin` 파일은 **서브시스템 `0x11`**("Xbox Code Catalog")을 가진 **PE32+ 실행 파일**로, 공개 문서 어디에도 없는 문서화되지 않은 서브시스템이다. 주요 PE 헤더 특성:

    Magic:          PE32+ (64-bit)
    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 신뢰 체인

    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

이것은 **카탈로그 기반 신뢰** 모델이다. 볼륨당 수많은 파일을 하나의 Microsoft 서명이 커버한다. 개별 바이너리와 다른 파일 유형은 서명되지 않았을 가능성이 높으며, 무결성은 카탈로그 멤버십으로 보장된다.

**항목 수 및 크기:**

| 볼륨 | 카탈로그 | 페이로드 크기 | 항목 수(÷32) |
|---|---|---|---|
| C:\ | Catalog000.bin | 5,533,696 바이트 | 172,928 |
| C:\ | Catalog001.bin | 253,952 바이트 | 7,936 |
| C:\ | Catalog002.bin | 57,344 바이트 | 1,792 |
| C:\ | Catalog003.bin | 176,128 바이트 | 5,504 |
| M:\ | Catalog000.bin | 5,537,792 바이트 | 173,056 |
| M:\ | Catalog001.bin | 258,048 바이트 | 8,064 |
| M:\ | Catalog002.bin | 61,440 바이트 | 1,920 |
| M:\ | Catalog003.bin | 180,224 바이트 | 5,632 |

모든 카탈로그(PE 섹션 내부)의 페이로드 길이는 나머지 없이 정확히 32로 나누어떨어지며, 36, 40 또는 다른 일반적인 레코드 크기로는 일관되게 나누어떨어지지 않는다. 이는 페이로드가 **32바이트 레코드**의 평면 배열임을 강력히 시사한다.

**해시 알고리즘:** 알려진 바이너리의 전체 파일 SHA-256 및 SHA-1은 카탈로그에서 발견되지 않아 단순한 전체 파일 해싱은 배제된다. 가장 유력한 형식은 **Authenticode 페이지 해시**로, PE 파일의 매핑된 섹션 각 4KB 정렬 페이지가 개별적으로 해시되는 Windows CI 표준 방식이다. 이는 파일당 페이지마다 32바이트(SHA-256) 항목 하나를 생성하므로 C:\만 해도 172,928개에 달하는 많은 항목 수를 설명한다.

**정렬:** 페이로드는 해시 값으로 정렬되지 않는다. 정렬 방식은 아직 결정되지 않았으며, 파일 경로 해시, 설치 패키지, 볼륨 파일 집합 내의 페이지 오프셋, 또는 NTFS 특성별 정렬 등이 가능성으로 있다.

**헤더 없음:** 페이로드의 처음 128바이트에는 인식 가능한 ASCII 매직, 개수나 버전을 나타낼 수 있는 작은 정수 필드, 표준 헤더와 일치하는 구조가 없다. 해시 배열은 프리앰블 없이 페이로드의 0바이트부터 시작한다.

### 17.3 로드 시점 전용 강제

코드 무결성 강제는 **로드 시점 전용**이다. 바이너리가 카탈로그 해시 검증을 통과하고 페이지가 메모리에 매핑된 후에는 CI가 더 이상 관여하지 않는다. HVCI(하이퍼바이저 보호 코드 무결성)가 SystemOS에서 활성화되어 있다면 로드된 코드 페이지를 하이퍼바이저 페이지 테이블 수준에서 하드웨어 읽기 전용으로 만들어 결과적인 TOCTOU(검사 시점-사용 시점) 창을 닫았을 것이다. **HVCI는 SystemOS에서 꺼져 있음이 확인되었으며**, `IsSecureKernelRunning = 0x0`이다(섹션 18 참조). 따라서 TOCTOU 창이 존재한다.

### 17.5 Host OS 구성 요소

두 드라이버는 접근 가능한 모든 파일 시스템 볼륨에서 부재함이 확인되었으며, SRA가 초기화되기 전에 Host OS가 직접 로드한다:

- `XVIO.SYS` Xbox 가상 I/O 코어(레지스트리 서비스 항목 없음, 어떤 볼륨에도 없음)
- `FLTMGR.sys` 필터 관리자
- `XSraFlt.sys` SRA 필터(서비스 항목은 존재하지만 어떤 볼륨에도 해당 파일 없음)

이 구성 요소들은 카탈로그 신뢰 모델 외부에 완전히 존재한다. 전체 SystemOS 커널 액세스 권한이 있어도 부트로더가 HostOS(System OS의 부모)를 로드하기 전에 매핑하므로 변조할 수 없다.

Xbox One 구성 요소에 대한 정보는 [여기에서](https://xboxoneresearch.github.io/wiki/boot/vbi/) 찾을 수 있지만, Host OS가 아직 변경되지 않았다고 완전히 확신할 수는 없다.

---

## 18. HVCI 상태

> **영향:** HVCI가 꺼져 있으면 코드 무결성은 로드 시점 전용이다. 바이너리가 메모리에 매핑되면 메모리 내 수정을 방지하는 하드웨어 강제가 없다. 따라서 섹션 17.3에 설명된 TOCTOU 창이 열려 있다. 의도된 보안 경계는 전적으로 SystemOS가 ERA(GameOS)와 통신하지 않는 데 의존한다.

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

    IsSecureKernelRunning = 0x0

보안 커널(VTL1)은 SystemOS에서 실행되고 있지 않으며, 이는 HVCI가 활성화될 수 없음을 확인한다. 이는 의도적인 성능 절충으로, 게임 루프의 커널 활동에 VTL1 부담이 없다. 보안 경계는 파티션 내 메모리 보호가 아니라 하이퍼바이저 파티션 자체이다. 따라서 코드 무결성 모델(섹션 17)은 TOCTOU 보호 없이 로드 시점 전용이다.

---

## 19. sevpipe 하이퍼바이저 IPC 네임스페이스

모든 Xbox 특정 프로세스 간 및 교차 파티션 통신의 기본 IPC 백본 역할을 하는 사용자 지정 Windows 명명된 파이프 장치 네임스페이스(`\\.\sevpipe\`). 프로토콜 수준에서 하이퍼바이저 구조가 아니라 내부적으로는 표준 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 쓰기 
    EtxForwarderToUploaderControl <- DevToolsUser 쓰기 
    XrfsPipe                      <- SYSTEM 전용 
    ERASwapChainPipe              <- SYSTEM 전용 
    ERAPresentPipe                <- SYSTEM 전용 
    XvioAudioPipe                 <- SYSTEM 전용 
    XTF_SYSTEM_TO_TITLE           <- SYSTEM 전용 

### 19.3 원격 분석 파이프라인

    Process calls EtxEventWrite()
        ↓
    EtwPlus.dll
        ↓ writes to
    \\.\pipe\EtxUploader
        ↓
    EtwUploader.exe (PID 1808, SYSTEM)
        ↓ forwards to
    \\.\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      <- 런타임에 devkit 속성 읽기

### 19.5 OneSettings / Windows Update 스키마

Xbox는 `XBOXMOBILE` 타기팅 항목과 `WCOS` 레지스트리 하이브 경로를 포함한 전체 Windows Update 타기팅 스키마를 탑재하고 있으며, 이는 Xbox Series S가 HoloLens 및 Surface Hub와 공유하는 Windows Core OS(WCOS) 기반 위에서 실행됨을 확인한다. OS는 전용 플랫폼 OS가 아니라 가볍게 맞춤화된 Windows 11 24H2이다.

---

## 20. 하이퍼바이저 파티션 토폴로지

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

    LocalAddress  = {REDACTED_GUID}  SystemOS 파티션 GUID
    ParentAddress = {REDACTED_GUID}  null 부모

SystemOS는 자신이 **루트 파티션**이라고 생각한다(사실이 아님, Host OS가 루트). ERA 게임 파티션은 SystemOS의 자식이다. ERA 파티션 GUID는 접근 가능한 어떤 레지스트리 경로를 통해서도 SystemOS에 노출되지 않으며, 무작위화되었을 수 있다.

### HvSocket 교차 파티션 와일드카드 엔드포인트

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

SHA1 서비스 SID 계산을 통해 확인된 4개의 서비스 GUID:

| GUID | 서비스 | 용도 |
|------|---------|------|
| `REDACTED_GUID` | DiagTrack | 원격 분석 파이프 1 |
| `REDACTED_GUID` | DiagTrack | 원격 분석 파이프 2 |
| `REDACTED_GUID` | RpcSs | 파티션 간 RPC |
| `REDACTED_GUID` | EventLog | 교차 파티션 이벤트 전달 |

DiagTrack, RpcSs, EventLog는 일급 교차 파티션 구성원이다. 게임 원격 분석, RPC 호출, 이벤트는 ERA 내부에서 실행되는 어떤 것에도 보이지 않는 전용 하이퍼바이저 소켓 채널을 통해 ERA에서 SystemOS로 파이프된다.

---

## 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가 합성되는 방식이다. 각 표면은 별도의 하드웨어 오버레이 평면을 차지한다.

---

## 22. WdApp.exe 패키지 관리자 및 앱 수명 주기 도구

`J:\tools\WdApp.exe`는 Xbox 앱 플랫폼을 위한 완전한 패키지 관리자이자 애플리케이션 수명 주기 관리자이다. 전체 명령 표면:| Command | Purpose |
|---------|---------|
| `install` | 웹 서버, 네트워크 공유 또는 로컬 경로에서 패키지 빌드를 스트리밍합니다 |
| `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`을 대상 드라이브 지정자로 허용하므로 개발 셸에서 소매 저장 파티션으로 직접 패키지를 설치할 수 있습니다.

**`/WaitToExit`** `launch`에서 이 옵션을 사용하면 WdApp이 실행된 프로세스를 자식으로 소유하고 종료 코드를 캡처합니다. 시스템 앱은 `0x8D160121`(Xbox PLM 시설, 잘못된 수명 주기 부모)로 이를 거부합니다. `/WaitToExit` 없이 실행하면 ShellCoreService가 수명 주기 소유권을 유지하므로 성공합니다.

**`launch` AUMID 인코딩** 시스템 앱 AUMID는 `.xboxunattend` QuickActions 스크립트에 사용된 패턴과 일치하는 base64 인코딩이 필요합니다.```
WdApp.exe launch <base64(FamilyName!AppId)>

23. Device Portal REST API

Device Portal 웹 서버(WebManagement.exe, PID 2344)는 프론트엔드를 M:\windows\WebManagement\www\default\에서 제공한다. 전체 REST API 스키마는 js\RestDocumentation.json(40KB)에 문서화되어 있다.

인증: HTTPS 포트 11443을 통한 HTTP Basic 인증. 자격 증명은 개발자 모드 활성화 중 설정한 Device Portal 사용자 이름과 PIN이다.

API 네임스페이스

제한 플래그

여러 엔드포인트에는 소매 개발자 모드 콘솔에서 해당 기능을 비활성화하는 제한 플래그가 있다:

사용자 모드 라이브 프로세스 덤프(/api/debug/dump/usermode/live?pid=<pid>)는 nonRestrictable이므로 소매 개발자 모드에서도 성공한다.

Device Portal 소스 트리


24. 라이브 프로세스 목록

GET /api/resourcemanager/processes를 통해 획득. 선택된 주요 프로세스:

xnetsharedservice.exe의 인스턴스 3개(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          카탈로그 해시 / 변경 카운터(세션 1에서는 928, 세션 2에서는 19)
&L=en-US;...      설치된 언어 팩 31개
&PT=0xc0         플랫폼 유형: Xbox
&WUA=1451.2510.27012.0  Windows Update 에이전트 버전

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           예약된 하이퍼바이저 메모리 carve-out
XvioTranslateXrfsGuestGpa       SystemOS 액세스를 위한 ERA 게스트 물리 주소 변환

**XvioTranslateXrfsGuestGpa**는 파티션 간 공유 메모리 프리미티브이다. ERA는 SystemOS에 게스트 물리 주소(GPA)를 넘겨주고, SystemOS는 이 함수를 호출하여 사용 가능한 매핑을 얻는다. 이는 GameDVR 캡처, 프레임버퍼 합성, 파티션 간 오디오의 기본 메커니즘이다.

xbtplinkc는 또한 xpalk.dll에서 XpalIsCapabilityEnabledByVm을 가져온다. ByVm 접미사는 OS 수준이 아닌 하이퍼바이저 수준에서 기능 상태를 쿼리한다는 의미로, 진행 전에 하이퍼바이저 자체가 기능을 활성화했는지 확인함을 보여준다.

xrfs.sys Xbox 런타임 파일 시스템

전체 NT 파일 시스템 드라이버. 가져오기 분석을 통해 실제 파일 시스템 의미론을 구현함을 확인할 수 있다: 캐시 관리자(Cc*), MDL I/O, 파일 잠금(FsRtl*), 보안 설명자 구성, 디렉터리 색인을 위한 AVL 트리 일반 테이블.

주요 식별 가져오기:

root@kitploit:~
FsRtlRegisterFileSystemFilterCallbacks
IoRegisterFileSystem
RtlCreateSecurityDescriptor / RtlCreateAcl / RtlAddAccessAllowedAce
XpalIsCapabilityEnabled
WppRecorder.sys 메모리 내 ETW 추적 레코더

xrfs.sys는 XVIO를 직접 가져오지 않는다. 대신 xbtplinkc.sys가 XvioTranslateXrfsGuestGpa를 가져온다. XRFS는 파일 시스템 계층이고, XVIO는 그 아래에서 GPA 변환을 제공한다.

파티션 간 파일 시스템 아키텍처

root@kitploit:~
ERA 게임 프로세스
    ↓
ERA 커널 / XVIO 게스트 측
    ↓  [하이퍼바이저 공유 메모리 / XvioTranslateXrfsGuestGpa를 통한 GPA 변환]
SystemOS: xbtplinkc.sys  (링 버퍼 전송)
    ↓
SystemOS: xrfs.sys       (NT 파일 시스템 의미론)
    ↓
S:\Shares\TitleScratch   (정션, 대상은 OS가 숨김 처리)
    ↓
SystemOS 사용자 공간 / 셸

27. eracontrol.exe

주요 Xbox 전용 가져오기:

XCRDAPI.dll 직접 XVD 마운트 제어:

root@kitploit:~
XCrdSetEraLaunchMapping   XVD 콘텐츠를 ERA 파티션과 사전 실행 연결
XCrdMountContentType      콘텐츠 범주를 ERA에 마운트
XCrdUnmount               ERA 콘텐츠 마운트 해제
XCrdOpenAdapter / XCrdCloseAdapter
XCrdQueryDevicePath / XCrdBuildPath
XCrdDeleteXVD
XCrdSuspendResumeIoBalancer
XCrdIsCorruptionError
XCrdFreeDevicePathBuffer

ntdll.dll

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

ext-ms-win-xblauth-console-l1-1-0.dll(지연 로드):

root@kitploit:~
XblaInitialize            Xbox Live 인증 ID를 ERA 파티션으로 부트스트랩

ext-ms-win-ntuser-rim-l1-1-0.dll(지연 로드):

root@kitploit:~
RIMAddInputObserver / RIMRemoveInputObserver  ERA 라우팅을 위한 원시 컨트롤러 입력 가로채기

SspiCli.dll:

root@kitploit:~
LogonUserExExW            ERA 세션을 위한 사용자 로그온 토큰 생성

ext-ms-win-session-usermgr-l1-1-0.dll(지연 로드):

root@kitploit:~
UMgrOpenProcessHandleForAccess

RPCRT4.dll:

root@kitploit:~
RpcServerInqCallAttributesW / I_RpcBindingInqLocalClientPID  RPC 호출자 ID 검증

28. eraproxyapp.exe

eraproxyapp.exe는 SystemOS 측 합성기이자 ERA 파티션과 셸 사이의 IPC 브리지이다. 339KB로 eracontrol.exe(249KB)보다 훨씬 크다.

프레임버퍼 합성:

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

eraproxyapp은 D3D11 디바이스와 DirectComposition 디바이스를 생성하여 ERA 프레임버퍼를 SystemOS 셸로 합성한다. AVRT 멀티미디어 스레드 우선순위는 낮은 지연 시간의 프레임 전달을 보장한다.

ALPC를 통한 파티션 간 IPC:

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

ALPC 포트 섹션은 제로 카피 공유 메모리를 제공한다. ERA 게임 프레임버퍼는 복사되지 않으며, 두 주소 공간에 동시에 매핑된 ALPC 섹션 뷰를 통해 공유된다.

프라이빗 네임스페이스(보안 IPC 채널): CreatePrivateNamespaceW / OpenPrivateNamespaceW CreateBoundaryDescriptorW / AddSIDToBoundaryDescriptor / DeleteBoundaryDescriptor ClosePrivateNamespace bcrypt: BCryptGenRandom / BCryptHashData / BCryptCreateHash / BCryptFinishHash

eraproxyapp은 SID 기반 경계 설명자가 있는 프라이빗 개체 네임스페이스를 설정한다. 이는 ERA와 SystemOS에만 보이는 명명된 개체 네임스페이스이다. BCrypt는 경계에 대한 임의 키 자료를 제공한다.

타이틀 ID 및 오디오: XboxLiveTitleId.dll: GetCurrentXboxLiveInfo 실행 중인 타이틀 식별 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 하드웨어 ID 및 인증(내보내기 46개)

콘솔 ID:

root@kitploit:~
XblaGetConsoleCert / XblaGetConsoleId / XblaGetConsoleSerialNumber
XblaGetDevkitType      소매 vs 개발 키트 감지
XblaGetXblSandbox      Xbox Live 환경(소매/미리 보기/개발)

타이틀 ID:

root@kitploit:~
XblaGetXboxLiveTitleId
XblaGetTitleAttestation / XblaGetTitleConsoleGeneration

암호화:

root@kitploit:~
XblaSignDigest         콘솔 개인 키로 서명
XblaGetAttestation / XblaGetTpmPcrAttestation fTPM PCR 부팅 체인 측정
XblaProcessChallenge / XblaProcessSpToken

XblaGetTpmPcrAttestation은 콘솔이 전체 부팅 체인 증명을 수행함을 확인시켜 준다. Microsoft는 콘솔이 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 셸 통합(내보내기 44개)

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

컨트롤러 스택 코드명 "Pendragon"

XAccessoriesGip.dll:

root@kitploit:~
PendragonGIP_SendGIPMessage
PendragonGIP_SetMessageCallback
PendragonGIP_Start / Stop

30. 전체 시스템 아키텍처 요약

전체 아키텍처

root@kitploit:~
하이퍼바이저(최하위 계층, 하드웨어 가상화)
    ↓
호스트 OS(루트 파티션) SystemOS에 숨겨진 관리 OS
├── 108MB 고정 RAM carve-out
├── 핵심 시스템 프로세스 5개
├── **XVIO.SYS**             Xbox 가상 I/O 코어(링 버퍼, GPA 변환)
├── **XSraFlt.sys**          GPU 보안 필터(디스플레이 캡처 가로채기)
├── **sevpipe 드라이버**       보안 IPC 네임스페이스 루트
├── **xvncbus.sys**          Durango 가상 XVNC 버스 드라이버
├── **xvnc.sys**             XVSC 미니포트
├── **xrfs.sys**             NTFS 파일 시스템 드라이버
└── 하드웨어 디바이스 소유권(GPU, 네트워크, 스토리지)
    ↓ (가상화된 하드웨어로 자식 VM 생성)
SRA SystemOS 파티션(Windows 11 24H2 / WCOS, 자식 파티션)
├── 총 RAM: 6400MB(동적 할당)
├── 프로세스 89~95개
├── sevpipe IPC 백본(클라이언트 뷰)
├── ERA 수명 주기 관리(eracontrol.exe)
├── 원격 분석 파이프라인(EtwUploader->NetworkTransferManager)
├── XTF 툴체인(J:\tools\, 소매 제품에도 항상 존재)
├── Device Portal 웹 서버(:11443)
└── 가상화된 하드웨어 뷰(GPU, NIC, 호스트 OS를 통한 스토리지)
    ↓ (자식으로 관리)
ERA GameOS 파티션
├── 게임 타이틀 프로세스
├── XVIO 클라이언트 뷰
└── 모든 하드웨어 액세스 프록시: ERA->SystemOS->호스트 OS

드라이버 초기화(지금까지 확보한 정보에 기반한 가정)

root@kitploit:~
호스트 OS 부팅(연구에 보이지 않음, 완전한 가정):
1. 호스트 OS가 자체 보호 스토리지 파티션에서 로드
2. 호스트 OS 내 일반 Windows 드라이버 로드:
    - XVIO.SYS (\Device\Xvio로 등록)
    - XSraFlt.sys (GPU 명령 필터링)
    - sevpipe 드라이버 (\\.\sevpipe 네임스페이스 생성)
    - xvncbus.sys/xvnc.sys (가상 NIC 루트)
3. 호스트 OS가 가상화된 하드웨어로 SystemOS VM을 생성하고 이미지 심볼릭 링크
4. SystemOS는 호스트 OS 드라이버나 파일 시스템을 볼 수 없음

SystemOS 뷰(연구가 알 수 있는 부분):
1. 호스트 OS가 제공하는 가상화된 디바이스를 볼 수 있음
2. XVIO는 드라이버가 아닌 서비스로 표시됨(xvmctrl.sys 인터페이스)
3. sevpipe는 네임스페이스로 표시되지만 서버는 호스트 OS에서 실행됨
4. 호스트 OS 드라이버/파일을 열거하거나 액세스할 수 없음

ERA 시작 시퀀스(가정)

  1. eracontrol.exe: NtOpenPartition - ERA 하이퍼바이저 파티션 핸들 열기
  2. eracontrol.exe: XCRDAPI XCrdSetEraLaunchMapping - XVD를 파티션과 연결
  3. eracontrol.exe: XCRDAPI XCrdMountContentType - 게임 콘텐츠를 ERA에 마운트
  4. eracontrol.exe: XblaInitialize - ERA에 Xbox Live ID 프로비저닝
  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 계약 레지스트리의 전체가 포함되어 있습니다. 즉, 플랫폼에서 사용 가능한 모든 퍼스트파티 WinRT API 표면을 정의하는 100개 이상의 계약이 들어 있습니다.

주요 계약

시사점

유지 관리되는 계약으로서의 Kinect. Windows.Kinect.KinectContract v1은 더 이상 사용되지 않는(non-deprecated) 일급 계약으로 존재하며, 활성 스택(C:\Windows\System32\ht) 및 WdConfig의 KinectSensorEnabled=true와 일치합니다. Kinect 비전은 물리적 Kinect가 없는 하드웨어에서도 적극적으로 유지 관리되는 인프라입니다. 전체 오케스트레이션 파이프라인(nuiservice.exe, KinectMediaSource.dll, 세 가지 추론 트랙, 출력 라우팅)은 섹션 33에 문서화되어 있습니다.

광고는 내부 인프라입니다. AdsContract가 공개 SDK API가 아닌 Internal 계약이라는 것은 광고 전달이 타사 SDK 통합이 아니라 인증 및 스토리지와 동일한 수준에서 OS에 내장되어 있음을 의미합니다.

리테일의 테스트 자동화. Windows.Xbox.TestAutomationContract는 리테일 기기에 포함되어 있으며, 이는 Windows.Xbox.TestAutomationContract가 개발자 모드 도구에서 액세스 가능하다는 것과 일치합니다.


32. UserMgr2

UserMgr2는 활성 로그인 세션을 소유한 대화형 사용자 계정입니다. NTUSER.DAT는 잠겨 있습니다(UserMgr2가 활성 상태). 프로필에서 얻은 주요 결과는 다음과 같습니다.

프로필 구조

경로내용
ntuser.ini줄바꿈 3개
AccountPictures\UserImage.jpg단일 1080x1080 Microsoft 계정 사진, 게이머픽 시스템과 별개(섹션 3.2 참조)
AppData\Local\Packages\

권한 참고

Device Portal 정션은 DevToolsUser 권한이 아닌 UserMgr2 권한으로 확인됩니다(섹션 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 참조):

  • 입력: 깊이, IR, 컬러 프레임
  • 출력: 신원(누구인지), 표정(감정), 시선(주의 방향), 입술 상태(열림/움직임), 외모 속성(안경, 수염)
  • 신원 출력은 얼굴 기반 자동 로그인을 위해 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는 액세스 제어 메커니즘입니다. 프로세스는 NUI 데이터를 수신하려면 적절한 NT 기능을 보유해야 합니다. 이는 게임 타이틀 액세스, 셸 액세스, 개발자 액세스를 별도로 게이팅합니다.

소비자(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를 개발자 모드로 사용하여 수행된 연구입니다. 모든 액세스는 Microsoft가 제공한 개발자 모드 인프라를 통해 이루어졌습니다.

도구 다운로드
도구용도
Windows 탐색기Xbox 네트워크 공유 (지침: https://XBOX:11443/#File%20explorer > Browse)
SSH (DevToolsUser + VS PIN)SystemOS에 대한 셸 액세스
mklink /J네트워크 공유를 통해 드라이브를 노출하기 위한 NTFS 정션 생성
Device Portal (https://XBOX:11443)REST API, 파일 브라우저, 프로세스 목록, 라이브 덤프
dumpbin /IMPORTS, dumpbin /EXPORTS네트워크 공유를 통한 PE 바이너리의 정적 분석
PythonREST API 자동화 스크립트
Phasor콘솔에서 사용할 스크립팅 런타임 (네트워크 공유로 복사, SSH로 실행) 여기서 다운로드
reg querySSH 셸에서 레지스트리 열거
WdApp.exe패키지 관리자 및 ERA 수명 주기 제어 (명령 표면 열거)
WdConfig.exe콘솔 설정 API 열거
ETL trace analysisS:\Deployment\SoftwareDistribution\ 정션을 통한 Windows Update 파이프라인 ETL 추적 분석
Live process dumpsGET /api/debug/dump/usermode/live?pid=<pid>
GhidraCOM 인터페이스 / 드라이버 분석
IDA Pro복잡한 DLL 및 COM 인터페이스의 호출 그래프
XboxTools여러 가지를 위한 나만의 유틸리티 모음
네임스페이스기본 URI주요 엔드포인트
App Deployment/api/appx/packagemanager/설치, 제거, 패키지 목록, 콘텐츠 그룹
Device Manager/api/devicemanager/전체 계층형 디바이스 트리
Dump Collection/api/debug/dump/라이브 프로세스 덤프, 버그체크 덤프, 크래시 제어
ETW/api/etw/WebSocket을 통한 실시간 ETW, 공급자 열거
File Explorer/api/filesystem/탐색, 업로드, 다운로드, 삭제, 이름 변경
Networking/api/networking/ipconfig
OS Information/api/os/머신 이름, OS 정보
Performance/api/resourcemanager/CPU/메모리가 포함된 라이브 프로세스 목록, 시스템 성능 통계
Power/api/power/배터리, 전원 구성표, 절전 연구 보고서
Remote Control/api/control/다시 시작, 종료
Task Manager/api/taskmanager/앱 시작/중지, 프로세스 종료
Bluetooth/api/bt/오디오 디바이스 열거, 페어링, 연결
WiFi/api/wifi/인터페이스/네트워크 열거, 연결, 연결 해제
WER/api/wer/Windows 오류 보고(WER) 보고서 열거 및 다운로드
WPR/api/wpr/WPR 성능 추적 시작/중지/다운로드, 사용자 지정 프로필
플래그영향받는 엔드포인트
NoKernelDumps라이브 커널 덤프, 버그체크 덤프 다운로드
NoUserModeDumps라이브 프로세스 덤프(PID 기준)
NoBugcheckDumps버그체크 덤프 목록/다운로드/제어
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.js676KB캔버스 렌더링
PID이미지사용자비고
156(숨겨짐)SYSTEM66MB 작업 집합, 이미지 이름 표시 안 됨
1456xbdiagservice.exeSYSTEMXbox 진단 서비스
1808EtwUploader.exeSYSTEMETW 원격 분석 업로더
1832StorageManagement.exeDefaultAccountXbox.StorageManagement UWP, IsRunning: false(일시 중단됨)
1904ApplicationClipService.exeSYSTEMGameDVR 클립 관리, 37MB 작업 집합
2032xnetsharedservice.exeSYSTEM파티션 간 네트워킹 브리지
2040NetworkTransferManagerService.exeSYSTEMXbox 콘텐츠 다운로드 관리자
2344WebManagement.exeSYSTEMDevice Portal 웹 서버
2416XUpdMgr.exeSYSTEMXbox Update Manager
2436PRProvisioningService.exeNETWORK SERVICEPlayReady 프로비저닝 서비스
2460XNetConfig.exeSYSTEM네트워크 구성
2468toolsautoexec.exeSYSTEM.xboxunattend 스크립트 자동 실행기
2572sihost.exeDefaultAccount셸 인프라 호스트, 60MB 작업 집합
2836XboxDevService.exeSYSTEMXbox 개발자 서비스 호스트, 37MB
3160xrun.exeDefaultAccount셸 측 게임 실행 조정자
3256MicrosoftXboxSecurityClip.exeSYSTEM런타임 DRM 검증 호스트
3600XboxUI.exeDefaultAccount대시보드 셸 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 드라이버 (Named Pipe File System? Filter System?) ERA 가장에도 사용됨
호스트 OSxvmctrl.sys, XVIO.SYS, FLTMGR.sys (파일 시스템에 없음)
파티션 간 FSxrfs.sys, xbtplinkc.sys, xrmntcl.exe, xrfssvc.exe
디스플레이eraproxyapp.exe, xamapi.dll (Win32 재정의), MPO tier 3
GPUumd12ddi_arden.dll, newbe_xs.dll, xbsc_xs.dll, xg_xs.dll
오디오XVMAudioServer.dll, XAudio2_8/9.dll, 공간 오디오 구성
네트워킹xvnc.sys/xvncbus.sys (가상 NIC), NetXVmService
진단XBBlackbox.dll, xbdiagservice.exe, EtwUploader.exe, EtwPlus.dll (Etx pipeline)
업데이트XUpdMgr.exe, WU 클라이언트 (wuauengcore.dll), Deploy:\ 볼륨
셸Xbox.Shell.Api.dll, XboxUI.exe, Guide.exe, sihost.exe
스트리밍xboxcloudstreaming.dll, XBCastRecv.dll (Miracast)
개발 도구WebManagement.exe (Device Portal), 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 (웨이크 워드/음성 추적), 얼굴 Random Forest 모델 (FaceDetector.bin, FaceRecognition.bin, ExpressionRandomForest.model, 외 8개), 활성 버전 3개 (X:\ht\versions\)
광고AdsLauncher (시스템 앱), Windows.Xbox.System.Internal.AdsContract (WinRT)
레거시(비활성화됨)Zurich (TV 튜너, 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.CopyOnLanContractLAN 게임 복사, 로컬 네트워크 타이틀 전송?
Windows.System.Internal.XboxLive.Auth.AuthContractv2내부 Xbox Live 인증 표면(공개 XBL API와 분리됨)
사이드로드된 개발자 앱 구성만 존재함, Xbox 시스템 앱은 표준 UWP LocalPackages 저장소 경로를 사용하지 않음
채널API용도
시스템 전체 브로드캐스트RtlPublishWnfStateData신체/얼굴/오디오 상태를 모든 WNF 구독자에게 게시
얼굴 로그인LogonUserExExW얼굴 기반 자동 사용자 로그인 트리거
앱별 명명된 파이프명명된 파이프 서버 + GetNamedPipeClientProcessId프로세스별로 게이팅된 출력; 데이터 전달 전 호출자 신원 확인
호출자별 RPCRPC 서버 + RpcServerInqCallAttributesW호출자별 인증된 추론 결과 액세스
영구 신원State Repository (SRDictionaryToPropertySet)인식된 신원을 세션 간에 유지
기능 게이트RtlCapabilityCheck추론 출력에 대한 모든 액세스는 NT 기능 검사를 통해 게이팅됨
소비자비고
Xbox Shell표정 인식 UI 적응
Guide.exe자동 로그인 트리거
XboxUI.exe주의/시선 인식 UI
게임 타이틀NuiVision WinRT 계약(Windows.Kinect.KinectContract v1, 리테일)을 통해
xCloud스트리밍 클라이언트가 NUI 상태를 수신함