ANALISI E VALIDAZIONE DEI DUMP DUAL NAND E NOR
ATTENZIONE! Questo tutorial cerca di analizzare in maniera più approfondita possibile i dump estratti con il vostro hardware flasher, verificando la quasi totalità dei check noti. Ciò nonostante, né io né lo staff di ConsoleOpen ci assumiamo la responsabilità in merito ad eventuali brick delle vostre PS3 a causa di dump corrotti!
Come sapete, se affrontate un downgrade hardware a 3.55 o anche se dovete patchare il dump delle vostre NAND/NOR con le patch di Rogero, il punto cruciale del lavoro è stabilire se il vostro dump è genuino oppure corrotto. Infatti, prima di scrivere qualsivoglia file all'interno della vostra memory flash e perciò andare a sovrascrivere in modo irreversibile il vostro dump originale, dovete essere certi che i dump che avete estratto siano validi e verificati. Se doveste sovrascrivere i dati della vostra memory flash e accorgervi a posteriori che i vostri dump sono corrotti, la console verserà in uno stato di permabrick e non sarà più recuperabile! Perciò meglio spendere qualche minuto in più con la verifica dei dump, piuttosto che ritrovarsi con una console in seguito non più utilizzabile.
La questione quindi è delle più delicate, in quanto i controlli che si vanno ad effettuare sono innumerevoli e alcuni offset da analizzare di difficile comprensione. Nel momento in cui viene scritto questo tutorial, lo "stato dell'arte" per quanto concerne i tool automatizzati per la verifica e la validazione dei vostri dump, prevede l'analisi solo ed esclusivamente dei dump delle NOR; per le NAND è un work in progress (agli inizi).
Ciò nonostante, questi tool automatizzati, sebbene controllino una miriade di dati e vi possano confermare per la quasi totalità delle volte se un dump è effettivamente valido o meno, possono essere comunque soggetti a qualche bug nel codice. Il consiglio mio (e anche di chi ha sviluppato questi programmi) è quello di verificare sempre e comunque a mano determinati offset del dump. Con questo controllo incrociato tra tool automatizzato (vi ricordo che sulle NAND al momento vi dovete basare esclusivamente sull'analisi manuale dei dump) e verifica manuale dei vostri dump, avrete la quasi certezza (esiste una certezza assoluta? Difficile stabilirlo...) che essi siano validi e verificati, potendo così proseguire con il vostro hack, con il recupero di una console in semibrick o qualsiasi altra cosa ci dobbiate fare.
Dopo questa lunga ma doverosa premessa, passiamo all'aspetto pratico dell'analisi e della validazione.
Materiale occorrente:
- Svariati dump della vostra console (un solo dump non è sufficiente, vanno sempre comparati tra loro per vedere se sono identici)
- L'HEX editor HxD v1.7.7.0 o superiore--> [URL="http://mh-nexus.de/en/hxd/"]CLICCA[/URL]
- Flowrebuilder v4.2.3.0 o superiore --> [URL="http://www.ps3devwiki.com/wiki/Validating_flash_dumps#Flowrebuilder"]CLICCA[/URL]
VALIDAZIONE DEI DUMP DUAL NAND
Nel momento in cui viene stilato questo tutorial, non esistono tool automatizzati per il controllo dei dump NAND PS3. Spetterà quindi solamente a voi analizzare e validare tali dump, quindi procedete senza trascurare alcun passaggio.
Comparazione dei dump:
Prima di tutto dovete aver eseguito molteplici dump (meglio dai 3/4 dump in su) per ciascuna NAND. Quindi bisogna comparare tra di loro i vari dump (ovviamente i dump della prima NAND andranno comparati tra loro ed i dump della seconda NAND sempre tra di loro). E' chiaro che se tentate di comparare un dump della prima NAND con uno della seconda, vi dovrà per forza dare delle differenze. Per comparare i dump, potete usare il prompt dei comandi di Windows, oppure HxD. Per usare il prompt dei comandi, tenete premuto SHIFT e cliccate col destro mouse su un punto vuoto della cartella che contiene i vostri dump. Selezionate dal menù contestuale Apri finestra di comando qui. Ora digitate il seguente comando:
dove nanddump1-1.bin e nanddump1-2.bin sono i nomi dei vostri dump. L'output che vi dovrà apparire sarà il seguente:fc /b nanddump1-1.bin nanddump1-2.bin
Se i dump sono differenti, avrete una serie più o meno lunga di stringhe, e potete interrompere la scansione in qualsiasi momento con CTRL + C. Fatto il primo controllo, passate all'incrocio dei dump, cioé il primo con il terzo, il secondo con il terzo, ecc. Assicuratevi di avere almeno 2/3 dump per ciascuna NAND identici.
Per quelli di voi meno predisposti all'uso del terminale, è possibile far ricorso a HxD. Aprite il programma e aprite i vostri dump, ad esempio quelli relativi alla prima NAND. Andate su Analysis --> File-compare --> Compare e scegliete 2 tra i vostri dump che avete aperto. Se il programma vi riporta che non ci sono differenze, siete apposto e potete anche in questo caso incrociare i "compare" tra tutti i vari dump.
Statistiche dei dump separati:
Le statistiche dei dump NAND andrebbero controllate (e lo faremo!) dopo l'interleave dei dump con Flowrebuilder, ma per scrupolo controlliamo le statistiche anche dei dump separati. Per farlo usate sempre HxD e, dopo aver aperto i vostri due dump (della NAND 1 e della NAND 2) cliccate su Analysis --> Statistics. Posizionate il mouse sulla prima colonna per avere la percentuale delle statistiche 00, lo stesso fate per l'ultima colonna, relativa alle statistiche FF. Ecco il range di valori che dovete riscontrare per entrambi i dump:
00 --> 1,43% - 2,68%
FF --> 18,25% - 24,54%
Restanti --> minori di 0,5%
Interleave dei dump NAND:
Ora, a differenza di un dump NOR in cui potete controllare direttamente il suo contenuto dopo averlo estratto dalla console, per le NAND il discorso è diverso. Bisogna eseguire un interleave dei due dump che genererà un dump unito, che corrisponde in sostanza all'immagine che viene presentata al south bridge durante il normale funzionamento della console. Colui che si occupa di far figurare i due dump come uno solo all'interno della console è lo Starship2 (o SS2), per gli amanti hardware...
Aprite Flowrebuilder, selezionate la prima voce, UNSCRAMBLE then interleave two NAND flashes into one unified dump, come Flash 0 (TOP) selezionate il dump della prima NAND, come Flash 1 (BOTTOM) selezionate il dump della seconda NAND, poi selezionate un nome appropriato come OUTPUT (Interleaved) e premete Execute Operation.
Al termine avrete 3 possibili scenari:
- Le NAND vengono unite correttamente (indipendentemente che il tool vi segnali eventuali bad block o meno, vi restituirà OPERATION COMPLETED!)
- Le NAND vengono unite correttamente (come il punto 1), però se andate all'interno della cartella nomeoutput.ext vi accorgete che ci sono solo due file da 0kB denominati bootloader_0 e bootloader_1. In questo caso avete invertito la prima NAND con la seconda, scambiate i due dump in Flowrebuilder e tenete a mente che quella che pensavate essere la prima NAND è in realtà la seconda e viceversa
- Flowrebuilder vi restituisce errore. Purtroppo al momento non esiste una soluzione pubblica per queste console e il mio consiglio è quello di aprire un thread in questa [URL="http://www.consoleopen.com/forum/hack-ps3-ps3-slim/"]sezione[/URL] e attendere consigli. Il motivo è dato dalla non corretta rimappatura dei bad block presenti in aree delicate del dump
Controllo dei file estratti:
Ora che i due dump sono stati correttamente uniti, recatevi all'interno della cartella nomeoutput.ext e facciamo il primo controllo dell'integrità dei dati estratti con Flowrebuilder. Dovete avere le seguenti cose:
- Una cartella asecure_loader contenente il file metldr
- Una cartella ros contenente due sottocartelle ros0 e ros1, corrispondenti ai vostri ultimi due firmware a cui eravate; in entrambe le cartelle dovete avere un minimo di 19 ad un massimo di 25 file
- Oltre alle 2 cartelle dovete avere i seguenti 9 file: bootloader_0, bootloader_1, cCSD, cISD, creserved_0, cvtrm, eEID, trvk_pkg e trvk_prg
Statistiche del dump unito:
Fatti i precedenti controlli preliminari, andiamo a scavare più a fondo all'interno del nostro dump unito. Aprite il dump con HxD e per prima cosa controllate le statistiche, devono rispettare i valori riportati più in alto. Nel caso siate partiti da un OFW 4.30 o superiore, potrebbe darsi che le statistiche 00 siano leggermente inferiori rispetto a quelle riportate. In questo caso non preoccupatevi e proseguite con tutti gli altri check. Alla fine, se tutto il resto risulta validato, patchando il dump le statistiche dovrebbero sistemarsi. Ci tengo a precisare che le statistiche sono fini a se stesse, per cui non fateci troppo affidamento, ma proseguite anche e soprattutto con i controlli successivi!
Magic headers:
Per recarvi con HxD ad un determinato offset del file, premete CTRL + G. Il magic headers si trova all'offset 40010 e deve essere composto dai seguenti byte:
00 00 00 00 0F AC E0 FF 00 00 00 00 DE AD BE EF
Solitamente i dump dual nand si effettuano con programmatori di tipo REV/Human readable, come il ProgSkeet o il Teensy++, quindi i byte devono essere come detto poc'anzi. Se per qualche motivo il vostro dump è byte-reversed (tipico dell'E3 Flasher ad esempio, ma che non si utilizza con nand), ve ne accorgerete dai byte variati in:
00 00 00 00 AC 0F FF E0 00 00 00 00 AD DE EF BE
In questo caso dovete byte-swappare il dump con Flowrebuilder. Per farlo avviate Flowrebuilder, selezionate la voce Byte reverse a dump, selezionate il vostro dump unito e premete su Execute Operation. Se all'offset 40010 non avete nè il magic headers REV/Human readable, nè quello RAW/PS3 readable (byte-reversed), il vostro dump è corrotto.
IDPS/Target_ID, metldr, bootldr:
Andiamo a reperire questi dati per capire di che console si tratta. Tutte le dual nand sono downgradabili a 3.55, perciò non è vitale verificare questi valori ai fini del downgrade vero e proprio, ma vi dà comunque l'idea che tutto sia in ordine nel dump. Ora digitate i seguenti offset:
80877 - IDPS/Target_ID
4081E - metldr
40842 - metldr
02 - bootldr
12 - bootldr
Comparate i valori di cui sopra con la seguente tabella e verificate che tutto combaci.
IDPS/Target_ID SKU - Datecode /
Manufacturing date metldr offset metldr offset bootldr bootldr bootldr Notes low
ver
chk 0x2F077 (NOR)
0x80877 (NAND) - 0x81E (NOR)
0x4081E (NAND) 0x842 (NOR)
0x40842 (NAND) size 0xFC0002 (NOR)
0x02 (NAND) 0xFC0012 (NOR)
0x12 (NAND) - - n/aCEB-2030 (MPU-501) PRO n/a n/a 28C20 28 BE 28 BEPatch + FSM = OK <=0.50.003 01DEH-Z1010 (TMU-520) SD 14 20 11 3E 2D020 2C FE 2C FEPatch + FSM = OK <=0.80.004 01DECR-1000 (TMU-520) DECR
Every DECR manufactured before
January 2009 Share the same
BL/Metldr revisions EC 40 0E C0 2A840 2A 80 2A 80Patch + FSM = OK <=0.85.009 01?DEH-H1001-D? (COOKIE13) CEX EC 40 0E C0 2A830 2A 7F 2A 7FPatch + FSM = OK <=0.85.009 01DEH-H1000A-E (COK-001) DEX EC 70 0E C3 2A1E0 2A 1A 2A 1APatch + FSM = OK <095.001 01
04CECHAxx (COK-001)
CECHExx (COK-002) EE 10 0E DD 2A430 2A 3F 2A 3FPatch + FSM = OK 1.00
1.00 01
02
03
01CECHAxx (COK-001) with
1.00 from factory
CECHBxx (COK-001)
CECHCxx (COK-002)
DECHAxx (COK-001) DEX ED A0 0E D6 2A2E0 2A 2A 2A 2APatch + FSM = OK 1.00
1.00
1.00
1.00 03CECHCxx (COK-002) with
1.00 from factory EB F0 0E BB 30480 30 44 30 44Patch + FSM = OK 1.00
1.00 01
03CECHAxx (COK-001)
CECHCxx (COK-002) ED E0 0E DA 2A3B0 2A 37 2A 37Patch + FSM = OK 1.00
1.00 04
05Namco System
357 (COK-002) ARC
CECHGxx (SEM-001) E7 B0 0E 77 2E900 2E 8C 2E 8CPatch + FSM = OK ?1.90?
1.90 05
06CECHGxx (SEM-001)
CECHHxx (DIA-001) E7 B0 0E 77 2F200 2F 1C 2F 1CPatch + FSM = OK 2.30
2.30 05
06CECHGxx (SEM-001)
CECHHxx (DIA-001) E8 C0 0E 88 2EF80 2E F4 2E F4Patch + FSM = OK 2.30
2.30 06
07CECHHxx (DIA-001)
CECHJxx (DIA-002)
with 2.30 from factory -
datecode 8B E8 E0 0E 8A 2EF80 2E F4 2E F4Patch + FSM = OK 1.97
2.30 03
06
06CECHExx (COK-002)
CECHHxx (DIA-001)
CECHMxx (DIA-001) EA 60 0E A2 2EE70 2E E3 2E E3Patch + FSM = OK 1.97
1.97 07CECHJxx (DIA-002)
CECHKxx (DIA-002) datecode 8C EA 60 0E A2 2EE70 2E E3 2E E3Patch + FSM = OK 2.30 08
07
08Namco System
357 (VER-001) ARC
DECHJxx (DIA-002) DEX
CECHLxx / CECHPxx (VER-001) E8 D0 0E 89 2EAF0 2E AB 2E ABPatch + FSM = OK ?2.45?
2.16
2.45 08CECHLxx (VER-001) E8 D0 0E 89 2EB70 2E B3 2E B3Patch + FSM = OK 2.45 08
09CECHLxx (VER-001)
with 2.30 from factory -
datecode unknown
CECH-20xx (DYN-001)
with 2.76 from factory E8 90 0E 85 2F170 2F 13 2F 13Patch + FSM = OK 2.30
2.70 09DECR-1400 (DEB-001) DECR
with 2.60 from factory -
manufactured date June 09 E8 90 0E 85 2F170 2F 13 2F 13Patch + FSM = OK 2.60 09CECH-20xx (DYN-001) E9 20 0E 8E 2F3F0 2F 3B 2F 3BPatch + FSM = OK 2.70 0ACECH-21xx (SUR-001) E9 20 0E 8E 2F4F0 2F 4B 2F 4BPatch + FSM = OK 3.20 03
0B
0BCECHExx (COK-002W)
refurbished
CECH-25xx (JTP-001)
with 3.40 from factory -
datecode 0C
CECH-25xx (JSD-001)
with 3.41 from factory -
datecode 0C E9 20 0E 8E 2F4F0 2F 4B 2F 4BPatch + FSM = OK 3.40
3.40
3.40 0B
0BCECH-25xx (JSD-001)
with 3.56 from factory -
datecode 0D
CECH-25xx (JTP-001)
with 3.56 from factory -
datecode 1A E9 60 0E 92 2F570 2F 53 2F 53Patch + FSM = OK 3.50
3.50 0B
0B
0BCECH-25xx (JTP-001)
with 3.56 from factory -
datecode 1A (rare)
CECH-25xx (JSD-001)
with 3.56 from factory -
datecode 1B (common)
CECH-25xx (JTP-001)
with 3.56 from factory -
datecode 1B (common) E9 60 0E 92 2F5F0 2F 5B 2F 5B(RLOD+)poweroff @ downgrade 355
(3.56+ + spkg fix + signed 3.55 priv : should
work)
Patch + noFSM = OK3.56
3.56
3.56 0B
0B
0CCECH-25xx (JSD-001)
with 3.60 from factory -
datecode 1B
CECH-25xx (JTP-001)
with 3.60 from factory -
datecode [N.A.]
CECH-30xx (KTE-001)
with 3.60 from factory -
datecode [N.A.] F9 20 0F 8E 2FFF0 2F FB 2F FB"metldr.2"
(RLOD+)poweroff @ downgrade 3.55
(RLOD+)poweroff @ Patch + noFSM3.60
3.60
3.60 0CCECH-30xx (KTE-001)
with ? from factory - datecode [?] F9 B0 0F 97 30070 30 03 30 03"metldr.2"
(RLOD+)poweroff @ downgrade 3.55
(RLOD+)poweroff @ Patch + noFSM? 0CCECH-30xx (KTE-001)
with 3.72 from factory -
datecode [1C] F9 B0 0F 97 300F0 30 0B 30 0B"metldr.2"
(RLOD+)poweroff @ downgrade 3.55
(RLOD+)poweroff @ Patch + noFSM3.72 0D
0D
2CCECH-40xx (MSX-001)
CECH-40xx (MPX-001)
CECH-40xx (MSX-001) '12GB' F9 B0 0F 97 301F0 30 1B 30 1B"metldr.2"
(RLOD+)poweroff @ downgrade 3.55
(RLOD+)poweroff @ Patch + noFSM4.20
?
4.22
Dopodiché verificate gli offset da 04 a 0F sfruttando la tabella successiva, in base al vostro bootldr. A fianco trovate anche il modello SKU della vostra console.
header
NOR:0xFC0000
NAND:0x0 rev
NOR:0xFC0004
NAND:0x4 SKU Notes00 00 28 BE C0 2E 2F EA F6 1C A6 F1 CC C8 8B 5F CEB-2030 (MPU-501) 00 00 2C FE 80 5B F2 D9 AC D2 00 61 B6 99 BB 96 DEH-Z1010 (TMU-520) 00 00 2A 80 44 48 90 DD 19 2C 91 2D BB 99 6F C8 DECR-1000A/J (TMU-520) 00 00 2A 7F 12 1D 73 39 4A F2 98 81 F8 D6 B1 8C DEH-H1001-D (COOKIE-13) 0x1 00 00 2A 1A 99 02 B3 13 C2 80 B8 35 AA 03 3F FE DEH-H1000A-E (COK-001 (Prototype)) 0x1 00 00 2A 3F 04 AD 56 18 64 8D 49 94 23 8F B8 A1 CECHA (COK-001) 0x1
CECHC (COK-002) 0x3
CECHE (COK-002/COK-002W) 0x400 00 2A 2A 5C E4 63 CD 5C 9E B6 7A FE A0 1B 54 CECHA (COK-001) 0x1
CECHB (COK-001) 0x200 00 2A 2A 1C 21 81 C8 EA 41 86 5C 8B 33 8A EF CECHA (COK-001) 0x1
DECHA (COK-001) 0x100 00 30 44 3F F1 1F 14 C3 42 44 3C 88 B1 8E 90 CECHC (COK-002) 0x3 00 00 2A 37 BC 30 D5 52 4B 74 99 65 CF 95 AE 5F CECHC (COK-002) 0x3 00 00 2A 37 F9 96 D8 4E 1A 9D 50 BF 97 F4 A0 CE CECHA (COK-001) 0x1
CECHC (COK-002) 0x300 00 2E 8C 31 B5 9A 07 2E D4 5C B5 68 08 C2 FC CECHG (SEM-001) 0x5
ARC GECR-1100 (COK-002) 0x400 00 2F 1C 06 5B 86 0C 5C F7 6A C4 59 8D D7 B4 CECHE (COK-002/COK-002W) 0x4
CECHG (SEM-001) 0x5
CECHH (DIA-001) 0x6first NOR CEX consoles (minver 2.30) 00 00 2E F4 89 EF FD 15 B3 85 0E 3B 2A 73 44 84 CECHG (SEM-001) 0x5
CECHH (DIA-001) 0x600 00 2E F4 6E ED 04 A0 4E 41 53 2A C1 23 C7 18 CECHH (DIA-001) 0x6 00 00 2E F4 E6 44 A0 75 B6 0B 79 96 C1 29 7A A0 CECHJ (DIA-002) 0x7 00 00 2E E3 7B 09 CB EE 00 2F AF 51 59 F8 D5 A8 CECHC (COK-002) 0x3
CECHH (DIA-001) 0x6
CECHK (DIA-002) 0x700 00 2E E3 ED 4C 79 D6 5D 60 28 76 FF AD A6 FD CECHH (DIA-001) 0x6 00 00 2E AB B1 94 34 A3 3C F1 C8 66 DF 42 0E 50 CECHL (VER-001) 0x8
CECHP (VER-001) 0x8
ARC GECR-1500 (VER-001) 0x800 00 2E AB 83 EF B9 76 C4 DE D1 35 32 7C D3 77 CECHL (VER-001) 0x8 00 00 2E AB 61 D1 9B A5 41 68 16 3C 01 9F 88 4B DECHJ00A/J (DIA-002) 0x7 00 00 2E B3 92 AC 2C 21 57 A5 77 C8 4D DF EC DB CECHL (VER-001) 0x8 00 00 2F 13 41 F7 93 C7 09 41 8F 93 89 44 BA 7A CECHL (VER-001) 0x8
CECH-20xx (DYN-001) 0x900 00 2F 13 FA 46 EC 86 57 0F CA AA 06 4E 8A 86 CECH-20xx (DYN-001) 0x9 00 00 2F 13 F5 A2 21 B5 C0 5F 21 42 01 97 9D AA CECH-20xx (DYN-001) 0x9 00 00 2F 3B 77 80 B1 34 B6 DF 25 8A 1A BB AB 4D CECH-20xx (DYN-001) 0x9 00 00 2F 4B CB 9E 15 24 28 B4 4F D2 F9 3F BC 43 CECHC (COK-002) 0x3
CECHE (COK-002/COK-002W) 0x4
CECH-20xx (DYN-001) 0x9
CECH-25xx (JSD-001/JTP-001) 0xB3.4.0 / 3932,45679 / 2010-06-07_23:08:10 00 00 2F 4B EF B3 45 5D 6A 9F D7 51 00 5E 34 BC CECH-21xx (SUR-001) 0xA 00 00 2F 4B 53 92 1C E7 F7 33 41 76 9B 7A 1E D6 CECH-21xx (SUR-001) 0xA
CECH-25xx (JSD-001/JTP-001) 0xB00 00 2F 53 53 E6 A0 BB B0 AF A2 00 67 D0 B3 9A CECH-25xx (JSD-001/JTP-001) 0xB 00 00 2F 5B AA 3A EA 6E 3D A0 9A 58 1E 1E 21 00 CECH-25xx (JSD-001/JTP-001) 0xB 00 00 2F FB C5 A4 27 71 EE 5E 21 9A 3B FC 2C 45 CECH-25xx (JSD-001/JTP-001) 0xB 00 00 2F FB 13 EC A7 4A 8E 14 D4 73 12 91 28 E8 CECH-30xx (KTE-001) 0xC 00 00 30 03 BB CC BF 29 EC D8 02 84 4E B2 8A E6 CECH-30xx (KTE-001) 0xC 00 00 30 0B 2E 60 41 04 D9 43 D1 B5 34 D4 C5 F5 CECH-30xx (KTE-001) 0xC minver 3.72 00 00 30 1B 1F DC 1E 2D F0 0D A3 67 01 E2 F8 F6 CECH-40xx (MPX-001/MSX-001) 0xD
Malformed headers:
Ci sono alcune stringhe che, se il dump risulta corrotto, vengono visualizzate con caratteri differenti rispetto ad un dump valido. Ecco la lista da verificare (offset - stringa corretta - stringa non corretta):
40220 - asecure_loader - asecure_loaher
40250 - eEID - eIIH
40280 - cISD - cESH
402B0 - cCSD - cCSH
402E0 - trvk_prg - trvg_prk
40310 - trvk_pkg - trvg_pkk
40340 - creserved_0 - ?
40370 - ros - ?
403A0 - cvtrm - cztrm
40820 - metldr - mitldr
Altri byte da verificare:
Controllate anche i seguenti byte, come sempre devono corrispondere a questa lista (offset - nome - byte corretti):
40800 - asecure_loader - 00 00 00 01 00 00 00 01 00 00 00 00 00 04 00 00
80800 - eEID - 00 00 00 06 00 00 1D D0 00 00 00 00 00 00 00 00
90800 - cISD - 00 00 00 03 00 00 02 70 00 00 00 00 00 00 00 00
91000 - cCSD - 00 00 00 01 00 00 08 00 00 00 00 00 00 00 00 00
SCE (Sony Computer Entertainment):
Recatevi ai seguenti offset per controllare che nei due revokation (program e package) ci sia la stringa SCE posizionata 3 righe più in basso:
91800 - trvk_prg
93800 - trvk_pkg
Ros0 e Ros1:
Verificate che ci siano determinate stringhe di codice sotto gli offset C0020 (Ros0) e 7C0010 (Ros1):
N.B.: chi di voi proviene da un firmware in cui era stata aggiornata la console ad esempio da un CFW 3.55 ad un OFW 4.31, in uno dei due Ros potrebbero essere presenti delle stringhe differenti, ma è normale, in quanto uno dei due Ros sarà patchato, visto che la console prima dell'update si trovava ad un CFW. In ogni caso, anche se provenite da un OFW, le stringhe potrebbero variare, l'importante è che sommariamente siano presenti i vari nomi dei file per ciascun Ros. Infatti, sia i Ros che i revokation, andranno comunque patchati integralmente, quindi non devono suscitare troppa preoccupazione.
VALIDAZIONE DEI DUMP NOR
Per le NOR esistono già diversi tool automatizzati per la verifica dei vostri dump, ma come già accennato nel corso della prefazione, questo tutorial si focalizza sulla verifica manuale e conseguente validazione dei vostri dump.
Comparazione dei dump:
Prima di tutto dovete aver eseguito molteplici dump (meglio dai 3/4 dump in su). Quindi bisogna comparare tra di loro i vari dump. Per comparare i dump, potete usare il prompt dei comandi di Windows, oppure HxD. Per usare il prompt dei comandi, tenete premuto SHIFT e cliccate col destro mouse su un punto vuoto della cartella che contiene i vostri dump. Selezionate dal menù contestuale Apri finestra di comando qui. Ora digitate il seguente comando:
dove nordump1.bin e nordump2.bin sono i nomi dei vostri dump. L'output che vi dovrà apparire sarà il seguente:fc /b nordump1.bin nordump2.bin
Se i dump sono differenti, avrete una serie più o meno lunga di stringhe, e potete interrompere la scansione in qualsiasi momento con CTRL + C. Fatto il primo controllo, passate all'incrocio dei dump, cioé il primo con il terzo, il secondo con il terzo, ecc. Assicuratevi di avere almeno 2/3 dump per ciascuna NOR identici.
Per quelli di voi meno predisposti all'uso del terminale, è possibile far ricorso a HxD. Aprite il programma e aprite i vostri dump. Andate su Analysis --> File-compare --> Compare e scegliete 2 tra i vostri dump che avete aperto. Se il programma vi riporta che non ci sono differenze, siete apposto e potete anche in questo caso incrociare i "compare" tra tutti i vari dump.
Statistiche dei dump:
Per farlo usate HxD e, dopo aver aperto il vostro dump cliccate su Analysis --> Statistics. Posizionate il mouse sulla prima colonna per avere la percentuale delle statistiche 00, lo stesso fate per l'ultima colonna, relativa alle statistiche FF. Ecco il range di valori che dovete riscontrare per entrambi i dump:
00 --> 18,38% - 29,01%
FF --> 10,42% - 10,48%
Restanti --> minori di 0,5%
Nel caso siate partiti da un OFW 4.30 o superiore, potrebbe darsi che le statistiche 00 siano leggermente inferiori rispetto a quelle riportate. In questo caso non preoccupatevi e proseguite con tutti gli altri check. Alla fine, se tutto il resto risulta validato, patchando il dump le statistiche dovrebbero sistemarsi. Ci tengo a precisare che le statistiche sono fini a se stesse, per cui non fateci troppo affidamento, ma proseguite anche e soprattutto con i controlli successivi!
Controllo dei file estratti:
Aprite Flowrebuilder, selezionate la voce EXTRACT a NOR dump or an interleaved and unscrambled NAND dump e come Input Dump File date in pasto il vostro dump, poi premete Execute Operation. Facciamo il primo controllo dell'integrità dei dati estratti con Flowrebuilder. Dovete avere le seguenti cose:
- Una cartella asecure_loader contenente il file metldr
- Una cartella ros0_nomefw contenente un minimo di 19 ad un massimo di 25 file
- Una cartella ros1_nomefw contenente un minimo di 19 ad un massimo di 25 file
- Oltre alle 3 cartelle dovete avere i seguenti 9 file: bootloader_0, cCSD, cISD, cvtrm, eEID, trvk_pkg0, trvk_pkg1, trvk_prg0 e trvk_prg1
Magic headers:
Per recarvi con HxD ad un determinato offset del file, premete CTRL + G. Il magic headers si trova all'offset 10 e deve essere composto dai seguenti byte:
00 00 00 00 0F AC E0 FF 00 00 00 00 DE AD BE EF
Se il dump è stato eseguito con programmatori di tipo REV/Human readable, come il ProgSkeet o il Teensy++, i byte visualizzati devono essere come detto poc'anzi. Nel caso invece si utilizzi un programmatore di tipo RAW/PS3 readable, come ad esempio l'E3 Flasher, il dump risulterà byte-reversed e il magic headers vi si presenterà in questo modo:
00 00 00 00 AC 0F FF E0 00 00 00 00 AD DE EF BE
In questo caso dovete byte-swappare il dump con Flowrebuilder. Per farlo avviate Flowrebuilder, selezionate la voce Byte reverse a dump, selezionate il vostro dump e premete su Execute Operation. Se all'offset 10 non avete nè il magic headers REV/Human readable, nè quello RAW/PS3 readable (byte-reversed), il vostro dump è corrotto.
Nei dump NOR esiste anche un altro magic headers, lo trovate all'offset F00010:
00 00 00 00 0F AC E0 FF 00 00 00 00 DE AD FA CE
IDPS/Target_ID, metldr, bootldr:
Andiamo a reperire questi dati per capire di che console si tratta. Nelle CECH-25xx con datecode 1A o 1B ad esempio, è importante verificare il tipo di metldr e bootldr installato, per determinare se le console sono downgradabili a 3.55, patchabili con le patch di Rogero noFSM, o non modificabili. Ora digitate i seguenti offset:
2F077 - IDPS/Target_ID
81E - metldr
842 - metldr
FC0002 - bootldr
FC0012 - bootldr
Comparate i valori di cui sopra con la seguente tabella e verificate che tutto combaci.
IDPS/Target_ID SKU - Datecode /
Manufacturing date metldr offset metldr offset bootldr bootldr bootldr Notes low
ver
chk 0x2F077 (NOR)
0x80877 (NAND) - 0x81E (NOR)
0x4081E (NAND) 0x842 (NOR)
0x40842 (NAND) size 0xFC0002 (NOR)
0x02 (NAND) 0xFC0012 (NOR)
0x12 (NAND) - - n/aCEB-2030 (MPU-501) PRO n/a n/a 28C20 28 BE 28 BEPatch + FSM = OK <=0.50.003 01DEH-Z1010 (TMU-520) SD 14 20 11 3E 2D020 2C FE 2C FEPatch + FSM = OK <=0.80.004 01DECR-1000 (TMU-520) DECR
Every DECR manufactured before
January 2009 Share the same
BL/Metldr revisions EC 40 0E C0 2A840 2A 80 2A 80Patch + FSM = OK <=0.85.009 01?DEH-H1001-D? (COOKIE13) CEX EC 40 0E C0 2A830 2A 7F 2A 7FPatch + FSM = OK <=0.85.009 01DEH-H1000A-E (COK-001) DEX EC 70 0E C3 2A1E0 2A 1A 2A 1APatch + FSM = OK <095.001 01
04CECHAxx (COK-001)
CECHExx (COK-002) EE 10 0E DD 2A430 2A 3F 2A 3FPatch + FSM = OK 1.00
1.00 01
02
03
01CECHAxx (COK-001) with
1.00 from factory
CECHBxx (COK-001)
CECHCxx (COK-002)
DECHAxx (COK-001) DEX ED A0 0E D6 2A2E0 2A 2A 2A 2APatch + FSM = OK 1.00
1.00
1.00
1.00 03CECHCxx (COK-002) with
1.00 from factory EB F0 0E BB 30480 30 44 30 44Patch + FSM = OK 1.00
1.00 01
03CECHAxx (COK-001)
CECHCxx (COK-002) ED E0 0E DA 2A3B0 2A 37 2A 37Patch + FSM = OK 1.00
1.00 04
05Namco System
357 (COK-002) ARC
CECHGxx (SEM-001) E7 B0 0E 77 2E900 2E 8C 2E 8CPatch + FSM = OK ?1.90?
1.90 05
06CECHGxx (SEM-001)
CECHHxx (DIA-001) E7 B0 0E 77 2F200 2F 1C 2F 1CPatch + FSM = OK 2.30
2.30 05
06CECHGxx (SEM-001)
CECHHxx (DIA-001) E8 C0 0E 88 2EF80 2E F4 2E F4Patch + FSM = OK 2.30
2.30 06
07CECHHxx (DIA-001)
CECHJxx (DIA-002)
with 2.30 from factory -
datecode 8B E8 E0 0E 8A 2EF80 2E F4 2E F4Patch + FSM = OK 1.97
2.30 03
06
06CECHExx (COK-002)
CECHHxx (DIA-001)
CECHMxx (DIA-001) EA 60 0E A2 2EE70 2E E3 2E E3Patch + FSM = OK 1.97
1.97 07CECHJxx (DIA-002)
CECHKxx (DIA-002) datecode 8C EA 60 0E A2 2EE70 2E E3 2E E3Patch + FSM = OK 2.30 08
07
08Namco System
357 (VER-001) ARC
DECHJxx (DIA-002) DEX
CECHLxx / CECHPxx (VER-001) E8 D0 0E 89 2EAF0 2E AB 2E ABPatch + FSM = OK ?2.45?
2.16
2.45 08CECHLxx (VER-001) E8 D0 0E 89 2EB70 2E B3 2E B3Patch + FSM = OK 2.45 08
09CECHLxx (VER-001)
with 2.30 from factory -
datecode unknown
CECH-20xx (DYN-001)
with 2.76 from factory E8 90 0E 85 2F170 2F 13 2F 13Patch + FSM = OK 2.30
2.70 09DECR-1400 (DEB-001) DECR
with 2.60 from factory -
manufactured date June 09 E8 90 0E 85 2F170 2F 13 2F 13Patch + FSM = OK 2.60 09CECH-20xx (DYN-001) E9 20 0E 8E 2F3F0 2F 3B 2F 3BPatch + FSM = OK 2.70 0ACECH-21xx (SUR-001) E9 20 0E 8E 2F4F0 2F 4B 2F 4BPatch + FSM = OK 3.20 03
0B
0BCECHExx (COK-002W)
refurbished
CECH-25xx (JTP-001)
with 3.40 from factory -
datecode 0C
CECH-25xx (JSD-001)
with 3.41 from factory -
datecode 0C E9 20 0E 8E 2F4F0 2F 4B 2F 4BPatch + FSM = OK 3.40
3.40
3.40 0B
0BCECH-25xx (JSD-001)
with 3.56 from factory -
datecode 0D
CECH-25xx (JTP-001)
with 3.56 from factory -
datecode 1A E9 60 0E 92 2F570 2F 53 2F 53Patch + FSM = OK 3.50
3.50 0B
0B
0BCECH-25xx (JTP-001)
with 3.56 from factory -
datecode 1A (rare)
CECH-25xx (JSD-001)
with 3.56 from factory -
datecode 1B (common)
CECH-25xx (JTP-001)
with 3.56 from factory -
datecode 1B (common) E9 60 0E 92 2F5F0 2F 5B 2F 5B(RLOD+)poweroff @ downgrade 355
(3.56+ + spkg fix + signed 3.55 priv : should
work)
Patch + noFSM = OK3.56
3.56
3.56 0B
0B
0CCECH-25xx (JSD-001)
with 3.60 from factory -
datecode 1B
CECH-25xx (JTP-001)
with 3.60 from factory -
datecode [N.A.]
CECH-30xx (KTE-001)
with 3.60 from factory -
datecode [N.A.] F9 20 0F 8E 2FFF0 2F FB 2F FB"metldr.2"
(RLOD+)poweroff @ downgrade 3.55
(RLOD+)poweroff @ Patch + noFSM3.60
3.60
3.60 0CCECH-30xx (KTE-001)
with ? from factory - datecode [?] F9 B0 0F 97 30070 30 03 30 03"metldr.2"
(RLOD+)poweroff @ downgrade 3.55
(RLOD+)poweroff @ Patch + noFSM? 0CCECH-30xx (KTE-001)
with 3.72 from factory -
datecode [1C] F9 B0 0F 97 300F0 30 0B 30 0B"metldr.2"
(RLOD+)poweroff @ downgrade 3.55
(RLOD+)poweroff @ Patch + noFSM3.72 0D
0D
2CCECH-40xx (MSX-001)
CECH-40xx (MPX-001)
CECH-40xx (MSX-001) '12GB' F9 B0 0F 97 301F0 30 1B 30 1B"metldr.2"
(RLOD+)poweroff @ downgrade 3.55
(RLOD+)poweroff @ Patch + noFSM4.20
?
4.22
Dopodiché verificate gli offset da FC0004 a FC000F sfruttando la tabella successiva, in base al vostro bootldr. A fianco trovate anche il modello SKU della vostra console.
header
NOR:0xFC0000
NAND:0x0 rev
NOR:0xFC0004
NAND:0x4 SKU Notes00 00 28 BE C0 2E 2F EA F6 1C A6 F1 CC C8 8B 5F CEB-2030 (MPU-501) 00 00 2C FE 80 5B F2 D9 AC D2 00 61 B6 99 BB 96 DEH-Z1010 (TMU-520) 00 00 2A 80 44 48 90 DD 19 2C 91 2D BB 99 6F C8 DECR-1000A/J (TMU-520) 00 00 2A 7F 12 1D 73 39 4A F2 98 81 F8 D6 B1 8C DEH-H1001-D (COOKIE-13) 0x1 00 00 2A 1A 99 02 B3 13 C2 80 B8 35 AA 03 3F FE DEH-H1000A-E (COK-001 (Prototype)) 0x1 00 00 2A 3F 04 AD 56 18 64 8D 49 94 23 8F B8 A1 CECHA (COK-001) 0x1
CECHC (COK-002) 0x3
CECHE (COK-002/COK-002W) 0x400 00 2A 2A 5C E4 63 CD 5C 9E B6 7A FE A0 1B 54 CECHA (COK-001) 0x1
CECHB (COK-001) 0x200 00 2A 2A 1C 21 81 C8 EA 41 86 5C 8B 33 8A EF CECHA (COK-001) 0x1
DECHA (COK-001) 0x100 00 30 44 3F F1 1F 14 C3 42 44 3C 88 B1 8E 90 CECHC (COK-002) 0x3 00 00 2A 37 BC 30 D5 52 4B 74 99 65 CF 95 AE 5F CECHC (COK-002) 0x3 00 00 2A 37 F9 96 D8 4E 1A 9D 50 BF 97 F4 A0 CE CECHA (COK-001) 0x1
CECHC (COK-002) 0x300 00 2E 8C 31 B5 9A 07 2E D4 5C B5 68 08 C2 FC CECHG (SEM-001) 0x5
ARC GECR-1100 (COK-002) 0x400 00 2F 1C 06 5B 86 0C 5C F7 6A C4 59 8D D7 B4 CECHE (COK-002/COK-002W) 0x4
CECHG (SEM-001) 0x5
CECHH (DIA-001) 0x6first NOR CEX consoles (minver 2.30) 00 00 2E F4 89 EF FD 15 B3 85 0E 3B 2A 73 44 84 CECHG (SEM-001) 0x5
CECHH (DIA-001) 0x600 00 2E F4 6E ED 04 A0 4E 41 53 2A C1 23 C7 18 CECHH (DIA-001) 0x6 00 00 2E F4 E6 44 A0 75 B6 0B 79 96 C1 29 7A A0 CECHJ (DIA-002) 0x7 00 00 2E E3 7B 09 CB EE 00 2F AF 51 59 F8 D5 A8 CECHC (COK-002) 0x3
CECHH (DIA-001) 0x6
CECHK (DIA-002) 0x700 00 2E E3 ED 4C 79 D6 5D 60 28 76 FF AD A6 FD CECHH (DIA-001) 0x6 00 00 2E AB B1 94 34 A3 3C F1 C8 66 DF 42 0E 50 CECHL (VER-001) 0x8
CECHP (VER-001) 0x8
ARC GECR-1500 (VER-001) 0x800 00 2E AB 83 EF B9 76 C4 DE D1 35 32 7C D3 77 CECHL (VER-001) 0x8 00 00 2E AB 61 D1 9B A5 41 68 16 3C 01 9F 88 4B DECHJ00A/J (DIA-002) 0x7 00 00 2E B3 92 AC 2C 21 57 A5 77 C8 4D DF EC DB CECHL (VER-001) 0x8 00 00 2F 13 41 F7 93 C7 09 41 8F 93 89 44 BA 7A CECHL (VER-001) 0x8
CECH-20xx (DYN-001) 0x900 00 2F 13 FA 46 EC 86 57 0F CA AA 06 4E 8A 86 CECH-20xx (DYN-001) 0x9 00 00 2F 13 F5 A2 21 B5 C0 5F 21 42 01 97 9D AA CECH-20xx (DYN-001) 0x9 00 00 2F 3B 77 80 B1 34 B6 DF 25 8A 1A BB AB 4D CECH-20xx (DYN-001) 0x9 00 00 2F 4B CB 9E 15 24 28 B4 4F D2 F9 3F BC 43 CECHC (COK-002) 0x3
CECHE (COK-002/COK-002W) 0x4
CECH-20xx (DYN-001) 0x9
CECH-25xx (JSD-001/JTP-001) 0xB3.4.0 / 3932,45679 / 2010-06-07_23:08:10 00 00 2F 4B EF B3 45 5D 6A 9F D7 51 00 5E 34 BC CECH-21xx (SUR-001) 0xA 00 00 2F 4B 53 92 1C E7 F7 33 41 76 9B 7A 1E D6 CECH-21xx (SUR-001) 0xA
CECH-25xx (JSD-001/JTP-001) 0xB00 00 2F 53 53 E6 A0 BB B0 AF A2 00 67 D0 B3 9A CECH-25xx (JSD-001/JTP-001) 0xB 00 00 2F 5B AA 3A EA 6E 3D A0 9A 58 1E 1E 21 00 CECH-25xx (JSD-001/JTP-001) 0xB 00 00 2F FB C5 A4 27 71 EE 5E 21 9A 3B FC 2C 45 CECH-25xx (JSD-001/JTP-001) 0xB 00 00 2F FB 13 EC A7 4A 8E 14 D4 73 12 91 28 E8 CECH-30xx (KTE-001) 0xC 00 00 30 03 BB CC BF 29 EC D8 02 84 4E B2 8A E6 CECH-30xx (KTE-001) 0xC 00 00 30 0B 2E 60 41 04 D9 43 D1 B5 34 D4 C5 F5 CECH-30xx (KTE-001) 0xC minver 3.72 00 00 30 1B 1F DC 1E 2D F0 0D A3 67 01 E2 F8 F6 CECH-40xx (MPX-001/MSX-001) 0xD
Malformed headers:
Ci sono alcune stringhe che, se il dump risulta corrotto, vengono visualizzate con caratteri differenti rispetto ad un dump valido. Ecco la lista da verificare (offset - stringa corretta - stringa non corretta):
200 - IFI - IJI
420 - asecure_loader - asecure_loaher
450 - eEID - eIIH
480 - cISD - cESH
4B0 - cCSD - cCSH
4E0 - trvk_prg0 - trvg_prk0
510 - trvk_prg1 - trvg_prk1
540 - trvk_pkg0 - trvk_pkk0
570 - trvk_pkg1 - trvk_pkk1
5A0 - ros0 - ?
5D0 - ros1 - ?
600 - cvtrm - cztrm
820 - metldr - mitldr
Altri byte da verificare:
Controllate anche i seguenti byte, come sempre devono corrispondere a questa lista (offset - nome - byte corretti):
800 - asecure_loader - 00 00 00 01 00 00 00 01 00 00 00 00 00 02 E8 00
2F000 - eEID - 00 00 00 06 00 00 1D D0 00 00 00 00 00 00 00 00
3F000 - cISD - 00 00 00 03 00 00 02 70 00 00 00 00 00 00 00 00
3F800 - cCSD - 00 00 00 01 00 00 08 00 00 00 00 00 00 00 00 00
EC0000 - cvtrm - 00 00 00 00 FF FD FF FF FF FF FF FF FF FF FF FF (oppure 53 43 45 49 FF FF FF FF FF FF FF FF FF FF FF FF)
F20000 - CELL_EXTNOR_AREA - 43 45 4C 4C 5F 45 58 54 4E 4F 52 5F 41 52 45 41
SCE (Sony Computer Entertainment):
Recatevi ai seguenti offset per controllare che nei 4 revokation (program0, program1, package0 e package1) ci sia la stringa SCE posizionata una riga più in basso:
40000 - trvk_prg0
60000 - trvk_prg1
80000 - trvk_pkg0
A0000 - trvk_pkg1
Ros0 e Ros1:
Verificate che ci siano determinate stringhe di codice sotto gli offset C0000 (Ros0) e 7C0000 (Ros1):
N.B.: chi di voi proviene da un firmware in cui era stata aggiornata la console ad esempio da un CFW 3.55 ad un OFW 4.31, in uno dei due Ros potrebbero essere presenti delle stringhe differenti, ma è normale, in quanto uno dei due Ros sarà patchato, visto che la console prima dell'update si trovava ad un CFW. In ogni caso, anche se provenite da un OFW, le stringhe potrebbero variare, l'importante è che sommariamente siano presenti i vari nomi dei file per ciascun Ros. Infatti, sia i Ros che i revokation, andranno comunque patchati integralmente, quindi non devono suscitare troppa preoccupazione.
Come avete avuto modo di notare, un'analisi approfondita (e manuale) di un dump PS3 vi permette di stabilire in modo praticamente certo di essere in possesso di un dump valido e verificato, anche se può risultare noioso e prolisso come procedimento, è senza dubbio molto utile, onde evitare il brick della console. Perciò dopo la verifica, salvate il vostro dump al sicuro (magari facendo un upload su Dropbox o affini) e proseguite a cuor leggero, consapevoli che, a fronte di qualsiasi eventuale intoppo, avete comunque messo da parte il dump genuino della vostra console.
Credits to:
- [URL="http://www.ps3devwiki.com/wiki/Main_Page"]PS3DevWiki[/URL]
- [URL="http://www.ps3hax.net/"]PS3Hax[/URL], in particolare l'utente baileyscream
- [URL="http://psx-scene.com/"]PSX Scene[/URL], in particolare l'utente baileyscream
GUIDA REALIZZATA DA zeruel85 per [URL="http://www.consoleopen.com"]www.consoleopen.com[/URL]
La riproduzione anche parziale senza il consenso dell'autore è vietata
Segnalibri