Jetzt kostenlos registrieren: Mitglieder surfen ohne Werbung!

[Anleitung] Backup/"Readback" per SP Flash Tool

  • 69 Antworten
  • Neuester Beitrag
Diskutiere [Anleitung] Backup/"Readback" per SP Flash Tool im Anleitungen für MediaTek-Geräte im Bereich Weitere Hersteller allgemein.
Miss Montage

Miss Montage

Ehrenmitglied
Erstellen einer Sicherung mit dem SP Flash Tool

Bevor Ihr an Eurem Gerät grundlegende Veränderungen vornehmt, ist es immer empfehlenswert, eine Sicherung Eures Systems zu erstellen. Leider ist das für neuere MediaTek Chipsätze mit dem MTK Droid Tool nicht mehr möglich, und Linux-Nutzer hatten seit jeher nicht diese Möglichkeit.

Ganz besonders wichtig ist ein solches Backup, wenn Euch keine Stock ROM zur Verfügung steht.

Es gibt aber auch mit dem SP Flash Tool eine Möglichkeit, das komplette System zu sichern. Allerdings erfordert diese Methode etwas Geduld...

Zur Sicherung des Preloaders lest bitte die Beiträge #2 von @Tzul und #42 von @Ora! Den korrekten Preloader braucht das Gerät für die Kommunikation mit dem Flash Tool: ohne ihn bekommt ihr keine Firmware (mehr) aufs Handy...

Vorbereitung:

1. SP Flash Tool (new): SP Flash Tool - Софт МТК - Софт - Файлы - China Phone
2. signierte USB-VCOM Treiber: MediaTek SP Drivers v2.0 signed.zip | Tool by Tzul for Generic Device/Other (danke @Tzul!)
3. von Deinem Handy die Datei /proc/partinfo und/oder eine Scatter-Datei, von der Du überzeugt bist, dass sie mit der aktuellen Partitionstabelle auf Deinem Handy übereinstimmt.
4. Das Handy sollte mindestens zu 50 Prozent geladen sein.
5. Auf Windows installierst Du zuerst die Treiber: [Anleitung] SP Flash Tool einrichten und anwenden unter Windows 8/8.1/10

Das Flash Tool entpackst Du (Passwort derzeit: mtk2000v3) und startest Flash_Tool.exe
Für Linux findest Du hier eine Anleitung zur Installation des Flash Tools:
[Anleitung]SP_Flash_Tool_Linux (für MediaTek-SoC) einrichten

Die Sicherung („Readback“) mithilfe einer Scatter-Datei

Es gibt die Möglichkeit, das komplette System in einem Block zu sichern und mittels MTK DroidTools in die einzelnen Dateien aufzuspalten, siehe hier: [HowTo] MTK Droidtool - Features & Tipps (Backup ohne Root, Root, IMEI ect.) Tipp 5

Das funktioniert leider nicht mit neueren MTK-Chipsätzen (und auch nicht unter Linux).
Danke @Tzul für folgenden Tipp!
Auch das SP Flash Tool selbst bietet eine Möglichkeit: Im SP Flash Tool-Ordner öffnest Du die Datei option.ini. Dort änderst Du den Wert "false" in der Zeile "ShowByScatter" auf "true"

1. Starte das SP Flash Tool
2. Unter dem Reiter Download gehe zu "Scatter Loading" und navigiere zum Scatter File. Falls das noch nicht vorhanden ist, kannst Du "meine" Vorlage benutzen und anhand der /proc/partinfo von Deinem Gerät die Startadressen und Längen der einzelnen Blocks überarbeiten. Außerdem musst Du die Bezeichnung Deines SoC bearbeiten.
3. Unter dem Reiter Readback werden automatisch alle Partitionen aufgelistet. Durch einen Doppelklick auf die Zeile kannst Du einen Speicherort definieren und einen Namen für das zu erstellende Image vergeben (voreingestellt ist ROM_0, ROM_1, ROM_2 usw.). Das lässt sich aber auch nachträglich bei konkretem Bedarf mit einem Dateimanager erledigen.
Mithilfe der Haken am Anfang jeder Zeile kannst Du auswählen, welche Partitionen Du sicherst.
Anhand der Scatter Datei lässt sich prüfen, welche Bereiche mit "is_download: false" gekennzeichnet sind (geschützte Bereiche). Diese können durch das Flashen einer Stock ROM nicht gerettet werden. Wenn Du diese Bereiche sicherst und später aus irgendeinem Grund wiederherstellen musst, brauchst Du (im Falle des Falles, nicht jetzt!) die Zeile im Scatter-File nur auf "is_download:true" zu ändern und kannst die Datei zurück aufs Handy flashen.
Es ist auf jeden Fall empfehlenswert, den NVRAM zu sichern, weil dieser Sektor (mit IMEI und MAC-Adresse) schon vielen Nutzern beim Flashen einer ROM abhanden kam.
4. Wenn du "Save" anklickst, erscheint ein Fenster:



Diese Werte kannst Du eingestellt lassen, sie werden aus dem Scatter File richtig übernommen.
Bestätige mit OK.
Falls die Partition "Userdata" nicht aufgelistet ist, kannst Du sie manuell hinzufügen. Die Startadresse und -Länge findest Du im Scatter File.
5. Schalte Dein Handy aus. Klicke im Flash Tool auf "Read Back" und schließe das Handy an. Zuerst füllt sich ein roter, dann ein blauer Balken. Wenn Du cache und userdata nicht sicherst, dauert der Vorgang 8-10 Minuten, andernfalls deutlich länger.
Wenn ein Kreis mit einem Haken in der Mitte erscheint, ist die Sicherung abgeschlossen.




Sicherung mithilfe von /proc/partinfo (Linux)

Starte das SP Flash Tool und lade ein beliebiges Scatter File. Die früher erwähnte Datei option.ini lässt Du in diesem Fall unangetastet.
Gehe zum Reiter "Readback"
Dort wird automatisch ein Eintrag angelegt, den Ihr mittels Doppelklick bearbeiten könnt.

a) Wenn Du ein komplettes Image erstellen möchtest, definiere den Namen und Speicherort und klicke "Save" an. Im zweiten Dialogfenster gibst Du die Startadresse von "pgpt" aus der "partinfo"-Datei an, die Länge kannst Du mit einem Hex-Rechner ermitteln: Dazu addierst Du die Startadresse von "Userdata" plus deren Länge ("Size").

b) Wenn Du das gesamte System ohne Cache und Nutzerdaten sichern möchtest, gibst Du als Startadresse die von "pgpt" aus der "partinfo"-Datei an, als Länge die Startadresse von "cache"

Das Linux-Shell-Skript zum Zerlegen habe ich von syserr und AlexZap aus diesem XDA-Thread: [GUIDE][UTIL][MT65xx] Create Scatter File and Dump Full ROM. Das erste Skript funktioniert mit meinem Scatter-File nicht, aber AlexZap nutzt die proc/partinfo-Datei.
Kopiere die Datei "partinfo" an einen Ort Deiner Wahl und benenne sie um in partinfo.txt
Mache das Shell-Skript ausführbar:
Code:
chmod+x dice.sh
Aus dem Ordner, wo die Datei dice.sh gespeichert ist, gib dann folgenden Terminal-Befehl ein:
Code:
./dice.sh pfad/zu/partinfo.txt pfad/zu/ROM_0
Du findest die einzelnen Sektoren nun ohne Datei-Endungen (die müssten zum Flashen ergänzt werden) in einem Ordner namens "raw.partitions". Es gibt wohl auch Mittel und Wege, dieses Script unter Windows auszuführen (win-bash - bash port for Windows)


c) Wenn Du nur einzelne Partitionen sichern willst, definiere den Namen und Speicherort und klicke "Save" an.
Im zweiten Dialogfenster gibst Du Startadresse und -länge der jeweiligen Partition an. Diese Angaben findest Du unter "Start" und "Size" in der Datei /proc/partinfo.
Bestätige mit "OK" und füge bei Bedarf mit "Add" einen weiteren zu sichernden Sektor hinzu.


Wiederherstellung

Das Scatter File kopierst Du in den Ordner mit dem Backup. Du startest das Flash Tool, wählst den Reiter "Download", unter "Scatter-Loading" navigierst Du zum Scatter-File im Backup-Ordner.

