Seleziona una pagina
[FAQ] Reversing di ...
 
Notifiche
Cancella tutti

[FAQ] Reversing di un glitch chip (qualcuno ha detto DGX?)

3 Post
3 Utenti
0 Reactions
223 Visualizzazioni
Post: 2
Topic starter
(@freelancer)
Registrato: 12 anni fa

Premessa:


Questa è una procedura "black box" per catturare i parametri di timing di un chip RGH. Funziona con tutti glitch chip coolrunner ed in teoria anche con il DGX che è un tipo particolare di glitch chip. Le informazioni che riporterò sono frutto di una discussione interessante avvenuta su un altro forum, si tratta di un work in progress di più utenti che mi limito a riepilogare. Lo scopo è quello di cooperare per conoscere di più, nessuno di noi ha interesse a danneggiare questo o quel team o a clonare questo o quel chip.

Come funziona un glitch chip:


Un glitch chip classico è un CPLD che opera eseguendo tre azioni:

1) A partire da un certo post count A viene inviato un bitstream sul bus I2C che rallenta il clock della console.

Il post count è il numero di commutazioni che ha subito il bit POST_OUT1 a partire dall'ultimo reset, è associato direttamente a dei post code particolari. In altri termini quando il post count assume un dato valore vuol dire che il codice che gira sull'xbox ha raggiunto una posizione precisa che può essere utilizzata come punto di riferimento.

2) A partire da un certo istante T viene inviato impulso di reset di ampiezza W.

T può essere rappresentato mediante una coppia (B,C) con B post count maggiore di A e C numero di commutazioni del clock al partire dall'istante in cui il post count ha assunto il valore B (clock count).

3) A partire da un certo post count D > B viene inviato un bitstream sul bus I2C che riporta alla normalità il clock della console.

Reversare il glitch chip vuol dire trovare i parametri A, B, C, D e W. Noti questi parametri si può ricostruire il codice VHDL della CPLD.

Per una console slim trinity ad esempio A = 10 , B = 11 , C = 17357, D = 12, W = 2.

Per una corona A = 10 , B = 11 , C = 21864, D = 12, W = 3.

Il DGX opera in modo simile con la differenza che dovrebbero esserci più impulsi di reset, quindi bisogna trovare più valori del tipo B1,C1,W1 , B2,C2,W2 , ...

Reversing del CPLD:


Bisogna innanzitutto disattivare il quarzo del chip (se presente), il clock alla CPLD sarà fornito dalla porta parallela.

Ad esempio sul DGX il punto CLK va preso sotto l'oscillatore che andrà dissaldato:

Le connessioni tra CPLD e porta LPT vanno realizzate utilizzando uno dei seguenti cavi:

Cavo Base:
Cavo Alternativo:

Il riquadro (1) va usato due volte, per collegare LPT_PIN3 a CLK ed LPT_PIN4 a POST_OUT1.

Il riquadro (2) va usato una volta sola per collegare LPT2 ed LPT13 a CPU_RST.

Il cavo alternativo permette di catturare sia l'impulso di reset che il bistream I2C. Per quest'ultima operazione basterà connettere il punto B a I2C_SDA invece che a CPU_RST.

Il chip va alimentato normalmente (a 5V, a 3.3V o ad 1.8V come previsto dalle sue specifiche).

Il cavo costruito andrà alimentato a 3.3V.

Il GROUND del chip ed il GROUND dell'alimentatore 3.3V del cavo (regolatore, trasformatore, ecc) vanno messi a massa comune con il PC (ad es. connettendoli entrambi al pin18 della parallela).

A questo punto per iniziare a "sniffare" le operazioni del CPLD basterà scaricare questo archivio:

http://www.mediafire.com/download/mvyifpskirgxe3d/capture.zip

estrarlo ed avviare capture con la linea di comando:

capture

(di default l'indirizzo vale 0x378 che in genere è la LPT1)

Premendo il tasto P si incrementa il post count. I tasti R ed Q servono rispettivamente a resettare il CPLD e ad uscire dal programma.

La procedura è la seguente:

- Si avanza il post count fino al punto che vogliamo analizzare.

- Si aspetta per vedere se il programma rileva dei cambiamenti (il clock è solo qualche centinaio di Hz bisogna aspettare qualche secondo).

- Se non cambia niente quando il clock counter arriva a 200.000 probabilmente a quel post count non succede più nulla di rilevante e si può passare al successivo premendo P.

Le slim incominciano ad essere "interessanti" intorno al post count 10.

I valori che otterrete corrispondono esattamente ai parametri presenti nel file VHDL del CPLD, come testimoniato dallo screen qui sotto relativo ad un CPLD programmato per glitchare una trinity:

Divertitevi e non dimenticate di divulgare le vostre scoperte 😉

2 risposte
Post: 366
(@fixx1983)
Registrato: 12 anni fa

Ottimo free, stickata come FAQ 😉

Rispondi
Post: 175
(@fabiaiz)
Registrato: 12 anni fa

Come sempre mi inchino davanti alle tue conoscenze

Rispondi
Condividi: