ForumCommunity

Come fare i reflash in SBF, by flash.tato

« Older   Newer »
  Share  
fabo92.
view post Posted on 8/4/2007, 22:00




Come fare i reflash in SBF by flash.tato




Nota introduttiva : E’ consentito copiare, distribuire e/o modificare questo documento sotto le direttive della GNU Free Documentation License, Version 3 o ogni altra versione pubblicata dalla Free Software Foundation; in particolare si pone rilevanza sui punti 4.a : per eventuali modifiche che devono riportare chiaramente che sono copie modificate e la data di modifica (non spacciate per proprie) e 4.b : Bisogna fare in modo che ogni opera distribuita o pubblicata, che in parte o nella sua totalità derivi da parti di esso, sia concessa nella sua interezza in licenza gratuita ad ogni terza parte, secondo i termini di questa Licenza.
Maggiori Info : Licenza Gpl v3 su Umtsplanet

__________________________________________________ ____________________________________________

INTRODUZIONE
Il nome SBF significa Super Base File.
Il formato SBF è un altro standard dei firmware Motorola che sembra imporsi con prepotenza agli SHX per una serie di molteplici motivi.
Ma al momento non ci sono tutorial e guide per i file SBF, infatti sono orgoglioso di poter dire che questo è il primo tutorial per l'editing dei file SBF!!!
Tutto quello che vedete qua sotto è frutto dei miei studi su questo file e il bello è che ci ho azzeccato nella creazione dei reflash in SBF al secondo tentativo (al 1° mi ero dimenticato di calcolare il checksum del RAM Downloader che sembra essere una dimenticanza incurabile infatti non è la prima 1° volta che mi dimentico ).


INIZIAMO

OCCORENTE
- HEX Workshop 4.22
- Motorola Firmware Fusion ALL.

DISCLAIMER!!!
Al momento non ci sono editor per i file SBF per cui la maggior parte del lavoro và fatto in HEX , il Motorola Firmware Fusion ALL ci servirà solo per semplificare un passaggio

____________________________
Nel mio tutorial prenderò come spunto questo firmware che guarda caso è in formato SBF : R252211LD_U_85_1_.97.43P_LP0039_DRM0001_R25221005.
____________________________
Adesso possiamo iniziare davvero!!!
____________________________

Adesso apriamo il file SBF con HEX Workshop.

Quella che abbiamo davanti a noi è una parte della Header.

Adesso come primo obiettivo vogliamo estrarre la Header.
E per far ciò andiamo su Edit>Select Block (prima posizioniamo il cursore all'inizio del file all'offset 0).

Ci apparirà una schermata che ci chiede la lunghezza del blocco e come tutti sanno (spero....) che la Header è di 7,98 Kb (questa lunghezza non può variare) scriviamo 8172

Così facendo dovrebbe aver selezionato la Header adesso facciamo Tasto destro del mouse>Copy (CTRL+C).

Creiamo un nuovo file con HEX Workshop facendo File>New (CTRL+N).
E vi dovrebbe apparire un file vuoto davanti a voi adesso clicchiamo Tasto destro del mouse>Paste (CTRL+V).
Ci apparirà una schermata Are you sure want to insert? noi clicchiamo OK e adesso vediamo che nel file vuoto verrà incollata la Header dopo di che facciamo File>Save (CTRL+S) e lo salviamo.

Adesso apriamo il Motorola Firmware Fusion ALL e andiamo su Analizza Header.
.
E ci apparirà questa schermata (cliccare sulla thumbnail)
.
Clicchiamo su Sfoglia e selezioniamo la Header che abbiamo appena preso dal file SBF e clicchiamo Analizza Header.

Facendo così la lista verrà aggiornata con tutti i dati della Header.

Essendo il nostro obiettivo creare un SW Lite senza la Flex (CG2) selezioniamo tutti i Codegroup eccetto il CG2 come nello screen
.
Una volta spuntate tutte le checkbox eccetto quella della Flex (CG2) adesso possiamo cliccare su "Crea Nuovo Header" e il Motorola Firmware Fusion ALL creerà nella stessa cartella dalla quale abbiamo preso la Header base un nuovo file "New_Header.hmg".
Segnamoci da qualche parte lo Start Adress della Flex: (ci servirà dopo).
  • 11DC0000

Adesso apriamo la nuova "Header" con HEX Workshop.
La selezioniamo tutta facendo Edit>Select All (CTRL+A) e facciamo Tasto destro del mouse>Copy (CTRL+C) e abbiamo copiato la Header.
Adesso riapriamo il file SBF.
Dobbiamo selezionare i primi 8172 Byte del file e lo facciamo come abbiamo fatto in precedenza (ma riscrivo il procedimenti ).
Posizioniamo il cursore all'inizio del file e selezioniamo Edit>Select Block e ci apparirà una schermata che compileremo come descritto nello screen di sotto.
.
Dopodichè HEX Workshop dovrebbe avervi selezionato i primi 8172 del file.
Poi sull'area selezionata facciamo Tasto destro del mouse>Paste (CTRL+V) e così abbiamo incollato la Header appena creata con il Motorola Firmware Fusion ALL.

Abbiamo appena completato una parte del lavoro adesso però dobbiamo editare il RAM Downloader.

Adesso clicchiamo su Edit>Goto (CTRL+G) e scriviamo come descritto nello screen di qua sotto
.
A questo punto dovrebbe portarci alla fine della Header.

Adesso viene il bello

