1. A breve aggiorneremo la piattaforma di Reboot per risolvere alcuni problemi con i plug-in, quindi chiediamo ancora un po' di pazienza, Lo staff di Reboot

GAME&WATCH REMAKE ! HACKED !!

Discussione in 'Altre piattaforme' iniziata da student, 12 Nov 2020.

  1. student

    student Staff Livello 43 Staff

    Iscritto:
    30 Ago 2015
    Messaggi:
    4.494
    Like ricevuti:
    4.593
    [​IMG]
    Un giorno prima del rilascio ufficiale un dev non molto conosciuto (tale "stacksmashing") effettua un teardown ed ottiene ragione della nuovissima "mini" di Nintendo in una manciata di ore; in realtà l'aggeggio non è una vera miniconsole ma una riproduzione dei vecchi Game&Watch in versione rivisitata moderna con il gioco NES Super Mario Bros ed altre amenità che motivano l'acquisto ai nostalgici ed ai più curiosi !

    Nata per celebrare il 35esimo anniversario di Super Mario ecco la sua presentazione pubblicitaria ufficale:


    Ufficialmente abbiamo dunque 3 giochi:
    [​IMG]

    più una funzione di orologio digitale che presenta 35 "easter eggs" da scovare:
    [​IMG]


    La console puo'essere vostra già da subito con Amazon alla modica cifra di circa 80€ ma se volete di più continuate a leggere :smile:


    Il teardown ha portato alla scoperta di questi dati:
    [​IMG]

    CPU: STM32H7B0VBT6, un Cortex-M7 con 128 KBytes di memoria Flash e 1024 KBytes di RAM.
    [​IMG]

    Memoria Flash: Macronix 25U8035 da 8Mb (1MB).
    [​IMG]

    Vengono subito individuati i possibili "accessi" fisici:
    [​IMG]

    Che vengono prontamente esplorati:
    [​IMG]

    Identificando la ROM di Super Mario in esecuzione in RAM (confrontata con il file della ROM originale):
    [​IMG]

    … ed infine l'agognato:
    [​IMG]


    Ne sentiremo presto delle belle ma con soli 8megabit a disposizione per ora non aspettiamoci molto senza una hard mod che ne espanda le specifiche hardware !




    UPDATE 1

    I flash chip da 1MB (8Mbit) è offuscato attraverso un pattern XOR; il dev lo ha scoperto facendo cosi:

    - collegato la console via jtagger e scoperto che è protetta; nello specifico la CPU permette 3 livelli di protezione (chiamati RDP levels):
    level 0 = nessuna protezione
    level 1 = lettura flash CPU protetta ma alcuni strumenti di debug permessi come il RAM dumping
    level 2 = impossibile qualsiasi forma di debug

    - la nostra console ha una protezione level 1;
    - dumpato il contenuto della RAM (la RAM usualmente contiene dati già decriptati dalla CPU)
    - cercato bytes della ROM originale di Super Mario Bros all'interno del dump (trovati!)
    - ora il dev ha modificato alcuni bytes nel flash chip scoprendo che il gioco modificato ancora partiva (importante perchè significa che il contenuto del flash chip non è verificato)
    - a questo punto ha scritto valori arbitrari nel flash chip per vedere come questi venissero decriptati dalla CPU scoprendo il pattern XOR di offuscamento (offuscare è diverso da criptare); in pratica i bytes originali in chiaro vengono XORati ottenendo bytes differenti: conoscendo la stringa di cifratura XOR si riapplica al contrario e si riottengono i bytes originali. Questo tipo di attacco si chiama "plain text attack" cioè è possibile ricavare il dato offuscato perchè si conosce il valore del dato originale (dump originale di una ROM), se avete visto il film su Turing qualcosa dovrebbe tornarvi :smile:

    Quindi il flash chip è stato compreso ed è possibile scriverci valori arbitrari grazie alla mancanza di verifica dei dati scritti in esso.

    Il firmware originale della CPU non puo'essere letto ma puo'essere riscritto.

    Adesso resta da capire se: il flash chip contiene codice modificabile (es. l'emulatore) oppure tutto è gestito dalla CPU; contemporaneamente si cerca un sistema (forse qualche glitch) per dumpare la flash della CPU (cioè il firmware di 128KB, che è diverso dal contenuto dal flash chip da 1MB in quanto risiede all'interno della CPU) anche se protetta.

    Il video:




    UPDATE 2

    Grazie ad un bug non ancora spiegato nel dettaglio è stato dumpato TUTTO il firmware della CPU ! Sembra siano stati trovati elementi utili per pensare che ci sia una sorta di test mode:
    [​IMG]

    Aggiornamenti nelle prossime ore/giorni !




    UPDATE 3

    Running DOOM ! Versione strippata all'osso per i limiti hardware di memoria (sia RAM che Flash).

     
    #1
    Ultima modifica: 23 Nov 2020 alle 15:30
    A jtagger73, IlVampirelloXY, Marvin91 e 3 altri utenti piace questo elemento.
  2. gelderm

    gelderm Livello 6

    Iscritto:
    25 Apr 2017
    Messaggi:
    126
    Like ricevuti:
    59
    Domani o dopodomani gamestop dovrebbe recapitarmene due a casa. Non vedo l'ora!
     
    #2
    Ultima modifica: 13 Nov 2020
    A student piace questo elemento.
  3. IlVampirelloXY

    IlVampirelloXY Livello 17

    Iscritto:
    3 Feb 2016
    Messaggi:
    760
    Like ricevuti:
    333
    H7 è un bel arm cazzuto.… Non si a che frequenza è cloccato mi pare si arriva a 480 mhz.…
    Il crome art per la grafica.… Tutto in un solo chip.…
    Però alla fine scelta molto commerciale... No robba custom, io con il fratello minore (quello senza h) ci ho fatto il porting di emulazione z80 per il replace di una vecchia scheda non più producibile.….. La voglia di metterci una jtag è alta.….
    Per il momento è in carica
    Aggiornamento questo h7 arriva solo a 280 mhz
     

    File Allegati:

    #3
    Ultima modifica: 13 Nov 2020
    A student piace questo elemento.
  4. student

    student Staff Livello 43 Staff

    Iscritto:
    30 Ago 2015
    Messaggi:
    4.494
    Like ricevuti:
    4.593
    Tenere premuto A per 5 secondi in Super Mario Bros per vite infinite.

    Tenere premuto A per 5 secondi in Ball per giocare impersonando Luigi.

    Finire Mario per sbloccare in modo permanente l'Hard mode del gioco !
    [​IMG]
    [​IMG]

    Tenere premuto A per 5 secondi nella schermata dell'orologio per vedere come disegnare Mario accompagnati da una musichetta multilingua con sottotitoli in sottofondo (The Mario Drawing Song) !
     
    #4
    Ultima modifica: 16 Nov 2020
    A jtagger73 e gelderm piace questo messaggio.
  5. IlVampirelloXY

    IlVampirelloXY Livello 17

    Iscritto:
    3 Feb 2016
    Messaggi:
    760
    Like ricevuti:
    333
    Faccio una riflessione,
    È evidente che l'hack potrà essere fatto se la porta usb è collegata al Micro, altrimenti la strada jtag la vedo veramente impraticabile..
    Il Micro ha tutta una serie di moduli di crypt ed encrypt del firmware e sicuramente non c'è su un sistema operativo evoluto (un free rtos?) e a mio parere forse nemmeno un file System.…, quindi vedo un hack come quelli a cui siamo abituati un po' improbabile . Certo con un completo reverse dell 'hardware di potrebbe prob rifare tutto da zero
    Magari un Port di madrigal
     
    #5
    A student piace questo elemento.
  6. student

    student Staff Livello 43 Staff

    Iscritto:
    30 Ago 2015
    Messaggi:
    4.494
    Like ricevuti:
    4.593
    Tutto probabilmente giusto ! I devs di ModMyClassic hanno messo le mani sul prodotto ieri pensando già a vari sistemi per dumpare il firmware, vediamo cosa saltera' fuori :smile:
     
    #6
    A IlVampirelloXY piace questo elemento.
  7. IlVampirelloXY

    IlVampirelloXY Livello 17

    Iscritto:
    3 Feb 2016
    Messaggi:
    760
    Like ricevuti:
    333
    Il nrll
    Da quello che si legge sulla documentazione del micro il firmeware protetto non e' accessibile , il sistema di protezione e' molto sofisticato in questo micro
    upload_2020-11-14_11-59-23.png


    upload_2020-11-14_12-1-12.png

    Forse a questo giro hanno speso niente ……. e hanno fatto un sistema sicuro.
    praticamente hanno risbrolgiato una nucelo della ST
    https://www.mouser.it/datasheet/2/389/stm32f7508-dk-1594019.pdf
    Pre me se si potesse dumpare il firmeware girerebbe su una di queste …
    58 Euro su mouser...
     
    #7
    A student piace questo elemento.
  8. student

    student Staff Livello 43 Staff

    Iscritto:
    30 Ago 2015
    Messaggi:
    4.494
    Like ricevuti:
    4.593
    Dunque: il flash chip da 1MB (8Mbit) è offuscato attraverso un pattern XOR; il dev lo ha scoperto facendo cosi:

    - collegato la console via jtagger e scoperto che è protetta; nello specifico la CPU permette 3 livelli di protezione (chiamati RDP levels):
    level 0 = nessuna
    level 1 = lettura flash CPU protetta ma alcuni strumenti di debug permessi come il RAM dumping
    level 2 = impossibile qualsiasi forma di debug

    - la nostra console ha una protezione level 1;
    - dumpato il contenuto della RAM (la RAM usualmente contiene dati già decriptati dalla CPU)
    - cercato bytes della ROM originale di Super Mario Bros all'interno del dump (trovati!)
    - ora il dev ha modificato alcuni bytes nel flash chip scoprendo che il gioco modificato ancora partiva (importante perchè significa che il contenuto del flash chip non è verificato)
    - a questo punto ha scritto valori arbitrari nel flash chip per vedere come questi venissero decriptati dalla CPU scoprendo il pattern XOR di offuscamento (offuscare è diverso da criptare); in pratica i bytes originali in chiaro vengono XORati ottenendo bytes differenti: conoscendo la stringa di cifratura XOR si riapplica al contrario e si riottengono i bytes originali. Questo tipo di attacco si chiama "plain text attack" cioè è possibile ricavare il dato offuscato perchè si conosce il valore del dato originale (dump originale di una ROM), se avete visto il film su Turing qualcosa dovrebbe tornarvi :smile:

    Quindi il flash chip è stato compreso ed è possibile scriverci valori arbitrari grazie alla mancanza di verifica dei dati scritti in esso.

    Il firmware originale della CPU non puo'essere letto ma puo'essere riscritto.

    Adesso resta da capire se: il flash chip contiene codice modificabile (es. l'emulatore) oppure tutto è gestito dalla CPU; contemporaneamente si cerca un sistema (forse qualche glitch) per dumpare la flash della CPU (cioè il firmware di 128KB, che è diverso dal contenuto dal flash chip da 1MB in quanto risiede all'interno della CPU) anche se protetta.

    Il video:
     
    #8
    Ultima modifica: 14 Nov 2020
    A jtagger73, IlVampirelloXY e gelderm piace questo elemento.
  9. IlVampirelloXY

    IlVampirelloXY Livello 17

    Iscritto:
    3 Feb 2016
    Messaggi:
    760
    Like ricevuti:
    333
    Ai tempi dell 'amstrad cpc 646 mi sono imbattuto nel pattern XOR
    È stata una sfida molto difficile... Lo xor era fatto partendo da un seme ed utilizzando il registro r ( di refresh) che cambia in funzione delle istruzioni
    Quindi non si poteva modificare il loader ( ovviamente da cassetta)……. Lo xor veniva fatto due volte ( cosa che scoprii quando riuscii a passare il primo)
    Visti i tempi gli strumenti te li dovevi fare tutti da solo
    Io avevo il mio programmino per fare il dump della memoria...e il suo editing.… Ma dovetti aggiungere un pulsante sulla linea nmi del Micro. Nel vettore associato introdussi un pezzo di codice che copiava la parte di ram passata sotto la macina dello xor in una zona che non veniva cancellata al riavvio. Potendo ricavare la prima tabella di xor e poi la seconda e ovviamente vincendo la partita.…. Tutto per gioco lanciabile da disco.……
    Ho dimenticato la famiglia di giochi.…. Forse ocean.… È passato troppo tempo

    Lasciamo spazio ai giovani

    L'hack ha preso la piega sbagliata a mio parere
    E devs stanno facendo tutto con jtag, strumenti non da popolo, se non è presente un boot loader usb.… Non si nulla.… Ora che il fw è stato dumpato si può pensare anche di riscrivere tutto, ma serve un buco usb.….
    Spesso c'è modo di attivare dei boot loader presenti nel silicio del Micro, no. Ho indagato su questo in specifico ma sicuramente c'è.. Sempte ammesso che sia attivabile al livello di "sprotezione" che hanno attivato
     
    #9
    A jtagger73 e student piace questo messaggio.
  10. student

    student Staff Livello 43 Staff

    Iscritto:
    30 Ago 2015
    Messaggi:
    4.494
    Like ricevuti:
    4.593
    Purtroppo la porta usb ha collegati solo i pin dell'alimentazione. Ci vorrebbe comunque una hard mod di collegamento della porta usb al SoC dopo aver riscritto il fw per renderla funzionale direttamente da usb.
     
    #10
    A IlVampirelloXY piace questo elemento.
  11. IlVampirelloXY

    IlVampirelloXY Livello 17

    Iscritto:
    3 Feb 2016
    Messaggi:
    760
    Like ricevuti:
    333
    Ma il dfu il Micro lo prevede, ammesso che i relativi pin siano liberi e che il livello di sicurezza uno lo consenta, se il Micro parte attivato in boot loader ne fai il flash direttamente da usb. Il componente ha pin piccoli ma saldabili.….
     
    #11
  12. student

    student Staff Livello 43 Staff

    Iscritto:
    30 Ago 2015
    Messaggi:
    4.494
    Like ricevuti:
    4.593
    Si si, hardmoddando si può fare tutto! Oramai questo g&w può essere considerato una sorta di dev board.
     
    #12
    A IlVampirelloXY piace questo elemento.
  13. IlVampirelloXY

    IlVampirelloXY Livello 17

    Iscritto:
    3 Feb 2016
    Messaggi:
    760
    Like ricevuti:
    333
    Come già scritto era una dev board.… È stata solo risbrogliata
     
    #13
  14. Coolguy

    Coolguy Livello 15

    Iscritto:
    1 Feb 2015
    Messaggi:
    577
    Like ricevuti:
    93
    Scusate l'OT:
    Ma un articolo sui primi dump dei bdr ps5?
     
    #14
Sto caricando...
Potrebbe interessarti anche
  1. Marty
    Risposte:
    12
    Visite:
    1.557

Condividi questa Pagina