[Scena Wii U] Rilasciato browser Exploit Wii U per firmware 5.0.0 e 5.1.0

Trapelato sul web un mese e mezzo fa il browser exploit per Wii U riceve un nuovo aggiornamento che consente di avere accesso negli ultimi aggiornamenti del firmware 5.00 e 5.10.

Wii-U-Region-Locked

Attraverso il browser web si è stati in grado di modificare in parte alcune chiamate nel gioco Mario Kart 8, in sostanza è stato possibile effettuare cambiamenti nella RAM del titolo che avrebbero consentito una serie di piccole modifiche in varie risorse del gioco come nella riproduzione per la musica di sottofondo, il cambio dei nomi nei diversi elementi, la corruzione della fonte nel gioco, il crash della console o l’alterazione intenzionale del menu sorgente della Wii U.

Questo archivio contiene un metodo per eseguire codice all’interno del browser web del Wii U, fornendo un mezzo per eseguire codice arbitrario in user space sul sistema operativo del processore espress.

Ciò non ci permette di eseguire codice in modalità kernel space Espress, almeno non ancora, ma viene limitato solo alla modalità user space.

kernel space viene riservato al kernel, alle estensioni del kernel, ai driver e roba del genere mentre per user space trovano posto le applicazioni eseguite in modalità utente (come per le librerie input/output, l’accesso alle routine del file system e delle applicazioni dell’utente).

Cosa c’è dentro

All’interno di questo repository, troverete una serie di strumenti che consentiranno di compilare il proprio codice C in modo da poterlo incorporare all’interno di una pagina web per essere eseguito su Wii U.

Ci sono anche alcuni esempi di codice che fanno alcuni compiti sul Wii U. In particolare, vi è un client RPC che permette al Wii U di eseguire comandi inviati in rete da uno script Python.

Niente di tutto questo potrebbe risultare utile per l’utente medio, solo un reale programmatore, che abbia conoscenze in linguaggio C potrà trarne benefici esplorandone il sistema.

Utilizzo del sistema di compilazione C

Questo archivio contiene un sistema di compilazione C, che consente di compilare il proprio codice C e incorporarlo all’interno di una pagina web per essere eseguito su Wii U. La pagina Web contiene codice Javascript che innesca il bug WebKit e passa il controllo al codice C.

Avviando il proprio codice C su Wii U darà pieno accesso completo alle librerie SDK. L’indirizzo di ogni funzione può essere recuperata se si conosce il nome del simbolo contenente il nome della libreria (vedere più avanti). Prima di utilizzare il sistema di compilazione C, è necessario avere i seguenti strumenti:

  • Ambiente Unix-like shell (usare Cygwin per ottenere questo su Windows)
  • devkitPPC (necessario per compilare e linkare il codice C)
  • Python 3.x

Passare alla radice del repository nella shell. Quindi, immettere il seguente comando nella riga di comando:

  • ./Build.sh [nome file] [versione]

Accesso alle librerie SDK

Quando si scrive codice C su di un PC, dovrete avere a disposizione la libreria standard, una serie di funzioni utili che è possibile chiamare senza preoccuparsi di come esse funzionino realmente. Per la scrittura di codice su Wii U, c’è qualcosa di simile: le librerie SDK.

Le librerie SDK forniscono l’accesso alla grafica, funzioni di rete audio, ingresso e filesystem. Le librerie SDK sono accessibili da qualsiasi applicazione, tra cui il browser web, il che significa che se il codice è in esecuzione al suo interno, utilizzando un exploit si potrà ottenere anche l’accesso.

Tutte le librerie SDK sono simboli completi disponibili per ogni funzione, rendendo più facile il reverse engineering, questo significa che è possibile ottenere l’indirizzo di una funzione per la biblioteca e il nome del simbolo. Prima di utilizzare l’SDK, è importante capire il modello di collegamento del Wii U.

Ogni eseguibile su Wii U utilizza il formato ELF, con lievi modifiche (questo formato è chiamato RPX). I file RPX contengono un elenco delle importazioni, che specificano un simbolo importato da una libreria esterna con il nome della libreria stessa.

Le librerie a cui fanno riferimento simboli importati utilizzano lo stesso formato ELF modificato, ma sono chiamati RPL invece. Quando viene caricato un RPX, il caricatore eseguibile  carica anche le sue dipendenze RPL. Ogni biblioteca SDK è un file RPL. Ad esempio, gx2.rpl è il nome della libreria grafica, vpad.rpl è il nome della libreria di input Gamepad, e nsysnet.rpl è il nome della libreria socket BSD.

C’è anche un RPL speciale chiamato coreinit.rpl, che è molto interessante, coreinit offre accesso diretto a molti dei servizi Cafe del sistema operativo di base, compresa la gestione della memoria e la filettatura, coreinit risulta anche molto utile per fornire le funzioni di cui avevamo bisogno nella nostra catena POR.

Ora che abbiamo definito i 3 punti che spiegano il funzionamento del Software Development Kit (SDK), vediamo ora come utilizzarlo.

Come si usa

Le librerie SDK espongono molte funzioni, ma come si fa a ottenere i loro indirizzi? Si potrebbe semplicemente hardcode (reverse engineering).Inoltre come si fa a trovare l’indirizzo da codificare in primo luogo? C’è un metodo migliore disponibile, che consente di ottenere gli indirizzi dei simboli in modo dinamico, in forma di funzioni coreinit OSDynLoad.

È possibile accedere a queste funzioni, includendo coreinit.h nel file C. Ci sono due funzioni necessari per avere un simbolo, dividendo il processo in due parti. La prima funzione è OSDynLoad_Acquire(), che carica il RPL specificato. OSDynLoad_Acquire() accetta due argomenti: il nome RPL come una stringa e un puntatore ad un intero.

Il nome RPL è piuttosto semplice, il puntatore ad un intero è dove coreinit sarà salvare la posizione della biblioteca. OSDynLoad_Acquire() può essere utilizzato anche per ottenere la posizione di una libreria che è già caricato.

La seconda funzione è OSDynLoad_FindExport(), che trova un simbolo determinato in un luogo di una libreria. Prende quattro argomenti: il numero intero (non il puntatore) utilizzato in OSDynLoad_Acquire(), solo zero, il nome del simbolo come una stringa, e l’indicazione di dove deve essere memorizzato l’indirizzo simbolo.

Prototipi di funzione

Per fare un esempio, diciamo che ho voluto il simbolo VPADRead() dal vpad.rpl. Se ho un intero chiamato “manico”, mi chiama prima OSDynLoad_Acquire (“vpad.rpl”, e maniglia); per ottenere la posizione della RPL.

Poi, se ho un puntatore a funzione per VPADRead() chiamato “VPADRead”, io chiamo OSDynLoad_FindExport (maniglia, 0, “VPADRead”, e VPADRead); a retrive VPADRead() s ‘indirizzo. Semplice. Per ulteriori esempi, guarda rpc.c. sistema RPC

Oltre a consentire di scrivere il proprio codice C per funzionare su Wii U, questo repository include anche un sistema di RPC per sperimentare in modo interattivo con il Wii U.

Esso consente di inviare comandi sulla rete per il vostro Wii U da eseguire. I due componenti del sistema RPC sono il server, un programma in C in esecuzione sulla Wii U di ascolto per i comandi, e il cliente, uno script Python che invia i comandi.

Per utilizzare il sistema di RPC, in primo luogo assicurarsi che il PC e Wii U sono collegato alla stessa rete. Una volta che sono, scoprire l’indirizzo IP del vostro PC usando il comando “ipconfig” (Windows) o il comando “ifconfig” (Linux e OS X). Modifica PC_IP in socket.h essere l’indirizzo IP del vostro PC (anziché 192.168.1.4, che attualmente è).

Costruire rpc.c e andrà nelle vostre htdocs. Successivamente, inizia rpc.py in una sessione interattiva di Python (IDLE o IPython è una buona scelta). Una volta che hai iniziato rpc.py, accedere al browser exploit che hai appena fatto sul vostro Wii U.

Dovrebbe apparire per terminare il caricamento della pagina, e l’interfaccia utente continuerà ad essere reattivo, ma la navigazione web verranno disattivate. A quel punto, la shell Python dovrebbe dire qualcosa sulla falsariga di “Connected by” seguito da IP della Wii U. Ora potete controllare il vostro Wii U con questi comandi:

  • rpc.read32 (indirizzo, num_words) – Leggere num_words parole che iniziano a indirizzo , restituendo una lista di parole
  • rpc.write32 (indirizzo, parole) – Scrivere ogni parola dell’elenco parole a memoria a partire indirizzo
  • Simbolo (rplname, nomesimb) – Prendi il simbolo nomesimb da RPL rplname e trasformarlo in una funzione Python callable
  • rpc.exit () – Uscire dal browser e tornare al menu

Crediti

  • Marionumber1 – disegno della catena POR / attuazione
  • TheKit – WebKit bug constatazione, implementazione catena POR
  • Gadget Trovare POR – Hykem
  • Bubba – Test candidati WebKit bug
  • Comex – Accesso agli coreinit e WebKit binari
  • Chadderz – Memoria cieco dumping 5.0.0
  • Relys – exploit Test

Fonte e download

(Visited 164 times, 1 visits today)

14 commenti

  1. era meglio se si fossero messi al lavoro prima per la serie 3xxx e 2xxx e fat comprese.
    tanto le 4xxx continuano a funzionare.

    1. stanno lavorando anche su gli altri modelli non solo le 4k… io credo e spero che nell arco dei prossimi mesi e magari anche nei prossimi anni riusciranno a bypassare qualsiasi cosa… grandi cose sono riusciti a fare i team cobra e e3 si tratta solo di aspettare e farli lavorare…

  2. Sono stati effettuati dei test anche su psvita con questo exploit dallo staff di wololo e di gamesonic, e l’exploit funziona ma non siamo riusciti ad ottenre più del crash del browser

  3. anche perchè lanzillotta fa un’ottimo lavoro, parte dalla mattina presto fino notte tarda a trivellare biteyourconsole di news. e uno dei siti più attivi. complimenti 😉

  4. credo che l’exploit riguardi più che altro il tipo di browser montato che su Wii U è il NetFront Browser NX v2.1 (3.0 in seguito al software di sistema), che utilizza il motore di rendering WebKit.
    anche Playstation 4 include un WebKit browser ma a differenza di Netfront si basa su di un Webkit core Google Chrome e Apple Safari , e di conseguenza dà un punteggio impressionante in HTML5.
    Su Playstation Vita non abbiamo avuto modo di appurare ma crediamo si basi anch’esso su NetFront Browser

    1. l’exploit funziona su psvita e ps4 e ti posso lòinkare anche i file se vuoi,solo che non può portare ma niente a meno che non si diasbiliti una porotezione che sony diversamente da nintendo ha messo nei browser delle sue console.

        1. Io ho testato su psvita e l’exploit funziona,ci sono anche dei video fatti da the z e hackinformer che dimostrano il funzionamento

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *