Le console Microsoft Xbox One permettono di eseguire applicazioni per PC Windows 10 o per meglio dire universali (dalla piattaforma UWP), ma esiste un piccolo trucco portato alla luce dal developer XVMM che tramite l’utilizzo di alcuni strumenti è riuscito ad eseguire nativamente applicazioni Win32.
Lo sviluppatore ci tiene a precisare come non si tratti di un exploit, ne tanto meno di una scoperta rivoluzionaria, si cerca semplicemente di sfruttare le funzionalità di debug fornite dalla console in modalità sviluppatore.
Prerequisiti
- La console deve trovarsi in modalità sviluppatore (ovviamente).
- Su PC dovreste essere in grado di eseguire un client SSH/telnet. (PuTTy, ecc..).
- Aver installato almeno Visual Studio 2015 o 2017.
Guida
La connessione SSH su Xbox One si rende disponibile solo in modalità sviluppatore, se si sceglie di utilizzare il client telnet su Windows, assicuratevi di abilitarlo prima:
- Pannello di controllo -> Programmi -> Attiva o disattiva le funzionalità di Windows.
- Selezionare “Client Telnet”.
- Fatto.
Per prima cosa eseguire il client per SSH, nel nostro caso PuTTy, e connettevi utilizzando l’indirizzo IP della console e la porta predefinita, vedrete apparire un pop-up, cliccate su Si.
Ora il client vi chiederà di inserire nome utente e password. Assicuratevi di avere la Dev Home aperta e cliccate su “Show Visual Studio Pin”. Prendete nota del pin, ma ricordatevi che questo cambierà dopo un breve periodo di tempo!
- Nome utente: DevToolsUser
- Password: Il pin di Visual Studio fornito in Dev Home.
Se tutto è andato a buon fine, si può continuare ad usarlo, in caso contrario, utilizzate il seguente comando (senza virgolette) per inizializzare il telnet:
devtoolslauncher LaunchForProfiling telnetd "cmd.exe 24"
Ora potrete connettervi! Aprite il prompt dei comandi su Windows e digitate: telnet [consoleip] 24
(esempio: telnet 192.168.1.5 24
).
La sessione telnet verrà eseguita con i privilegi VSProfilingAccount, che è la stessa cosa se viene eseguito dal debugger VS durante la creazione di app UWP.
Tenete presente che non c’è troppa differenza in questa fase. Permette di avere solo un po’ di flessibilità in più.
Esplorazione del file system di base
Puoi farlo accedendo a Xbox Device Portal su PC e andando alla scheda File Explorer. In alto a destra dovreste intravedere l’opzione Browser.
Usando questa funzione, vedrete apparire le credenziali che potranno essere utilizzate per accedere allo scratch dello sviluppatore. Possiamo usare lo sviluppatore scratch per memorizzare i nostri junction per navigare attraverso le unità montate.
Ora utilizzando telnet o SSH, portarsi su D:\DevelopmentFiles
.
- >D:
- >cd DevelopmentFiles
- >mkdir Links
Ed eseguire quanto segue:
- >mklink /J "Links\System" C:\
Se il risultato ha esito positivo, ricontrolla:
- >cd links\system
-> dir
Se compare un elenco di directory, entrateci dentro! Volendo è possibile ottenere un accesso più semplice aprendo Esplora file su Windows e digitando quanto segue nella barra del percorso del file: \\[consoleip
Richiederà il login per l’accesso. Se aprite il portale del dispositivo e andate alla scheda Esplora file, quindi sul lato destro premere Sfoglia; ti verranno dati i dettagli da utilizzare. Una volta entrati, è possibile accedere alla maggior parte, ma non a tutti i volumi.
(Fare riferimento a “Punti di montaggio” per saperne di più)
Bene, ora ho intenzione di fornire un piccolo “modello” che è possibile utilizzare per scrivere un’applicazione standard “Win32”. L’unica differenza è che questa funzionerà su Xbox One.
[stextbox id=’info’]Nota: Richiede l’SDK di Windows 10 compatibile con Xbox One e probabilmente Visual Studio 2017, o almeno 2015.[/stextbox]
File XRF: Allegato sotto.
Posiziona il file ovunque sulla console ed eseguite “xrf cinfo” per uno spit di base di informazioni sulla console.
Informazioni aggiuntive
Introduzione di base
Xbox One attualmente gestisce 3 sistemi operativi separati con priorità ciascuno con i propri scopi. Questi sono conosciuti come:
- Sistema operativo host
- Sistema operativo
- Sistema operativo di gioco
Sistema e sistema operativo di gioco risiedono entrambi nella propria partizione:
- Accesso alle risorse condivise – Esegue le app e rende l’esperienza dell’interfaccia utente.
- Accesso esclusivo alle risorse – Esegue i giochi e ha più priorità con le risorse.
Queste operazioni sono memorizzate in un Xbox Virtual Disk (XVD) con un piccolo bootloader, attualmente assunto in base a precedenti dump di dati, che contiene il kernel, l’HAL e altri importanti file di sistema. Questi vengono memorizzati nella
Sezione Dati utente.
- host.xvd | ExtHost.xvd
- System.xvd
- era.xvd
System e Host vengono memorizzati sia nella flash che sul disco rigido della console. Il gioco OS XVD viene memorizzato con ogni gioco pacchettizzato rilasciato per Xbox One.
Anche se questo richiede un altro aspetto; sembra che quando un utente lancia un gioco, System avvia una chiamata che monta il pacchetto nella partizione ERA che poi si avvia nel sistema operativo di gioco prima di montare e avviare il gioco.
Punti di montaggio:
All’interno della partizione SRA, i seguenti comandi sono montati su ciascuna lettera di unità:
\\.\C:\ -> System.xvd
\\.\D:\ -> USB (in genere per retail) (Development scratch per dev-mode)
\\.\J:\ -> SystemTools.xvd (solo dev-mode)
\\.\L:\ -> en-%s (lingue)
\\.\M:\ -> SystemMisc.xvd
\\.\P:\ -> Page file
\\.\S:\ -> Settings.xvd | Settings-devkit.xvd
\\.\T:\ -> Temp.xvd (o qualsiasi altra cosa)
\\.\U:\ -> user.xvd / user-devkit.xvd
\\.\X:\ -> SystemAux.xvd
\\.\Y:\ -> SystemAuxF.xvd
Download: XRF-Templ.zip
Download: Source code XRF
Off-topic: ma ci sarai una modifica per xbox one?!
speriamo che porti finalmente al suo hacking!! che palle…