Wähle die Option „Download only“. Das Flash Tool zieht alle Dateien heran, die im Scatter File mit "is_download: true" markiert sind. Du wählst die Bereiche, die Du wiederherstellen möchtest, schaltest das Handy aus, klickst auf "Download" und schließt das Handy an. Zuerst füllt sich ein roter, dann ein gelber Balken. Je nach Partitionsgröße sollte die Wiederherstellung in höchstens 10 Minuten erfolgt sein. Du erhältst eine Erfolgsmeldung, kannst das Flash Tool schließen und das Handy vom Rechner trennen.
 

Anhänge

Zuletzt bearbeitet:
T

Tzul

Stammgast
Alternative SPFT Downloadquelle.
Signierter USB VCOM Treiber.

Miss Montage schrieb:
Es gibt aber auch mit dem SP Flash Tool eine Möglichkeit, das komplette System zu sichern. Allerdings erfordert diese Methode etwas Geduld und etliche Eingaben...
Die etlichen Eingaben kann man sich ab SPFT v5.1548 größtenteils sparen:
man öffne die Datei "option.ini" im Ordner des SPFT, finde den Abschnitt "[ReadBack]" und ändere "ShowByScatter=false" zu "ShowByScatter=true".
Dadurch werden auf der Readback-Seite alle Partitionen automatisch gelistet!
Siehe dazu auch hier.

Allerdings sind die Dateinamen standardmäßig auf "ROM_0", "ROM_1" usw. voreingestellt, d.h. man muss immer noch jeden Eintrag doppelklicken, um den Dateinamen zu setzen. Oder man benennt die Dateien später außerhalb des SPFT um.
Außerdem gilt es zu beachten, dass die "Userdata"-Partition eventuell nicht automatisch gelistet wird, um sie muss man sich nach wie vor manuell kümmern, wenn man sie sichern möchte.

Miss Montage schrieb:
Leider ist mir noch keine Möglichkeit bekannt, auch den Preloader zu sichern!
Den Preloader kann man leicht sichern. Einfach ein Readback der Region "EMMC_BOOT_1" machen und mit einem Hexeditor etwas nachbearbeiten, um den Preloader zu isolieren. Das Preloader-Readback, das man durch oben genannte ShowByScatter-Einstellung bekommt, ist genau das: ein Readback der Region, nicht des Preloaders allein.
EMMC_BOOT_1 beginnt mit einem 2048 Byte (2 KiB) großen Header, dem unmittelbar der Preloader folgt. Also die ersten 2048 (=800 hex) Bytes markieren und ausschneiden/entfernen. Der Preloader beginnt typischerweise mit "MMM" und hat "FILE_INFO" an Offset 8. Dann kann man an Offset 32 (=20 hex) die Dateigröße des Preloaders ablesen.
Dabei ist zu beachten, dass die Bytereihenfolge "Little Endian" ist, d.h. von rechts nach links gelesen werden muss. Stehen an Offset 32 also z.B. die Bytes "68 20 02 00", dann ist die Dateigröße 00022068 hex.
Kennt man die Dateigröße, kann man zu diesem Offset gehen (HxD: Strg+G), um die restlichen Bytes zu löschen, die dem Preloader folgen aber nicht mehr zu ihm gehören.
Siehe Bilder im Anhang für ein Beispiel.
 

Anhänge

Zuletzt bearbeitet:
Ora

Ora

Ehrenmitglied
Ein kleiner Hinweis noch zum Rücklesen mittels der Option "ShowByScatter=true"...
Die userdata Partition bleibt dabei auf der Strecke...
Einfach mit der Hand nachtragen...
z,B. so...
___SPFT.png
 
T

Tzul

Stammgast
@Ora Erstens habe ich das oben erwähnt, zweitens betrifft das nicht jedes Gerät (die Userdata-Partition wird bei meinen alten MT6582 Geräten sehr wohl gelistet).
 
Ora

Ora

Ehrenmitglied
Dann habe ich es wohl überlesen...
@Tzul :
-- das Bild 1 deines Anhangls ist der Dump eines "originalen preloaders" ?
-- wie gesichert sind die im offset 0x20 stehenden Infos zur Länge des preloaders?

Umkehrschluss:
Man könnte zunächst ein Readback von EMMC_BOOT_1 beginnend von 0 mit einer Länge von 2048 Byte lesen und danach den Preloader ohne Hexeditor Bearbeitung beginnend von 0x800 mit der zurück gelesenen Blocklänge generieren?

Irgendwie ist mir in Erinnerung, dass die Adress- und Blocklängeneingabe im SP FT nicht immer ganz wahlfrei war...
 
T

Tzul

Stammgast
@Ora Ja, die Screenshots zeigen einen "originalen" Preloader. Ich würde sagen, es ist 99% sicher, dass die Dateigröße immer an Offset 0x20 steht. Ich habe jedenfalls noch keinen Preloader gesehen, bei dem es nicht so war.
Jedes "MMM" im Dateikopf leitet eine neue Datenstruktur ein; theoretisch wäre es möglich, dass die "FILE_INFO" Struktur nicht an erster Stelle steht, dann wäre die Dateigröße auch nicht an Offset 0x20. Aber soweit ich weiß, muss die "FILE_INFO" Struktur am Anfang stehen. Man könnte also auch sagen, die Dateigröße des Preloaders steht 24 Bytes nach dem Offset von "FILE_INFO".

Ja, man kann ein Readback von EMMC_BOOT_1 ab Offset 2048 machen, um den EMMC-Header vor dem Preloader zu überspringen.
Flash-Speicher kann eigentlich nur in "Seiten" gelesen und geschrieben werden, und nur in "Blöcken" gelöscht werden (löschen ist nötig, bevor man bereits geschriebene Daten ändern/überschreiben kann). Die Block-Größe steht in der Scatterdatei, z.B. "block_size: 0x20000" = 128 KiB, mit beispielsweise 64 Seiten je 2 KiB. Aber normalerweise muss man sich darum keine Gedanken machen, das regelt die Software automatisch im Hintergrund.
 
Miss Montage

Miss Montage

Ehrenmitglied
Ich habe den Preloader jetzt auch erfolgreich sichern können, allerdings erst beim dritten Versuch (ich nutze Hex Editoren extrem selten). Aber es stimmt, auch bei mir befindet sich die Dateigröße an Offset 0x20.
Und mit der option.ini ->"ShowByScatter=true" wird auch meine "Userdata"-Partition gesichert. Tausend Dank für diese enorme Vereinfachung!
 
Zelda1980

Zelda1980

Stammgast
Hallo,

so habe "ShowByScatter=true" gesetzt und in der Scatterdatei " "nvram" auf is_download: true. Die Scatter Datei habe ich aus dem STOCKROM.

Jetzt sieht es unter SPFT so aus





, soweit richtig ? Wollte dann gleich ALLES sichern.
 
Miss Montage

Miss Montage

Ehrenmitglied
Ja, das sieht gut aus, nur Deine "Userdata"-Partition fehlt. Die kannst Du manuell hinzufügen ("Add"), die Startadresse und -Länge findest Du im Scatterfile.
Den Is_Download-Wert bei NVRAM brauchst Du nur zu ändern, falls Du Deine IMEI verlieren solltest und Dein Backup zurück spielen willst.
 
Zelda1980

Zelda1980

Stammgast
Miss Montage schrieb:
Ja, das sieht gut aus, nur Deine "Userdata"-Partition fehlt. Die kannst Du manuell hinzufügen ("Add"), die Startadresse und -Länge findest Du im Scatterfile.


, so ?


Miss Montage schrieb:
Den Is_Download-Wert bei NVRAM brauchst Du nur zu ändern, falls Du Deine IMEI verlieren solltest und Dein Backup zurück spielen willst.
Das will man eigentlich nicht, oder ? Also wieder auf "false" stellen ?
 
Zuletzt bearbeitet:
Miss Montage

Miss Montage

Ehrenmitglied
Zelda1980 schrieb:
Miss Montage schrieb:
Ja, das sieht gut aus, nur Deine "Userdata"-Partition fehlt. Die kannst Du manuell hinzufügen ("Add"), die Startadresse und -Länge findest Du im Scatterfile.
Schon versucht, aber wenn ich aus der Scatter Datei kopiere dann ist diese zu kurz ?
Du meinst, sie hat zu wenige Stellen? Die werden vom Flashtool automatisch durch führende Nullen ergänzt, sollte also kein Problem sein.

