ARCHIV
NokiaPort.de
ARCHIV/2002 - NokiaPort.de/RE

[ExiTuS], NokiaPort.deNokia DCT-3 Flash Reverse Engineering

Hier findest du Informationen über das Flash-File. Erklärung von einzelnen Bytes, Strings, usw..


Einführung MCU

Hier findest du einige nützliche Infos zu dem, was sich im MCU-Bereich eines Flash-File befindet! In diesem Beispiel erkläre ich die Infos an einem Flash-File eines Nokia 3330 v4.16. Hatte es grade zur Hand ;-) Wie immer, alle Beispiele auf den Snapshots von HIEW(Hackers View) Abb. Anfang des MCU-Teils im Flash-File. 20 Eine Art Anfangsbyte für das Flash-File (Jedes File fängt mit dem Byte "20" an). 0F (?) (Bei jedem Modell ist das dritte byte "0F(hex)".) FD D4 MCU Checksumme. (Informationen über Checksummen gibt es hier). 20 00 24 Offset-Adresse, von wo an die Checksummen berechnet wird. Ab dieser Stelle werden immer 2 Bytes zusammen addiert. Die Checksumme sind die letzen beiden Bytes des Ergebnisses. Beispiel: 20 00 + 24 32 + FF FF + ... = AB CD FD D4 Ich habe keine Ahnung, wofür die restlichen Bytes am Anfang des Flashs stehen!

Ende des Flash-Files

Abb. Ende des Flash-Files. MCU Checksumme: Am Ende des Flashs befinden sich die Checksummen von MCU und PPM. Die letzten 6 Bytes sind Checksummen: ... MM MM PP PP PP MM MM = MCU-Checksumme PP PP PP = PPM Checksumme

Byte-Strings für die Zuordnung der Menü/Symbol-Grafiken

Hier findest du Infos über die einzelnen Strings, die in der Menüführung auf die einzelnen Menügrafiken und Symbole verweisen! Außerdem über die Größe, welche manipulierbar ist, um größere Grafiken anzeigen zu lassen! Abb. MCU-Bereich mit Verweisungen auf Symbole/Grafiken. Hier siehst du nun den Ausschnitt aus dem MCU-Bereich, welche der Zuweisung der einzelnen Menügrafiken zu den entsprechenden Menüs gilt! In diesem Beispiel habe ich den String von der Menügrafik "Verzeichnis" genommen. Die Adresse dieser Strings spielt keine Rolle, da sie in jedem Handy und jedem Modell verschieden ist! Finden kann man diese Stelle in dem man nach der Offset-Adresse der entsprechenden Menügrafik oder des Symbols als HEX-Wert sucht sucht, wie z.B. "2E 6F 44" (Offset-Adresse im 3310 v5.13, Grafik: Verzeichnis). Für jede Menügrafik und jedes Symbol (ich glaube nicht die kleinen Symbole) findet man hier die entsprechende Zuweisung, und den entsprechenden String. Jeder String ist für jede Grafik nach dem selben Prinzip aufgebaut und hat die... Länge: 12 Bytes. Hier: "2E 6F 44 00 2E 47 44 40 0E 00 00 00" Der String ist folgendermaßen aufgebaut: 00 2E 6F 44 Die eigentlich Offset-Adresse der Menügrafik. 00 2E 47 44 Offset-Adresse zu einer bestimmten Funktion (?) 40 (64dez) Die Größe der Grafik (Breite). In diesem Beispiel ist die Menügrafik (Verzeichnis) 64 Pixel breit. 0E (14dez) Die Größe der Grafik (Höhe). In diesem Beispiel ist die Menügrafik (Verzeichnis) 14 Pixel hoch. 00 00 (Trennzeichen(?)). Diese drei 0-Bytes stehen in jedem String. Ob diese vor oder nach dem String kommen kann außer Acht gelassen werden! Mit diesem String kann man jedem Menü oder Aktionen eine andere Grafik oder anderes Symbol zuweisen. Als Beispiel kann man dem Menü "Mitteilungen" das Symbol der Tastensperre zuordnen ;-) Außerdem hat man die Möglichkeit, durch die Änderung der Bytes für die Größe, die Maße der jeweiligen Grafik zu manipulieren und kann z.B. größere Menügrafiken einbauen

Offset-Adressen für die Menüeinträge:

Abb. Offset-Adressen zu den Zuweisungen der Menüeinträge (hier: 5130 v5.71). 00 00 ... 00 00 (?) 00 29 57 04 Offset-Adresse (?). 00 DC (?) ... 00 00 ... 00 00 (?) 00 2A 79 7F Offset-Adresse zur Zuweisung der einzelnen Menüeinträge (Siehe weiter unten). hier: 02 81(hex) = 641(dez) = "Weiter" 00 DC (?) 00 00 ... 00 00 (?) 00 2A 7B 47 Offset-Adresse zur Zuweisung der einzelnen Menüeinträge (Siehe weiter unten). hier: 03 19(hex) = 793(dez) = "Menü" 00 DC (?)

Zuweisung der Menüeinträge

Abb. Anfang (oben) und Ende (unten) der Zuweisungen. Hier siehst du nun die Ausschnitte aus dem MCU-Bereich, welche der Zuweisung der einzelnen Menüeinträge gelten! Es ist ein langer String und beinhaltet so viele Einträge, wie es Menüeinträge in der Menüführung gibt. Dieser String fängt mit dem Bytes "04" an und endet mit "00". Jede Zuweisung wird durch ein "04" von einander getrennt! Die Aufzählung verläuft folgendermaßen: 00 00 - 00 01 - 00 02 - 00 03 - .. - 00 09 - 00 0A - 00 0B - 00 0C - 00 0D - 00 0E - 00 0F - 01 00 - 01 01 - 01 02 - 01 03 - ... - 01 09 - 01 0A - 01 0B - 01 0C - 01 0D - 01 0E - 01 0F - 02 00 - 02 01 - ... usw. 04 Ein Anfangsbyte des Strings. 00 00 0(dez) Zuweisung zum Text mit der ID 0. (hier: Dansk) 04 Ein Anfangsbyte des Strings. 00 01 1(dez) Zuweisung zum Text mit der ID 1. (hier: Deutsch) 04 Ein Anfangsbyte des Strings. 00 02 2(dez) Zuweisung zum Text mit der ID 2. (hier: English) 04 Ein Anfangsbyte des Strings. ... 01 52 338(dez) Zuweisung zum Text mit der ID 338. (hier: Freigabe) 04 Ein Anfangsbyte des Strings. 01 53 339(dez) Zuweisung zum Text mit der ID 339. (hier: Tastatur ist gesperrt) 04 Ein Anfangsbyte des Strings. 01 54 340(dez) Zuweisung zum Text mit der ID 340. (hier: Jetzt Taste * drücken) 04 Ein Anfangsbyte des Strings. ... 03 76 886(dez) Zuweisung zum Text mit der ID 886. 04 Ein Anfangsbyte des Strings. 03 77 887(dez) Zuweisung zum Text mit der ID 887. 00 0(dez) Trennzeichen(?) Wenn man mit dem Programm PPMManager den Text-Chunk des Flash-Files extrahiert, kann man es in einem Editor öffnen und die ID ablesen! So kann man sich sicher sein, welche ID zu welchem Text gehört!

©2002 [ExiTuS], NokiaPort.de