Il winbond unlock di Geremia è un hack che attraverso un tool e un intervento hardware da effettuare sul chip MT è in grado di sbloccare i lettori liteon 0225, 0272 e 0401 con flash Winbond.
Il tool si chiama unlockSPI.exe e [URL="http://www.consoleopen.com/forum/tutorial-modchip-e-hardware-xbox-360-xbox360-slim/320-tutorial-e-guida-allo-sblocco-dei-liteon-slim-0225-0272-0401-9504-con-winbond-o-mx.html"]qui[/URL] trovate la guida pratica per usarlo.
Leggendo la guida avrete capito che affinchè il tool funzioni bisogna forare il chip MT fino a tagliare un collegamento interno.
Cerchiamo di capire perchè tagliare quella pista interna e cosa fa il software.
NB: L'articolo è puramente indicativo e le informazioni sono state tratte dai datasheet della STMicroelectronics.
Status Register
Le flash winbond sono dotate di uno status register di 8 bit. Ogni bit ha un determinato scopo e in base al loro settaggio possono essere attivati due tipi di blocchi della memoria, uno software e uno hardware.
La struttura dello status register è la seguente
Write in Progress Bit e Write Enable Bit
Il bit b0 Write in Progress Bit (WIP) se settato a 1 indica che è in corso un operazione di scrittura bloccando temporaneamente altre operazioni sulla flash.
Il bit b1 Write Enable Latch Bit (WEL) viene settato dall'istruzione Write Enable che deve precedere ogni istruzione di scrittura o cancellazione. Se il bit WEL non equivale a 1 ogni operazione di scrittura o cancellazione viene inibita.
Questi due bit sono di tipo volatile e vengono resettati ad ogni riavvio o ad ogni completamento di un operazione di scrittura o cancellazione.
WIP e WEL non hanno molto a che vedere con l'hack di geremia ma servono più che altro ad una corretta gestione della flash per evitare errori di sovrascrittura mentre sono in corso altre operazioni.
Protezione software
La protezione software viene attivata settando gli indici b2 e b3 dello StatusRegister. Questi due bit chiamati BP0 e BP1 (Block Protection Bits ) sono di tipo non volatile e hanno lo scopo di bloccare via software i banchi di memoria della flash in sola lettura.
Prima di essere effettuata una qualsiasi operazione di scrittura o cancellazione vengono controllati questi due bit e a seconda di come sono settati viene consentita o meno la scrittura dei banchi di memoria.
Le combinazioni che ci interessano sono due:
Per i settaggi [BP0=0, BP1=1] e [BP0=1, BP1=0] dovrebbero essere abilitati i permessi di scrittura solo su due banchi, ma non ho dati certi. Poco importa,il firmware occupa 4 banchi di memoria, ci interessano solo le combinazioni mostrate nella tabella.
Dalla tabella si può osservare che se i bit BP0 e BP1 sono settati entrambi a 1 la flash è bloccata in sola lettura. E' il caso specifico dei lettori 0225, 0272 e 0401 su cui è possibile solo leggere il firmware e non scriverlo. Per sbloccare la flash si devono cambiare i valori di questi due bit in 0. ma purtroppo questa operazione non è consentita a causa di un'ulteriore protezione hardware.
Protezione hardware
La protezione hardware viene attivata dalla combinazione del segnale Write Protect (W) e dal bit Status Register Write Disable (SRWD) dello status register. La protezione hardware blocca qualsiasi modifica ai bit non volatili dello Status Register (SRWD-BP0-BP1).
Dalla figura si può intuire il funzionamento. Il segnale Write Protect viene negato e confrontato attraverso una porta AND con il bit SRWD. La protezione hardware viene attivata esclusivamente quando SRWD viene settato a 1 e W si trova allo stato logico basso ( collegato a GND ).
Nei lettori xbox360 bloccati il pin Write Protect della SPI flash è collegato a GND e lo status register è così configurato: 10001100 ( 0x8C )
I bit BP0 e BP1 settati a 1 bloccano i banchi di memoria in sola lettura mentre il bit SRWD=1 con il pin W= 0 non consentono di modificare lo Status Register.
Per sbloccare lo status register e modificare i bit BP0 e BP1 basterebbe portare il pin Write Protect allo stato logico 1. Purtroppo non è così semplice farlo in quanto W è collegato internamente a GND ed è quindi perennemente tenuto allo stato logico 0 senza nessuna possibilità di modificarlo.
Hack di Geremia
Come detto lo status register delle SPI flash dei lettori xbox360 è configurato come 10001100 e il pin Write Protect è collegato internamente a GND.
L'hack di geremia consiste nel lanciare il programma unlockSPI (che prova di continuo a modificare i bit dello status register e a controllarne i valori) e nell'interrompere il collegamento a massa del pin Write Protect portandolo allo stato logico 1 attraverso la punta del dremel che a sua volta è collegata a una tensione di 3,3V.
Appena il pin W viene portato allo stato logico 1 la protezione hardware viene disabilitata e il programma di geremia modifica lo Status Register che assume il valore 00000000.
A questo punto tutti i bit di stato sono settati a 0 e sia la protezione hardware che software vengono disabilitate. Anche se il pin W rimane scollegato e quindi allo stato logico 0 si potranno ancora modificare i bit dello status register in quanto il bit SRWD è settato a 0.
Per poter riabilitare le protezioni hardware e software bisogna riscrivere il valore 10001100 (0x8C) nello Status Register.
Segnalibri