Miss Montage schrieb:
Den Is_Download-Wert bei NVRAM brauchst Du nur zu ändern, falls Du Deine IMEI verlieren solltest und Dein Backup zurück spielen willst.
Das will man eigentlich nicht, oder ? Also wieder auf "false" stellen ?
Genau ;-)
-- Dieser Beitrag wurde automatisch mit dem folgenden Beitrag zusammengeführt --
Ich kann auf dem letzten Screenshot leider nichts erkennen, die Auflösung ist meist besser, wenn Du das Bild direkt im Post hochlädst.
 
Zelda1980

Zelda1980

Stammgast


, so sieht gut aus :). Danke dir
 
Ora

Ora

Ehrenmitglied
Lade deine Bilder direkt hoch! Ich habe keine Lust auf den Müll, der von dem Filer angezeigt wird!
@Miss Montage : tut mal etwas dagegen:(
 
Zelda1980

Zelda1980

Stammgast
Sorry, vergessen das es hier geht.
 
Zelda1980

Zelda1980

Stammgast
Habe jetzt 23 Dateien mit dem Anfang "ROM", kann die einfach ausschneiden und einem Ordner verschieben ? Und ich die unbearbeitete Scatter File in den Backup Ordner schieben ?
 
Miss Montage

Miss Montage

Ehrenmitglied
Ja, Du kannst die Bestandteile in einen Backup-Ordner Deiner Wahl verschieben und das unbearbeitete Scatter-File übernehmen. Wenn Du magst, kannst Du ROM_0 etc. umbenennen. Das ist aber kein Muss; das Flash Tool kann sie dann nur nicht automatisch anhand des Scatter Files zuordnen.
 
Ora

Ora

Ehrenmitglied
1. Kopieren das Original Scatterfile in ein Verzeichnis
2. bearbeite den Dump des Preloader nach
3. passe die Filenamen der Readbacks gemäß den Einträgen im scatterfile für alle, die im scattefile mit is_download: true gekennzeinet sind an
4. Prüfe ob auch das usrdata image vorhanden ist
Und alles zeitnah! Dann bist auf der sichern Seite :)
 
Zelda1980

Zelda1980

Stammgast
Ora schrieb:
2. bearbeite den Dump des Preloader nach
Mmh, weiss nicht was gemeint ist :crying:

Ora schrieb:
3. passe die Filenamen der Readbacks gemäß den Einträgen im scatterfile für alle, die im scattefile mit is_download: true gekennzeinet sind an

Also beispielsweise

partition_index: SYS22
partition_name: cache
file_name: cache.img
is_download: true

, bei mir ROM_22 in cache.img umbenennen
 
Miss Montage

Miss Montage

Ehrenmitglied
Welches Gerät hast Du genau? Ein Zopo Hero 1? Dafür habe ich bei needrom eine "offizielle" ROM gefunden, die auch den Preloader enthalten sollte (nur zum Reinschauen mag ich die nicht herunterladen): ROM Zopo HERO 1 | [Official] add the 01/09/2016 on Needrom
Du kannst Dir natürlich trotzdem die Mühe machen, den Preloader aus dem Readback "heraus zu schälen". Wie, hat @Tzul in Beitrag #2 geschildert. Notwendig ist es nur bei exotischen Geräten, für die man die ROM samt Preloader nicht ohne weiteres bekommt.
Das mit dem Umbenennen hast Du richtig erkannt, Du kannst Dir aber auch Deinen Screenshot aus Beitrag #12 mit in den Backupordner stecken und die Dateipfade vor dem Flashen manuell zuordnen.
 
Ora

Ora

Ehrenmitglied
Zelda1980 schrieb:
cache.img umbenennen
Ja, richtig.
Zelda1980 schrieb:
, weiss nicht was gemeint is
Hat @Tzul gut beschrieben.
@Miss Montage wenn er sich auf ein Stock ROM stützen kann, dann braucht er den gesamten Aufwand eigentlich überhaupt nicht:(