Piątek, 25 Maj 2012, 14:15

Autor Wątek: [Himalaya] Wgrywanie ROMu z karty SD  (Przeczytany 7131 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Online utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8262
  • Podziękowań: 137
  • Płeć: Mężczyzna
  • Samsung Ace, Raphael, Hermes, Universal i inne
    • Wirtualne Zacisze utak3ra
[Himalaya] Wgrywanie ROMu z karty SD
« dnia: Czwartek, 12 Luty 2009, 23:22 »
W dawnych czasach ;)  HTC bardzo mocno kombinowało z zabezpieczaniem urządzeń... dzisiaj już tylko CID lock jest. Kiedyś, zamiast CID locka, było m.in. szyfrowanie (no, bardzo słabe, ale jednak) obrazów ROMu oraz coś, o czym dzisiaj napiszę - sygnaturka urządzenia na karcie SD.

O co chodzi?
W dzisiejszych urządzeniach ze stajni HTC, aby wgrać ROM z karty SD (bez użycia kabla), wystarczy skopiować na nią obraz ROMu i tyle. W przypadku Himalayi jednak, to nie wystarczy, ponieważ obraz ROMu zostaje wzbogacony nagłówkiem, sygnaturką, która jest niestety indywidualna dla każdej pary urządzenie-karta. Jest to problem o tyle, że nie dość, że musimy mieć ową sygnaturkę z naszego urządzenia, to jeszcze na dodatek dla danej konkretnej karty SD!


1. Uzyskanie nagłówka.

Skąd wziąć ten nagłówek? Trzeba zrobić backup swojego aktualnego ROMu. Do tego będzie nam potrzebny kabel i urządzenie w trybie bootloadera  (tutaj więcej info na temat bootloadera w Himalayi).
Wykonujemy backup ROMu na kartę za pomocą komendy d2s (przykładowa sesja poniżej):

password BOOTLOADER
Pass.
USB>d2s
SD:Waiting for card insert.........

CMD3 for SD, it's OK, ready to get RCA from response.

SD:Detected one card

SD:ready for transfer OK

pc->drive.total_lba=F5800
pc->drive.num_heads=0
pc->drive.sec_p_track=0
pc->drive.num_cylinders=0
pc->drive.block_size=200
pc->drive.features=0
pc->drive.RCA=2
pc->drive.drv_type=40000000
pc->drive.securedAreaSize=0
pc->drive.securityDrv=0
pc->drive.busWidth=1
pc->drive.erasedSize=0
Total card size=1EB00000

SDCARDD2S+,cStoragePlatformType=FF

*******************************************************************************************************************************
Store image to SD/MMC card successful.

USB>


Gdy spróbujemy jednak odczytać kartę, okazuje się, że nie jest ona zapisana bynajmniej w postaci pliku - bootloader dosłownie sektor po sektorze zapisał kartę obrazem ROMu. Dlatego musimy teraz użyć specjalnego programu do odczytu naszego backupu. Pierwszym nasuwającym się narzędziem jest ntrw, jednak ma on zasadniczą wadę - zrzuca do pliku zawartość całej karty, czyli jeśli mieliśmy w czytniku kartę 1GB, takiej wielkości plik nam utworzy. Z tego też powodu itsme napisał program, który umożliwia odczyt/zapis dowolnej porcji, a także podgląd zawartości - psdread, który załączam do tego tutoriala.

Za pomocą tego programu odczytujemy najpierw nagłówek obrazu. Załóżmy, że nasza karta otrzymała od systemu literkę m: (tak wyszło to u mnie ;) ). Wydajemy polecenie:

c:>psdread.exe m: 0 0x19c

W efekcie otrzymamy na ekranie np. coś takiego:

00000000: 48 49 4d 41 4c 41 59 41 53 20 20 20 20 20 20 20  HIMALAYAS
00000010: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
00000020: 31 2e 30 36 20 20 20 20 20 20 20 20 20 20 20 20  1.06
00000030: 78 7e a8 50 96 f5 45 3b 13 0d 89 0a 1c db ae 32  x~.P..E;.......2
00000040: 20 9a 50 ee 40 78 36 fd 12 49 32 f6 9e 7d 49 dc  1.P..x6..I2..}I.
00000050: ad 4f 14 f2 44 40 66 d0 6b c4 30 b7 32 3b a1 22  .O..D.f.k.0.2;..
00000060: f6 22 91 9d e1 8b 1f da b0 ca 99 02 b9 72 9d 49  .............r.I
00000070: 2c 80 7e c5 99 d5 e9 80 b2 ea c9 cc dd 00 4c f2  ,.~...........L.
00000080: 53 41 30 30 e1 dc d6 ae 83 90 49 f1 f1 ff e9 eb  SA00......I.....
00000090: b3 a6 db 1e 87 0c 3e 77 24 42 0d 1c 06 b7 47 de  .......w$B....G.
000000a0: 6d 12 4d c8 43 2e cb a6 1f 03 5a 7d 09 38 25 1f  m.M.C.....Z}.8%.
000000b0: 5d 9f d4 fc 96 f5 45 3b 13 0d 89 0a 1c d3 90 2d  ].....E;.......-
000000c0: 48 9a 50 ee 40 78 36 fd 12 49 32 f6 9e 81 49 dc  H.P..x6..I2...I.
000000d0: ad 4f 14 f2 44 40 66 d0 6b c4 30 b7 3c 84 f2 87  .O..D.f.k.0.....
000000e0: 61 49 d1 4f 0a d8 16 e7 72 e6 bb 12 84 34 a6 77  aI.O....r....4.w
000000f0: 02 37 e4 97 2c 74 cb c9 12 68 33 74 9e ad 87 d5  .7..,t...h3t....
00000100: fa 16 bb 11 ad ae 24 88 79 fe 52 db 25 43 e5 3c  ......$.y.R.%C..
00000110: b3 12 4d c8 43 bb 8b a6 1f 03 5a 7d 09 38 25 1f  ..M.C.....Z}.8%.
00000120: 5d d4 cb fc 96 f5 45 3b 13 0d 89 0a 1c db ae 32  ].....E;.......2
00000130: 20 9a 50 ee 40 78 36 fd 12 49 32 f6 9e 7d 49 dc  ..P..x6..I2..}I.
00000140: ad 4f 14 f2 44 40 66 d0 6b c4 30 b7 32 3b a1 22  .O...D.f.k.0.2;.
00000150: f6 22 91 9d e1 8b 1f da b0 ca 99 02 b9 72 9d 49  .............r.I
00000160: 2c 80 7e c5 99 d5 e9 80 b2 ea c9 cc 53 bf 67 d6  ,.~.........S.g.
00000170: bf 14 d6 7e 2d dc 8e 66 83 ef 57 49 61 ff 69 8f  ...~-..f..WIa.i.
00000180: 48 54 43 53 41 30 30 34 30 30 30 30 30 31 46 43  HTCSA004000001FC
00000190: 30 30 30 30 46 45 46 39 46 32 43 44              0000FEF9F2CD

W zasadzie punkt pierwszy tutoriala mamy już za sobą, jakbyś nie wiedział ;) ale dociągniemy tę sprawę do końca, w celu uzyskania pełnosprawnego backupu ROMu.
Spójrzmy na końcówkę tego bloku:

HTCS A0040000 01FC0000 FEF9F2CD

Mamy tutaj:
A0040000 - położenie obrazu ROM w urządzeniu
01FC0000 - rozmiar samego systemu ( czyli dziesiętnie 33292288 bajtów)
FEF9F2CD - suma kontrolna

Na samym końcu zrzutu obrazu znajduje się jeszcze znacznik końca obrazu, złożony z 4 bajtów (HTCE), W związku z tym rozmiar całego obrazu ROMu wynosi sumę rozmiarów nagłówka, systemu i znacznika końcowego, czyli: 19C + 1FC0000 + 4 = 0x1FC01A0 bajtów łącznie.

Możemy więc już teraz spokojnie utworzyć plik obrazu naszego ROMu za pomocą komendy:

c:\> psdread.exe m: 0 0x1FC01A0 os.img

Natomiast sam nagłówek (sygnaturkę) w celach podmiany ROMu zapisujemy do osobnego pliku:

c:\> psdread.exe m: 0 0x19c header.img


2. Uzyskanie gołego pliku OS.nb

W nowszych urządzeniach plik OS.nb jest codziennością, natomiast podczas normalnego gotowania pod Himalayę mogłeś się nawet nie zetknąć z tą czystą formą obrazu ROMu, jaką jest plik OS.nb. Jak go więc uzyskać?

Normalny obraz ROMu jest w postaci pliku nk.nbf. Jest to zaszyfrowany (no, powiedzmy... użyto algorytmu XOR) obraz. Rozkodowujemy go komendą:

c:\> xda2nbftool.exe -x nk.nbf nk.nba 0x20040304

w efekcie czego otrzymamy plik nk.nba. Następnie ten plik rozbieramy poleceniem:

c:\> dump.exe -o 0x40040 -l 0x1FC0000 nk.nba os.nb

W wyniku otrzymujemy gotowy do użycia plik OS.nb :)


3. Złożenie obrazu do wgrania na kartę.

Złożenie obrazu końcowego jest trywialne... obraz to po prostu nasz nagłówek + OS.nb, czyli:

c:\> type header.img > SD_img.img
c:\> type OS.nb >> SD_img.img

Otrzymany plik SD_img.img jest plikiem, który należy wgrać na kartę SD:

c:\> psdwrite m: SD_img.img


Tutaj chciałbym polecić pewien program, o ile jeszcze z niego nie korzystacie.... wszystkie powyższe czynności, jak i wiele innych, znacznie łatwiej i szybciej wykonać można przy pomocy edytora binarnego HxD (tutaj można go pobrać), który jest wyposażony w szereg bardzo pomocnych funkcji (w tym również operacje na dyskach bezpośrednio oraz na obrazach dysku).



4. Wczytanie ROMu do urządzenia.

Uwaga, to będzie najtrudniejsza część.....


No, może nie do końca  :p
Wyłączamy urządzenie (całkiem! najlepiej wyjąć baterię), wkładamy spreparowaną kartę SD, włączamy urządzenie w tryb bootloadera. Pojawi się napis "press power to flash". Wciskamy przycisk Power i czekamy, aż proces się zakończy. NIE PRZERYWAMY PROCESU, NAJLEPIEJ PÓJŚĆ ZROBIĆ SOBIE KAWĘ/HERBATĘ/ZAPALIĆ !!!

i.... to tyle :)
udanych flaszy!
« Ostatnia zmiana: Piątek, 13 Luty 2009, 00:45 wysłana przez utak3r »
Windows Mobile: a story of love and hate.


nokser

  • Gość
Odp: [Himalaya] Wgrywanie ROMu z karty SD
« Odpowiedź #1 dnia: Czwartek, 12 Luty 2009, 23:56 »
Hmmm, to teraz po prostu muszę uzyskać ten nagłówek i sygnaturę

Online utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8262
  • Podziękowań: 137
  • Płeć: Mężczyzna
  • Samsung Ace, Raphael, Hermes, Universal i inne
    • Wirtualne Zacisze utak3ra
Odp: [Himalaya] Wgrywanie ROMu z karty SD
« Odpowiedź #2 dnia: Czwartek, 12 Luty 2009, 23:57 »
Ty kombinuj, a ja cały czas piszę ten artykuł....
Windows Mobile: a story of love and hate.


nokser

  • Gość
Odp: [Himalaya] Wgrywanie ROMu z karty SD
« Odpowiedź #3 dnia: Piątek, 13 Luty 2009, 00:08 »
Mam ten sam nagłówek ale w offsecie:00041C40:
48 00 49 00 4D 00 41 00 4C 00 41 00 59 00 41 00
unicode: H.I.M.A.L.A.Y.A.

Online utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8262
  • Podziękowań: 137
  • Płeć: Mężczyzna
  • Samsung Ace, Raphael, Hermes, Universal i inne
    • Wirtualne Zacisze utak3ra
Odp: [Himalaya] Wgrywanie ROMu z karty SD
« Odpowiedź #4 dnia: Piątek, 13 Luty 2009, 00:11 »
Ale masz cały ten blok?
Windows Mobile: a story of love and hate.


nokser

  • Gość
Odp: [Himalaya] Wgrywanie ROMu z karty SD
« Odpowiedź #5 dnia: Piątek, 13 Luty 2009, 00:48 »
raczej cały twój ciąg jest u mnie rozsypany, po całym pliku



dodano: Piątek, 13 Luty 2009, 00:21
mam chyba załapałem, jak leci polecenie, ale na odwrót os.nb -> nk.nba???



dodano: Piątek, 13 Luty 2009, 00:33
Ok mam, dalej kombinuje



dodano: Piątek, 13 Luty 2009, 00:39
Powiedz mi co by się stało jak bym poleciał na pliku nba ->os.nb itd bez kroku pierwszego ?-?

Online utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8262
  • Podziękowań: 137
  • Płeć: Mężczyzna
  • Samsung Ace, Raphael, Hermes, Universal i inne
    • Wirtualne Zacisze utak3ra
Odp: [Himalaya] Wgrywanie ROMu z karty SD
« Odpowiedź #6 dnia: Piątek, 13 Luty 2009, 00:50 »
znaczy się co byś próbował robić?... bo nie rozumiem?...
chcesz wyflaszować taki goły ROM?  bootloader nie pozwoli.
Windows Mobile: a story of love and hate.


nokser

  • Gość
Odp: [Himalaya] Wgrywanie ROMu z karty SD
« Odpowiedź #7 dnia: Piątek, 13 Luty 2009, 00:52 »
Bo szczerze, to ja na razie nie mam pomysłów jak to zrobić....... :oT

Online utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8262
  • Podziękowań: 137
  • Płeć: Mężczyzna
  • Samsung Ace, Raphael, Hermes, Universal i inne
    • Wirtualne Zacisze utak3ra
Odp: [Himalaya] Wgrywanie ROMu z karty SD
« Odpowiedź #8 dnia: Piątek, 13 Luty 2009, 00:53 »
mm... ale co konkretnie?  ?-?
Windows Mobile: a story of love and hate.


nokser

  • Gość
Odp: [Himalaya] Wgrywanie ROMu z karty SD
« Odpowiedź #9 dnia: Piątek, 13 Luty 2009, 00:56 »
Pierwszy krok odchodzi, bo nie mam połączenia z PC i to wali całą resztę

Online utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8262
  • Podziękowań: 137
  • Płeć: Mężczyzna
  • Samsung Ace, Raphael, Hermes, Universal i inne
    • Wirtualne Zacisze utak3ra
Odp: [Himalaya] Wgrywanie ROMu z karty SD
« Odpowiedź #10 dnia: Piątek, 13 Luty 2009, 01:00 »
Będę kombinował... nie wiem tylko, czy to coś da. Jak się ostatnio tym zajmowałem (ze dwa lata temu?) to stan wiedzy był taki, że się nie da ;)
Windows Mobile: a story of love and hate.


nokser

  • Gość
Odp: [Himalaya] Wgrywanie ROMu z karty SD
« Odpowiedź #11 dnia: Piątek, 13 Luty 2009, 01:05 »
Rozumiem, bądź co bądź w pliku z tej aplikacji co mi dałeś, nie ma nawet tego ->
Cytuj
HTCS A0040000 01FC0000 FEF9F2CD
więc, lecę dalej.......
   pokombinuje jeszcze z ty DiskRW, bo jakiś zrzut pamięci na SD robi  ;)

nokser

  • Gość
Odp: [Himalaya] Wgrywanie ROMu z karty SD
« Odpowiedź #12 dnia: Piątek, 13 Luty 2009, 14:25 »
Tak sobie pomyślałem, może wykorzystam, twój zrzut pamięci ??? tylko bym coś pozmieniał, po szukam jakiegoś wyjścia w necie i nic nie ma na ten temat....... ?-?

Online utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8262
  • Podziękowań: 137
  • Płeć: Mężczyzna
  • Samsung Ace, Raphael, Hermes, Universal i inne
    • Wirtualne Zacisze utak3ra
Odp: [Himalaya] Wgrywanie ROMu z karty SD
« Odpowiedź #13 dnia: Piątek, 13 Luty 2009, 14:29 »
W necie nic nie znajdziesz, możesz nie szukać... rozmawiam teraz z buzzem, może coś razem uradzimy, ale.... jak to mówią Francuzi: marne-szanse....
Windows Mobile: a story of love and hate.


nokser

  • Gość
Odp: [Himalaya] Wgrywanie ROMu z karty SD
« Odpowiedź #14 dnia: Piątek, 13 Luty 2009, 15:18 »
Szczerze to mnie nie pocieszyłeś