2008-04-16, 08:42
Myślę że na sam początek warto określić co już wiemy na temat struktury oprogramowania (lista uaktualniana z postępem prac):
- Jest ono szyfrowane w nieznany nam do tej pory sposób,
- W plikach znajduje się zapis "elf2flash" co daje podstawy do sądzenia, że został on obrobiony tym programem - http://forum.niosforum.com/forum/
- Istnieje podział na PPM i MCU oraz image.
Jak to robimy? Ściągamy dowolną paczkę oprogramowania (szyfrowanie nie zmienia sie z wersji na wersje raczej), otwieramy HexEditorem i kombinujemy. Na razie warto byłoby wyciągnąć ppm z kontenera elf2flash (zawiera bootloader i nieco śmieci) a potem zabrać się za samo oprogramowanie jako takie.
Do roboty Panowie, usuńmy wreszcie te cholerne napisy z odtwarzacza.
~darekj:
2008-04-16, 10:03
warto byłoby dojść i napisać które pliki za co odpowiadają:
PPM:
rm237__06.02.ppm_mr
rm237__06.02.ppm_p
rm237__06.02.ppm_q
rm237__06.02.ppm_r
rm237__06.02.ppm_rcm
rm237__06.02.ppm_s
rm237__06.02.ppm_t
rm237__06.02.ppm_u
rm237__06.02.ppm_v
rm237__06.02.ppm_x
MCU:
rm237__06.02.mcusw
Nie wiem co to mogą być reszta plików:
rm237__06.02.image_p
rm237__06.02.image_p_blue
rm237__06.02.image_p_graphite
rm237__06.02.image_p_pink
rm237__06.02.image_p_white
itd.
rm237__06.02.image_*
wnioskując po słowie mogą być to jakieś obrazki - albo obraz (nie chodzi tu zdjęcie) czegoś
mozna zauważyc ze występują pozniej też takie same literki co przy ppm.
Pytanie: Kolory na na końcu nazwy oznaczają kolory obudowy telefonu ??
Pozostałe pliki to sygnatury - pewnie to do certyfikatów i jakieś pliki ini (konfiguracyjne)
INI:
adcreadings.ini - tu jakieś wartości fizyczne: napięcie baterii, temperatura
audiocontrol.ini - jak sama nazwa wskazuje dotyczy dzwięku
bluetooth.ini - jak sama nazwa wskazuje dotyczy Bluetooth
camera_control.ini - jak sama nawa wskazuje dotyczy aparatu/kamery
rm_237displaytest.ini - wydaje mi się, że tutaj są ustawione parametry wyświetlacza LCD
Tu jeszcze coś nie wiem co to:
rm_237.ppu
Przejrzałem troche tak tylko z grubsza tego Nios'a i związane jest z tym kilka ciekawych projektów np.: http://nioswiki.jot.com/%C2%B5Clinux. Mysle warto byłoby dowiedzieć się co za płyte głowną i procesor posiada ten telefon. Napisane jest na stronie w linku który podałem coś takiego w dziale: Before start:
The application executable format on uClinux is not ELF, but (compressed) binary flat format, FLT. - być może te pliki własnie są w formacie FLT.(nie wiem póki co to jest i czym się różni od ELF)
Znalazłem na necie: http://rapidshare.com/files/75576550/Se ... _3110c.zip - troche to waży jestem ciekawy co w tym jest... niestety nie mam konta na rapidshare, a czekać muszę z godzinę

Poszperałem troche po googlach i wyczytałem pare ciekawych rzeczy, procesor w naszej nokii to prawdopodobnie ARM-strong czy cos w stym stylu
![;]](http://nokiahacking.pl/images/smilies/yeah2.gif)
~amras666:
2008-05-04, 21:06
Doszukałem się więcej informacji - narzędzie elf2flash (które może być nam potrzebne do porównywania plików testowych przed i po parsowaniu tym narzędziem wchodzi w skład pakietu Altera Quartus II Design Suite, do pobrania między innymi stąd:
- Code: Select all
Please Login or Register, to see this Content
i zajmującego na oko kilka ładnych giga. Jestem w trakcie pobierania.
Kolejność warstw przez które należałoby się przebić to:
Elf2Flash ( AlgorytmBB5_w_ELF (Nieszyfrowany_Elf) )
Na razie zaczynamy od pierwszej warstwy. Dowcipna będzie dopiero ta druga ^^ Proponuję robić to metodą quasi-bruteforce - wiemy że w PPM będą konkretne stringi w j. angielskim, wystarczy tak dobrać algorytm, żeby je wyciągnąć

~uggp:
2008-06-16, 19:46
Witam (mój pierwszy post)
Przypadkowo trafiłem na to forum i widzę ciekawy temat. A że mam 3110c i doświadczenie z NIOS'em (i produktami Altery) to kilka uwag:
1. procesor NIOS jest soft-procesorem dla kostek FPGA. FPGA to taki układ co ma w sobie całą kupę elementów logicznych, które możemy dowolnie łączyć. To tak jakby ktoś wam wysypał worek układów UCY i dał narzędzia co same będą je łączyć. Mając taki worek bramek i przerzutników można sobie zrobić dowolny układ cyfrowy. Skoro dowolny to i można procesor zbudować. Właśnie NIOS jest takim procesorem, opisanym przez program (taki opis połączeń)
Wniosek: zerowe szanse że nokia ma procek NIOS ale:
2. Kostki altery używa się w systemach embeded (SoPC). Czyli w jednej kostce mamy cały system procesorowy (procek, pamięci, itp). I żeby było miło do budowy systemu (softu), używa się Eclipse (http://www.eclipse.org/) zawarte w NIOS IDE
Wniosek: nokia również kompilowana jest takimi kompilatorami, dalej:
3. Efektem kompilacji jest plik ELF. Zerknijcie w pliki dowolnego linuksa (też elfy

4. Elf2Flash jest bardzo sprytny i cholernie elestyczny gdy jest częścią większego systemu. Np: w alterze można sobie wytworzyć pamięci rom, ram, podlutować inne pamięci zewnętrzne np flash i kompilator tak zrobi kod, że dowolnie można korzystać z tych pamięci. elf2flash zrobi nam taki obraz flasha, że doda nam bootloader który odpowiednio zainicjuje wszystkie pamięci dodając sprytny bootloader.
4. Bootloader może kopiować wprost lub ROZPAKOWYWAĆ (u altery to jest zip) obrazy. No i teraz, jeśli obraz jest spakowany to z hexa nic nie widać. Spotkałem się w innych systemach embeded, że producenci ucinali nagłówki żeby nie dojść jakim pakerem było pakowane. Po doklejeniu nagłówka zwykle jeszcze plik był szyfrowany. Ale wiadomo jak się zna pakera to "brutal" i hasło pada.
5. Każdy kod da się emulować. Najpierw trzeba zemulować boota żeby dowiedzieć się co się dzieje przy starcie.
To takie moje spostrzeżenia, może się komuś przydadzą.
Jeszcze taka mała uwaga, presja czasu oraz ogrom oprogramowania powoduje, że producenci idą na łatwiznę i często nie zabezpieczają softu tak jak trzeba (zresztą zawsze mogą podkompilować coś nowego i już się jest do tyłu), a to oznacza że wszystko da sie podejść.
~amras666:
2008-06-16, 19:55
uggp - podpowiedz w jaki sposób dokonać emulacji bootloadera. Jestem niemal na 100% przekonany że w samym nagłówku znajduje się dość prosty (relatywnie) algorytm odszyfrowujący, podobnie jak miało to miejsce w DCT4 (deblockify i decode w CrypterX'ie).
Idealną sytuacją byłoby zemulować procesor Nokii tak, aby na wyjściu otrzymać to co bootloader sieje do pamięci telefonu, wprawdzie do zaszyfrowania tego spowrotem daleka droga, ale to zawsze nieinwazyjne wyciągnięcie odszyfrowanego flasha.
Da się to zrobić?
Swojego czasu natknąłem się na pliki ERASE UNIRAP które powodowały zapis całej pamięci telefonu zerami, ale samo gapienie się na heksy niewiele mi pomogło a nie mam pojęcia w czym to uruchomić. Procesor z jakim mamy do czynienia to najprawdopodobniej ARM-11 ale nie wiem czy to ten sam układ przetwarza bootloader i odpowiada za pracę telefonu, czy to różne jednostki.
~uggp:
2008-06-16, 20:10
Od razu zaznaczam że o nokii mam zerowe pojęcie, ale że wszystkie embeded są takie same to:
1. Tak, bootloader ma zwykle banalny algorytm, jutro zerknę jaki ma NIOS
2. Ściągam teraz eclipsa tego oficjalnego i zobaczę jak to jest, ten alterowy ma debuger on-line (debugujesz na sprzęcie od razu)
3. Debuger IDA Pro ma chyba wszystkie procki, trzeba sprawdzić jaki ma Nokia (może mieć procek na bazie jakiegoś innego znanego wtedy lecimy tym znanym)
4. Jak będzie assembler to potem już kod w C który zrobi rozpakowywanie.
Zwykle bootloader jest bardzo prosty, potem mogą ruszać algorytmy mocniejsze. Ale ten pierwszy to zwykle działa tak, że mamy tablicę i tam są adresy skąd i dokąd skopiować (rozpakować)
edit:
nie potrzeba szyfrować ponownie, podmieniasz loadera a do flesha dane nieszyfrowane i zwykłe kopiowanie
~amras666:
2008-06-16, 20:40
Przy wyborze procesora ARMB (arm11) następujący wynik pierwsze XXX bajtów:
ROM:00000000 B2 00 00 00 A1 00 00 00 0E E6 04 47 CB D1 AE C2 -...í...ŠGTĐ«T
ROM:00000010 04 42 42 35 00 C3 0E 42 42 35 20 41 4C 47 4F 52 BB5.+BB5 ALGOR
ROM:00000020 49 54 48 4D 00 D4 11 08 01 03 19 21 01 00 11 01 ITHM.ď!.
ROM:00000030 01 0C 19 21 01 00 11 01 CD 08 00 31 97 50 00 00 !.=.1ŚP..
ROM:00000040 00 00 CE 08 00 63 2E A0 00 00 00 00 CF 08 00 63 ..+.c.á....¤.c
ROM:00000050 2E A0 00 00 00 00 D1 08 00 01 7E D0 00 00 00 00 .á....Đ.~đ....
ROM:00000060 C9 02 09 00 F2 01 01 F0 01 02 C8 0E 01 12 0B 00 - .˛L.
ROM:00000070 00 00 01 08 00 00 01 51 FF FF F4 22 30 36 2E 30 ....Q ˘"06.0
ROM:00000080 32 2E 30 30 32 0A 20 20 20 20 45 6C 66 32 66 6C 2.002 Elf2fl
ROM:00000090 61 73 68 20 30 32 2E 33 33 2E 30 30 30 00 F7 06 ash 02.33.000.¸
ROM:000000A0 00 00 01 10 00 FF 54 01 17 0E 00 00 00 08 D9 01 ... T...-
ROM:000000B0 00 00 40 00 01 08 00 00 AE 00 4D 50 50 56 20 30 ..@...«.MPPV 0
ASM:
ROM:00000000 AREA ROM, CODE, READWRITE, ALIGN=0
ROM:00000000 CODE32
ROM:00000000 ANDLT R0, R0, #0
ROM:00000004 TSTGE R0, R0
ROM:00000008 CDPEQ p4, 0xE, c0,c6,c7, 2
ROM:0000000C BLGT 0xFF46BB1C
ROM:00000010 STREQB R4, [R2],#-0x235
ROM:00000014 SBCEQ R0, R3, R2,ASR#28
ROM:00000018 EORMIS R2, R5, #0x41
ROM:0000001C MCRRMI p15, 5, R4,R7,c2
ROM:00000020 LDMMIDB R4, {R0,R2,R3,R6,R11,LR}^
ROM:00000024 SBCEQS R1, R4, R8,LSL#2
ROM:00000028 TSTEQ R3, R1,LSR#18
ROM:0000002C TSTEQ R0, R1,LSL#2
ROM:00000030 TSTEQ R12, R1,LSR#18
ROM:00000034 TSTEQ R0, R1,LSL#2
ROM:00000038 STCGT p0, c0, [R8,#-0xC4]
ROM:0000003C LDRLSB R0, [R0,-R0]
ROM:00000040 ANDEQ R12, R0, R8,LSL#28
ROM:00000044 RSBEQ R2, R3, R0,LSR#29
ROM:00000048 ANDEQ R0, R0, R0
ROM:0000004C SVCGT unk_80063
ROM:00000050 CDPCS p0, 0xA, c0,c0,c0
ROM:00000054 ANDEQ SP, R0, R8,LSL#2
ROM:00000058 LDREQD R7, [R1],-R0
ROM:0000005C ANDEQ R0, R0, R0
ROM:00000060 STMGTDB R2, {R8,R11}
ROM:00000064 ANDNV R0, R1, #0x3C
ROM:00000068 TSTEQ R2, LR,LSL#16
ROM:0000006C TSTEQ R2, R0,LSL#22
ROM:00000070 ANDEQ R0, R0, R8,LSL#2
ROM:00000074 ANDEQ R0, R0, R1,ASR R1
ROM:00000078 SVCNV 0xFFF422
ROM:0000007C EORCCS R2, R6, R0,LSR LR
ROM:00000080 EORCC R3, LR, #0x30
ROM:00000084 ANDCC R2, R10, #0x20
ROM:00000088 EORCS R4, R0, R12,ROR#10
ROM:0000008C LDRVST R6, [R2],-R12,ROR#12
ROM:00000090 CMNVS R3, R0,LSR#16
ROM:00000094 EORCCS R2, R2, R3,LSR LR
ROM:00000098 TEQCC LR, #0x30
ROM:0000009C ANDCC PC, R0, R6,LSL#14
ROM:000000A0 ANDEQ R0, R0, R0,LSL R1
ROM:000000A4 RSCEQS R5, PC, R1,LSL#8
ROM:000000A8 STRNE R0, [LR,-R0]
ROM:000000AC ANDEQ SP, R8, R1,LSL#18
ROM:000000B0 ANDEQ R4, R0, R0
ROM:000000B4 TSTEQ R8, R0
ROM:000000B8 MCRGE p13, 0, R4,c0,c0, 2
ROM:000000BC SUBPLS R2, R6, R0,LSR R0
Schlebiałem sobie że znam podstawy ASMA, ale komendy ARM są dla mnie niezrozumiałe.
Pytania Dwa:
1. Czy to ten procesor?
2. Kto to rozgryzie, bo ja na to za słaby.
~uggp:
2008-06-17, 15:13
nokia ma arm11? myślałem że 9
zwykle flashe nie jadą od adresu 0x00000000
przeważnie gdzieś na końcu 0xffxxxxxx, boot zwykle ma kod nie relokowalny i jak się źle ustali adres w pamięci to skoki lecą na manowce. trzeba dorwać datasheet do arma i zobaczyć jak oni mają w przykładowych aplikacjach.
~Ziomal_Marcin:
2008-06-21, 15:01
Wiemy już dokładnie jaki procesor ma N3110c. Jest to RAPGSM 1.1, pochodna ARM11.
Zdjęcia procesora w paczce:
- Code: Select all
Please Login or Register, to see this Content
~pawelooss:
2008-12-16, 20:42