Allora io dico di prendere in considerazione i prossimi 17 Bytes che adesso analizzeremo, visto che quei 17 Bytes ci segnalano che dopo c'e' un Codegroup, ma prima di andare dritti al Codegroup analizziamo questi 17 Byte.
Allora sono
Codice:
02 00 00 00 00 00 03 02 01 00 01 90 00 08 00 00 00
I primi 9 Bytes ci dicono che dopo quello c'e' un Codegroup, sarebbe una sorta di record S0 dei file SHX.
Codice:

02 00 00 00 00 00 03 02 01
.
Gli altri 4 Bytes invece ci indicano la grandezza del Codegroup.
Codice:
00 01 90 00
Proviamo a convertire 19000 in decimale = 102400. Quindi significa che il Codegroup che abbiamo davanti a noi è grande 102400 Bytes.
Poi gli ultimi 4 Bytes della stringa sono lo Start Adress del Codegroup.
Codice:
08 00 00 00
08000000 è lo Start Adress del Ram Downloader (CG0).

Quindi adesso ci posizioniamo nell'offset che è successiva alla stringa 08 00 00 00.
Clicchiamo Edit>Find (CTRL+F) e ci apparirà una schermata nella quale scriveremo lo Start Adress che ci eravamo segnati prima (come descritto nello screen di sotto).
.
Poi cliccate OK e vi dovrebbe portare all'offset 8453 come descritto nello screen.

Adesso dobbiamo mettere a FF 11 DC 00 00 e i successivi 4 byte (13 8B FF FF) per ottenere un risultato come descritto nello screen di sotto.
.

Adesso ci riposizioniamo all'inizio del Codegroup (Offset 8198) e facciamo Edit>Select Block e compiliamo come descritto nello screen

Cos' abbiamo tutto il RAM Downloader adesso dobbiamo calcolare il Checksum perchè mettendo a FF gli Start/End Adress della Flex il Checksum è cambiato!!!
E lo facciamo tramite Tools>Generate Checksum e selezioniamo Checksum 16 Bit.
Poi guardiamo in basso a destra dovremmo trovare il risultato del Calcolo del checksum.


Adesso rianalizziamo la Header con il Motorola Firmware Fusion ALL con l'obiettivo di cercare il Checksum del Ram Downloader.


Adesso con l'HEX Editor ci posizioniamo all'inizio del file e cerchiamo il Checksum in Little Endian.
Il checksum è 18 71 che in Little Endian diventa 71 18 quindi facciamo Edit>Find (CTRL+F) e compiliamo la Box come descritto qua sotto

e vi dovrebbe portare all'offset 3CC


Adesso dobbiamo editare 71 18 con il Checksum che abbiamo appena ricalcolato: 1C E0---> E0 1C.
Quindi al posto di 71 18 scriviamo E0 1C.


Adesso ci manca l'ultimo passaggio: Eliminare la Flex (CG2).

Prima abbiamo detto che un CG inizia per
Codice:
02 00 00 00 00 00 03 02 01
quindi con HEX Workshop ci posizioniamo all'inizio del file andiamo su Edit>Find (CTRL+F) e compiliamo la schermata come descritto nell'esempio

La 1° volta che trova questa stringa, cliccate F3 due volte e vi porterà automaticamente alla stringa d'apertura della Flex che dobbiamo cancellare dal firmware.
.

Adesso il nostro obiettivo è cercare la lunghezza in byte del CG2.
La stringa d'apertura è
Codice:
02 00 00 00 00 00 03 02 01 01 B0 00 00 11 DC 00 00
La grandezza del CG sembra essere 01 B0 00 00--> 28311552.

Benissimo adesso abbiamo la grandezza del Codegroup.
Quindi ci posizioniamo nel byte successivo allo Start Adress e facciamo Edit>Select Block e compiliamo come descritto nello screen


E dopo facciamo Tasto destro del mouse>Delete.

Adesso però dobbiamo cancellare la stringa d'apertura e di chiusura della Flex (CG2).

Per prima selezioniamo questa stringa
Codice:
02 00 00 00 00 00 03 02 01 01 B0 00 00 11 DC 00 00
e la cancelliamo con Tasto destro del mouse>Delete.

Però adesso rimane da cancellare la stringa di chiusura della Flex (CG2) che è
Codice:
00 00 00 00 03 02 02 00 00 00 00 03
I primi 4 Bytes sembrano essere un Checksum 32 Bit (bisogna ancora capire il ragionamento) che però si può anche mettere a 00 I programmi lo accetteranno lo stesso
Codice:
00 00 00 00
Gli altri 8 Bytes indicano che il CG finisce là.
Codice:
03 02 02 00 00 00 00 03
Quindi adesso selezioniamo la stringa di chiusura e la cancelliamo con Tasto destro del mouse>Delete.

Adesso il nostro reflash si può postare senza ombra di dubbio.
Complimenti! Avete creato il primo reflash in SBF.

Ringraziamenti
- famonaco, daniclara, alsitn: per avermi incoraggiato a scoprire qualcosa sui file SBF
- Rankine, LeaderGL, ZoRoThEBeSt, Cannone: per avermi fortemente voluto come Moderatore in questo forum.
- Giro: per avermi lanciato nel mondo dei firmware. (se vuoi postare questa cosa su PMobile puoi farlo senza problemi )



E aggiungo io: Grazie mille a flash.tato :)
 
Top
0 replies since 8/4/2007, 22:00   163 views
  Share