SNEWS
21 - HTC TOUCH ROMBACKUP
Nos, kezdjük azzal, hogy az ember
gyarló, és szeretne mindenféle extrát. Szeretne
telefonálgatni, szeretne PDA-t bökdösni, jól
érezni magát. Hosszas töprengés, szenvedés
után végül vásárol egy HTC Touch névre
hallgató kis csodát, amin ugyan mobilvindóz fut, de
hát miért is ne…?. A készülék
gyönyörű, a mobilvindóz
szoftverellátottsága jó, szóval minden együtt
van, hogy boldog tulajdonosai lehessünk egy Touch-nak. Egy idő
után felmerül az emberben, hogy a készülékkel
szállított operációs rendszer némileg
elavult, és/vagy egyéb szoftveres igényeink vannak, fel
kéne rakni egy másik ROM-ot. A ROM tartalmazza az
operációs rendszert, magyarul ha frissítjük,
(remélhetőleg) több, jobb, szebb alkalmazáshoz jutunk,
illetve talán takarékosabban bánik a CPU-idővel,
illetve a memóriahasználattal. Az új
operációs rendszer feltöltése viszont nem csak
játék és mese… Mindig veszélyekkel jár
rengeteg buktatója van, nem biztos, hogy azt kapjuk amit
szeretnénk, s visszatérnénk az eredeti
operációs rendszerünkhöz. Esetleg mégis
elégedettek vagyunk, de még mindig beüthet valami
hiba… A szerviz ha „idegen” ROM-ot talál a
gépen, jó magyar szokás szerint mindenért,
akár egy kipukkant hangszóróért, kiégett
világításért (bármiért) az
általunk feltett ROM-ot teszi felelőssé, és a
garancia elszállt.
Na, innen jön az igény, hogy
mielőtt bármilyen új operációs rendszert
telepítünk, a régiről jó lenne egy
biztonsági mentést készíteni, hisz ezzel bármikor
„gyárira” visszaállíthatjuk a telefonunkat.
Persze nem akarok hitegetni senkit, jó eséllyel észre
lehet venni, hogy más ROM is fenn volt a gépen, de egy
felületes szervizmunkánál remélhetőleg nem fog
feltűnni, hisz mondjuk egy hangszórócseréhez nem kell
a készülék memóriájában kutakodni.
Mielőtt nekilátsz, kérlek vedd
figyelembe a következőket!
- Először olvasd végig a
cikket, szerezd be a hozzá való szoftvereket, és nézd meg, hogy működnek-e.
- Ha nem vagy biztos a tudásodban, a
szoftverek, hardverek stabil működésében,
inkább ne próbálkozz, kérj meg valakit, aki
már csinált ilyet.
- Az alábbi leírt folyamat
elvileg nem okoz kárt semmilyen szoftverben vagy hardverben (nekem
sem tette), ám erre semmi garancia nincs.
- Nem szabad „mechanikusan”
követni a leírást, ha valahol jelentősebb
eltérés merül fel a leírás és a
gyakorlat után, próbálj meg máshol is
utánaolvasni a backupnak!
Nos, nézzük hogyan is kellene ezt
csinálni:
Először is az xda-developers
weboldaláról letöltjük a backuphoz
szükséges szoftvereket:
Mint látszik, nem is kevés
dologra lesz szükségünk, de ne essünk
kétségbe.
Kezdésnek a letöltött
cuccokat ki kéne tömöríteni. Mivel jelen pillanatban
teljesen érdektelen a programok egyéb irányú
felhasználása, mindent kiborítunk egyetlen mappába,
hogy kéznél legyenek. Mivel az „akció” java
része az asztali gépünk parancssor-ablakában zajlik,
így célszerű olyan mappát készíteni neki,
amiben a lehető legkevesebb (=0) szóköz van. Legyen ez a mappa
mondjuk a C meghajtónkon, s hívjuk mondjuk _ROM-nak.
Miután mindent kiborítottunk ebbe a mappába, nyitunk egy
parancssort, s könyvtárat váltunk:
C:\Document
and Settings\User>cd c:\_rom
Ezzel elértük, hogy a parancsorunk
már készen áll a nagy akcióra. Ezután a
készüléket csatlakoztatjuk egy USB-porthoz, lehetőleg
úgy, hogy ha szükséges, tudjuk használni még a
készüléket. Abból nem lehet senkinek baja, ha
kikapcsol a telefonon mindenféle kommunikációs
lehetőséget, és flight módba állítja.
(Én nem tettem, de lehet hogy csak szerencsém volt vele.)
Miután a systray-en (a magyar win tán „értesítési
terület”-nek nevezi) kizöldült az ActiveSync ikonja,
minden együtt van az első próbához:
C:\_ROM>pdocread.exe
–l
Ha az eredmény a következő,
akkor a telefonunk nem díjazza az aláíratlan
alkalmazásokat:
Copying
C:\_ROM\itsutils.dll to WCE:\windows\itsutils.dll
Could not update itsutils.dll to the current version, maybe it is inuse?
try restarting your device, or restart ActiveSync
Nos, akkor felkapjuk a telefont, és
kicsit belenyúlkálunk a lelkivilágába.
Remélehtőleg mindenkinek van valami registry editora, legrosszabb
esetben egy Total Commander CE is megfelel.
A következő kulcsot kell
módosítanunk a telefon regisztrációs
adatbázisában:
HKLM\Security\Policies\Policies\00001001
A kulcs típusa dword, és elvileg
2 az értéke. A típust meghagyjuk dword-nek, az
értéket viszont 1-re módosítjuk. Ha a kulcs 1,
akkor a rendszer engedi az aláíratlan (unsigned)
alkalmazásokat, ha bármi más, akkor nem. Tehát
beírjuk szépen a 2 helyére az 1-et, elmentjük,
kilépünk, stb, majd egy határozott resettel
érvényesítjük is a változásokat. Vissza
a kályhához: ha megvolt a reboot, és zöld az
Activesync, újra megpróbáljuk:
C:\_ROM>pdocread.exe
–l
És már jön is az
eredmény:
Copying
C:\_ROM\itsutils.dll to WCE:\windows\itsutils.dll
70.95M (0x46f2000) TrueFFS
| 3.06M (0x30fc00) Part00
| 3.06M (0x310000) Part01
| 64.82M (0x40d2000) Part02
32.74M (0x20be800) TrueFFS
| 3.06M (0x30fc00) Part00
| 3.06M (0x310000) Part01
| 64.82M (0x40d2000) Part02
9.99M (0x9fd800) TRUEFFS
| 3.06M (0x30fc00) Part00
| 3.06M (0x310000) Part01
| 64.82M (0x40d2000) Part02
952.50M (0x3b880000) DSK1:
| 952.44M (0x3b86fe00) Part00
20.00k (0x5000) BTD1:
| 19.00k (0x4c00) PART00
STRG handles:
handle 4dea0026 19.00k (0x4c00)
handle 4e6ad536952.44M (0x3b86fe00)
handle 0f1a0f7a 9.99M (0x9fd800)
handle 6f2e487a 32.71M (0x20b5c00)
handle 2fb6aea6 64.82M (0x40d2000)
handle 8fb6ae82 3.06M (0x310000)
handle cfb6afae 3.06M (0x30fc00)
disk 4dea0026
0 partitions, 0 binary partitions
customerid=00000000 uniqueid= 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
disk 4e6ad536
0 partitions, 0 binary partitions
customerid=00000000 uniqueid= 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
disk 0f1a0f7a
3 partitions, 2 binary partitions
customerid=ffffffff uniqueid= ff ff ff ff 6f ff ff ff dd 50 3f ba 07 00 cd d4
disk 6f2e487a
3 partitions, 2 binary partitions
customerid=ffffffff uniqueid= ff ff ff ff 6f ff ff ff dd 50 3f ba 07 00 cd d4
disk 2fb6aea6
3 partitions, 2 binary partitions
customerid=ffffffff uniqueid= ff ff ff ff 6f ff ff ff dd 50 3f ba 07 00 cd d4
disk 8fb6ae82
3 partitions, 2 binary partitions
customerid=ffffffff uniqueid= ff ff ff ff 6f ff ff ff dd 50 3f ba 07 00 cd d4
disk cfb6afae
3 partitions, 2 binary partitions
customerid=ffffffff uniqueid= ff ff ff ff 6f ff ff ff dd 50 3f ba 07 00 cd d4
Persze ne várjuk, hogy betű
szerint megegyezzen a fentiekkel amit kapunk eredménynek, ám
valami hasonlót kell látnunk, a főbb adatok megegyeznek.
Miután ilyen jól haladunk,
időszerű, hogy ellenőrizzük a kimenteni szánt
memóriarész tényleges méretét. Mi a
„Part02” tartalmát, azaz az operációs
rendszerre vagyunk kíváncsiak:
C:\_ROM>pdocread
-w -d TrueFFS -p Part02 -t
real nr of sectors: 132752 - 64.82Mbyte (0x40d2000)
Miután ez megvolt, már tudjuk,
mit is kéne lementenünk, neki is kezdhetünk az egyik
legidőigényesebb feladatnak, a ROM image RAW-ban
történő kimentéséhez:
C:\_ROM>pdocread
-w -d TrueFFS -p Part02 0 0x40d2000 Part02.raw
CopyTFFSToFile(0x0, 0x40d2000, Part02.raw)
Ezzel jó ideig el fog szórakozni
a gép, nekem húsz percnél is tovább tartott,
szóval csak nyugalom. Semmi különös aktivitás nem
mutatkozik majd sem a telefonon, sem a parancssori ablakban, de ez így
természetes. Miután hosszú-hosszú
várakozás után megkapjuk újra a promptot,
megnézzük, valóban megvan-e a zsákmány:
C:\_ROM>dir
Part*.*
Directory of C:\_ROM
03/27/2008 10:03 PM 67,969,024 Part02.raw
1 File(s) 67,969,024 bytes
0 Dir(s) 37,610,442,752 bytes free
Nos, ez pontosan az, amit szerettünk
volna, név, méret oké, folytathatjuk a munkát.
Valahogy a RAW formátumot át kell alakítani imgfs-re
(imagefilesystem-re), hogy értelmezhető adatokat kapjunk,
előkészítjük hozzá a terepet:
C:\_ROM>prepare_imgfs.exe
Part02.raw -nosplit
Searching for IMGFS start... Found at 00000000
Dumping IMGFS ...
Miután ez megvolt,
megnézzük, hogy tényleg sikerült-e:
C:\_ROM>viewimgfs.exe
imgfs_raw_data.bin
Ennek az eredménye rengeteg, olvashatatlan tempóban
felfelé száguldó sor, aminek a vége valahogy
így fog kinézni:
….
….
Header
type: FFFFFEFE, Addr: 034AA374
dwNextDataTableOffset: 00000000
dwNextStreamHeaderOffset: 00000000
cchName: 00000003
wFlags: 00000000
szShortName: .VM
dwStreamSize: 00000010
dwFileAttributes: 00000047
fileTime: 83BDDA00 01C7AC5A
dwReserved: 00000000
dwDiskOffset: 034AA480
cbOnDiskSize: 00000040
wCompressedBlockSize: 0010
wDecompressedBlockSize: 0010
dwDiskOffset: 034AA4C0
Header type: FFFFFFFF, Addr: 034AA3A8
Empty header
Itt is fontosnak tartom megemlíteni,
hogy ne pont ugyanezeket az értékeket várjuk,
operációs renszerenként eltérőek, de valahogy
így fest. Az a fontos, hogy hibaüzenettel ne találkozzunk.
Ha találkoznánk, igazából fogalmam sincs mi van,
mert eddig nekem mindig hibaüzenet nélkül futottak le ezek az
dolgok.
Nekiláthatunk a tényleges imgfs
létrehozásának, csak így egyszerűen:
C:\_ROM>buildimgfs.exe
Egy kevéske munka után az output
valami ilyesmivel ér véget:
….
….
Processing
"_suite_8.png" as file
Processing "_suite_8_2.png" as file
Processing "_url.png" as file
Total Sectors: 0000
Used Sectors : 1a515
Free Sectors : fffe5aeb
Tudjátok: más OS, más
értékek…
Most pedig elővesszük a jó
öreg WinRar-t, és megnyitjuk vele az ausztrál
DOPOD-féle ROMot. (Nálam ez RUU_Elf_DOPOD_AU_1.14.710.2_4.1.13.46_02.97.90_BLUE_Ship.exe névre hallgat) Mielőtt tovább mennénk, elmondom, hogy
azért van rá szükség, hogy az eredeti,
aláírt környezetébe kerüljön vissza az
elmentett operációs rendszerünk. Szóval megnyitottuk,
és a RUU_SIGNED.NBH névre hallgató file-t
tömörítsük ki a C:\_ROM mappába. Miután
megvolt, az NBHEXTRACT segítségével
szétcincáljuk:
C:\_ROM>nbhextract.exe
ruu_signed.nbh
=== NBHextract v1.0
=== Extract contents from HTC NBH files
=== (c)2007 xda-developers.com
=== by: pof & TheBlasphemer based on itsme perl scripts
Device: ELF010000
CID: DOPOD001
Version: 1.14.710.2
Language: USA
Extracting: 00_Unknown.nb
Extracting: 01_SPL.nb
Extracting: 02_MainSplash.nb
Encoding: 02_MainSplash.bmp
Extracting: 03_ExtROM.nb
Extracting: 04_GSM.nb
Extracting: 05_OS.nb
A következő lépés,
hogy a ROM-mentésünkhöz előkészítjük
„shell”-nek a 05_OS.nb file-t:
C:\_ROM>make_imgfs.exe
05_OS.nb -nosplit
Searching for IMGFS start... Found at 00620000
Fixing... Done!
Ha eddig eljutottunk, már
kezdhetünk is örvendezni, rövidesen
elkészülünk. Elő kell vennünk a HTC ROM TOOL-t,
ami a “htcrt.exe” paranccsal indítható,
és abban a luxusban részesít minket, hogy grafikus
felülete van. Itt fontosnak tartom megemlíteni, hogy a
weboldalról leszedett 1.1-es ROM TOOL az internetről
töltené le a legújabb adatbázist a HTC telefonokhoz.
Nos, ez nekem nem jött össze, ám szerencsére más
forrásból hozzájutottam egy régebbi (1.0) verzióhoz,
amihez csatoltak már ini-t is. Szóval elindítjuk,
és lelkesen nekilátunk a szép grafikus felületen egy
“Build” gombot keresni, amit ha megnyomunk, máris az ablak
második fülére jutottunk.
Itt már nem sok mindent nem kell
tennünk. Az eszköz típusának (device)
kiválasztjuk az ELF-et, és a jobb oldali oszlopban a
legalsó sorban a „System” mezőbe kell a
„…” nyomógomb segítségével
kiválasztjuk a 05_OS.nb-t. Elvileg a „version”-t
még szabadna piszkálni, én nem tettem, de minden egyebet
úgy kell hagyni ahogy van. Ezután a bal alsó sarokban
lévő „Build ROM” gombot megnyomjuk. Szépen adunk
a backupnak egy nevet, enter, és hátradőlünk. A
kimeneti ablakban százalékok pörögnek (csíkok is
másznak tán?), s valami ilyesmi a vége:
ROM build process started...
Ceating temporary unsigned ROM file...
Writing ROM header...
System is 400h
Writing ROM contents:
05_OS.nb: 100%
Preparing destination...
Preparing ROM signer...
Signing ROM and copying it to destination...
Maximal chunk size is 1024 Kb
DONE: All seems to be ok!
Ezzel készen is vagyunk,
gratulálhatunk magunknak!
Na persze jön a kérdés,
hogy hogyan állítsuk vissza, ha esetleg meggondoljuk magunkat a
sok újítgatás közepette. Én azt
csináltam, hogy a fentebb emlegetett ausztrál DOPOD-féle
update-et WinRar-ral kitömörítettem egy külön
mappába, minden file-t. Fogtam az elkészített
mentésem, (HTC_Touch_original_5.2.1238.nbh) és
bemásoltam ebbe a mappába. Ezután letöröltem
innen az eredeti RUU_signed.nbh file-t, és a sajátomat
neveztem el ugyanígy. Ezt az egészet szépen beZIPeltem,
és eltettem. Ha úgy gondolom, kicsomagolom, ROMUpdateUtility.exe,
és szépen végigcsinálok egy „szimpla”
frissítést. Ehhez persze szükség lehet CID
unlockra is, de aki már felrakott bármilyen “nem
gyári” ROM-ot, annak nem lesz újdonság.
A leírás alapja az
xda-developers.com wiki-je, akinek nem tiszta amit fentebb leírtam, vagy
hibát vett észre közben, elolvashatja itt,
hátha akad benne valami, amit kifelejtettem.
Továbbá szeretném
megköszönni a segítséget Edemnek, aki
“kezdőlöketet”adta a cikk
megírásához.
Bye: