Questo tutorial è basato sulla versione 1.1.0 di JCooker.
Posizionarsi all'interno della directory della cucina.
Lanciare il batch 0_cleansrc.bat1) per ripulire la directory src.
- Copiare la ROM sorgente all'interno della directory src. Il file della ROM deve chiamarsi ciphone.bin, procedere quindi rinominandolo nel caso si chiamasse in modo differente.
Lanciare lo script 1_dump.bat
Questo script, prima di tutto, crea quattro sottodirectory in src, chiamate rispettivamente 1, 2, 3 e 4. Queste sottodirectory vengono utilizzate per raccogliere il risultato dei singoli passi di spacchettamento della ROM sorgente.
Nella directory 1 ci sarà il risultato del comando jtdi.exe ciphone.bin:
jtdi.exe ciphone.bin __ ______ _____ __ /\ \ /\__ _\ /\ __-. /\ \ _\_\ \ \/_/\ \/ \ \ \/\ \ \ \ \ /\_____\ \ \_\ \ \____- \ \_\ \/_____/ \/_/ \/____/ \/_/ HiSilicon IDT unMerger - Version 0.3 by Janniz Processing file: ciphone.bin -------------------------------------------------------------------- File: ciphone.bin IDT File type: 1.0.x ROM build date: 02/25/2011 Hardware version: 1.0.0.0 Number of partitions: 5 -------------------------------------------------------------------- PartN. | Type | Size | Offset | Note | -------|------------|------------|------------|--------------------| 1 | RAMInit | 796 | 196 | | 2 | USBLoad | 45324 | 992 | | 3 | XLDR | 131072 | 46316 | | 4 | IPL | 119068 | 177388 | | 5 | FLASH | 67765760 | 296456 | | Starting splitting... Writing: RAMInit.nb0: Writing: USBLoad.nb0: Writing: XLDR.nb0: Writing: IPL.nb0: Writing: FLASH.nb0: Job done. Now I'm exiting gracefully :)
Durante questo passaggio la ROM viene scomposta nelle sue componenti: RAMInit.nb0, USBLoad.nb0, XLDR.nb0, IPL.nb0 e FLASH.nb0.
Il nostro ingrediente principale per cucinare la ROM sarà FLASH.nb0. Lasceremo pertanto le altre componenti da parte sino a quando non sarà il momento di riassemblare il tutto.
Lo script quindi va ad eseguire il comando osnbtool -sp flash.nb0:
osnbtool -sp flash.nb0 OS ROM Partition Tool V1.59 By Weisun :> PDAclan.com Sector size : 0x00000800 Extra data bytes : 0x00000008 OS IMAGE found. Partitions infomation: ************************************** Part-0 type: BOOT SECTION image Part-1 type: XIP RAM Image Part-2 type: IMGFS file system Part-3 type: legit DOS partition ************************************** flash.nb0.PRE written. ------------------------------------------------- Sector counters (extra-data) found in source file. Partition 0 true offset:00000002 true size:0000027E Len:0000027E Partition 1 true offset:00000280 true size:000006C0 Len:000006C0 Partition 2 true offset:00000940 true size:0000BD00 Len:0000BD00 Partition 3 true offset:00000000 true size:00000000 Len:00012DC0 flash.nb0.OS.NB written.
Il risultato, consistente nei due file flash.nb0.PRE e flash.nb0.OS.NB viene salvato all'interno della directory 2.
Il passo successivo (sempre eseguito da 1_dump.bat) consiste nell'estrarre le 4 partizioni: boot.bin, xip.bin, imgfs.bin e legitDos.bin contenute in flash.nb0.OS.NB.
osnbtool -d flash.nb0.os.nb 0 boot.bin OS ROM Partition Tool V1.59 By Weisun :> PDAclan.com Sector size : 0x00000800 Extra data bytes : 0x00000000 OS IMAGE found. Partitions infomation: ************************************** Part-0 type: BOOT SECTION image Part-1 type: XIP RAM Image Part-2 type: IMGFS file system Part-3 type: legit DOS partition ************************************** Signature: SRPX CompressVersion: 5 Uncompressed size: 300000 Deompress processing... Successfully decompressed to boot.bin
osnbtool -d flash.nb0.os.nb 1 xip.bin OS ROM Partition Tool V1.59 By Weisun :> PDAclan.com Sector size : 0x00000800 Extra data bytes : 0x00000000 OS IMAGE found. Partitions infomation: ************************************** Part-0 type: BOOT SECTION image Part-1 type: XIP RAM Image Part-2 type: IMGFS file system Part-3 type: legit DOS partition ************************************** Can not find compression signature. Part-1 de-packing... Successfully de-packed to xip.bin
osnbtool -d flash.nb0.os.nb 2 imgfs.bin OS ROM Partition Tool V1.59 By Weisun :> PDAclan.com Sector size : 0x00000800 Extra data bytes : 0x00000000 OS IMAGE found. Partitions infomation: ************************************** Part-0 type: BOOT SECTION image Part-1 type: XIP RAM Image Part-2 type: IMGFS file system Part-3 type: legit DOS partition ************************************** Can not find compression signature. Part-2 de-packing... Successfully de-packed to imgfs.bin
osnbtool -d flash.nb0.os.nb 3 legitDos.bin OS ROM Partition Tool V1.59 By Weisun :> PDAclan.com Sector size : 0x00000800 Extra data bytes : 0x00000000 OS IMAGE found. Partitions infomation: ************************************** Part-0 type: BOOT SECTION image Part-1 type: XIP RAM Image Part-2 type: IMGFS file system Part-3 type: legit DOS partition ************************************** ERROR - Part-3 size is wrong!
Il risultato di queste operazioni trova posto nella directory 3.
L'ultima passo di estrazione (dump) della ROM consiste nello scompattare imgfs.bin e xip.bin e nel ricostruire i pacchetti originari.
Per imgfs.bin si procederà dunque così2):
xidump imgfs.bin XIDUMP v1.0 Beta Copyright (c) 2009-2010 bepe Oct 27 2009 00:17:17 Inizializing RAW Data layer Found IMGFS Partition... .hst .ROM .VM 01cfec30-34b0-4ab8-9c07-89c16b720030.dsm ........ ........ ........ ........ ZipView.exe zlib.dll Done!
packagebuilder.exe IMGFS PACKAGEBUILDER 3 Copyright (c) 2007-2008 bepe Apr 23 2008 22:12:21 [Versions] SYS: 5.2.23500 5500 SYS: 5.2.23515 5500 ........ ........ ........ ........ [Missing Manifests] 723fb954-d931-4348-b672-82a188e587b5.dsm cb60b333-da30-aaba-ecca-33a4568f566f.dsm Done!
Analogamente per xip.bin:
xidump -b xip.bin XIDUMP v1.0 Beta Copyright (c) 2009-2010 bepe Oct 27 2009 00:17:17 Inizializing RAW Data layer Found XIP Partition... busenum.dll cachefilt.dll cecompr.dll ........ ........ ........ ........ sysroots.p7b OS: 16512.5 (Build: 5500) MSXIPKernel Done!
Lanciare lo script 2_cleanbuildOS.bat per ripulire la directory BuildOS.3)
Lanciare 3a_buildos_from_dump.bat
Quando compare la finestra di BuildOS premere il tasto con la freccia verde, attendere che completi la sua opera e chiuderlo.
Il batch provvede innanzitutto a popolare le directory necessarie a BuildOs:
Copia src\4\IMGFS\OEM —> BuildOs\OEM
Copia src\4\IMGFS\SYS —> BuildOs\SYS
Copia src\4\XIP\MSXIPKernel\boot_ms.rgu —> BuildOs\ROM\XIP\
Copia src\4\XIP\OEMXIPKERNEL\boot.rgu —> BuildOs\ROM\XIP\
Genera le voci di registro necessarie, esportandole dai default.hv e user.hv della ROM sorgente, e le converte in UTF-16
rgucomp.exe -o default.hv > default.txt rgucomp.exe -o user.hv > user.txt iconv.exe -t UTF-16LE default.txt > default.ucs-2le iconv.exe -t UTF-16LE user.txt > user.ucs-2le copia Tools\rguheader.UCS-2LE + default.ucs-2le + user.ucs-2le ---> 034e7cf6-8a37-40ad-85bd-6851b921866a.rgu
A questo punto viene avviato BuildOS.exe che provvederà a creare la struttura del filesystem e ad aggiungere le chiavi contenute nei file *.rgu dentro i file default.hv e user.hv prelevati da SYS/Metadata/. Il risultato delle operazioni di BuildOS viene salvato dentro la directory BuildOS/temp
Solite operazioni di pulizia del piano di lavoro:
4_cleanextreloc.bat
5_cleannew.bat
Lanciare 6a_extrelocandbuildxipfrombin.bat
Se non si ha intenzione di modificare moduli in imgfs o nello XIP, si possono saltare i sottopassi successivi di rilocazione dei moduli. In tal caso chiudere le finiestre di xipport e extreloc quando si presentano e copiare direttamente il file xip.bin da src\3 in new\1 (creare la directory new\1 nel caso non esistesse) e procedere con Step 4: build imgfs
********************** * [xipport] Dump xip * * [xipport] Close * **********************
All'apertura della finestra di XIPPort premere dump xip.bin e poi chiudere tranquillamente XIPPort.4)
Il file xip.bin sarà quindi scompattato nella cartella ExtReloc\OUT.
Dopo aver chiuso XIPPort sarà automaticamente lanciato ExtReloc. Seguire scrupolosamente i passi indicati a video:
******************************************************** * [extreloc] Import xipport * * [extreloc] ReallocV * * [xipport] Realoc P * * [xipport] Write maps * * [extreloc] Realloc nk.exe, gsiir, ... button * * [xipport] Realloc P again * * [xipport] Write maps * * [extreloc] Drag the vertical white line to the left * * [extreloc] Realloc imgfs * * [xipport] Build xip_out.bin * * [extreloc] Close xipport and extreloc * ********************************************************
e cioè, spiegato in maniera più estesa:
In Extreloc:
- Import xipport (Rilancia XiPPort, ci servirà successivamente).
- ReallocV
In XiPPort:
- ReallocP
- Write maps
In Extreloc:
- Realloc NK.EXE, GSIIR, DLL, etc
In XiPPort:
- ReallocP (di nuovo)
- Write maps (Questo passo credo non serva a nulla… ma nel dubbio lo lascio…)
In Extreloc:
- Trascinare la linea bianca verticale verso il bordo sinistro per visualizzare la schermata relativa al realloc di IMGFS
- Realloc IMGFS modules
In XIPPort:
- Build xip_out.bin
Chiudere la finestra di XIPPort, chiudere la finestra di Extreloc.
Se tutto è andato a buon fine dovremmo avere il file xip.bin dentro la directory new\1
Lanciare il file 8_imgfsfromdump.bat per ricostruire il nuovo imgfs.bin a partire da quanto contenuto in BuildOS\temp.
Il nuovo imgfs sarà creato all'interno della directory new\1
Lanciare 97_pmud1.bat.
Verrà ricostruito FLASH.nb0, iniettando i nuovi imgfs.bin e xip.bin nel flash.nb0.os.nb presente in src\2, e unendo il tutto con il file flash.nb0.PRE ottenuto precedentemente e anch'esso memorizzato in src\2.
Il risultato viene post in new\4
Lanciare 99_IDT.bat per avviare IDT e ricostruire la nuova ROM ciphone.bin.
Se compare la finestra Password premere Cancel (la finestra compare solo nel caso non ci sia un file chiamato ciphone.bin nella directory di IDT).
Dal menù selezionare View → Image merge
Platform select: GSM/EGPRS
Confermare l'operazione
Inserire l'hw version: 1.0.0.05)
Salvare l'immagine con il nome ciphone.bin nel percorso proposto.
Chiudere la scheda di image merge
A questo punto è possibile effettuare direttamente il flash rilanciando IDT e mettendo il telefono in modalità flash.
Nota 1: L'immagine logo.bmp corrisponde all'immagine visualizzata nelle prime fasi di avvio del telefono ed è archiviata in new\0.
Nota 2: Verificare che gli elementi elencati in RAMInit, USBLoad, XLDR, IPL siano corretti ed esistano nel path indicato src\4. In caso contrario si potrebbe brickare irrimediabilmente il telefono.
Eseguendo i passi soprastanti, è possibile scomporre, e successivamente riassemblare una ROM pre-esistente. L'operazione di per se è abbastanza sterile, e acquista senso soltanto quando il cuoco è intenzionato ad apportare delle modifiche alla ROM originale per personalizzarla secondo le proprie esigenze.
A tal fine è possibile intervenire modificando il filesystem nel passo 2:
Qualora le personalizzazioni richieste contemplino la modifica dello XIP, allora si dovrà agire nel passo 3, dopo aver eseguito il dump dello XIP, andando a lavorare nella directory ExtReloc\OUT prima di eseguire le operazioni di rilocazione di ExtReloc.