
Bootloader des ZTE Blade V40 Vita (P606F02 / Unisoc UMS9230 / UFS) über CVE-2022-38694 entsperren - Linux-Skripte, der FBE-Fix für Hänger nach dem Entsperren und die zwei Fallstricke, die niemand dokumentiert
Linux-Notizen und Skripte zum Entsperren mit
CVE-2022-38694. Durchgeführt auf meinem
EEA_P606F02 mit MyOS11.0.13_8045_EEA.
Zwei Dinge entscheiden, ob das funktioniert, und keines davon ist irgendwo dokumentiert:
SEND fdl2-dl.bin → connection closed). Nur VOL_UP + VOL_DOWN halten.
POWER einmal kurz drücken, falls du einen Reset brauchst.misc-Wipe-BCB
bewirkt nichts — dieser Bootloader ignoriert es. Stattdessen userdata + metadata über BROM löschen.| Modell | ZTE Blade V40 Vita — ZTE 8045 / EEA_P606F02 |
| SoC / Speicher | Unisoc UMS9230 / UFS |
| Paket | ums9230_universal_unlock_UFS. UFS fdl2-*.bin sind 934088 Bytes; die eMMC-Varianten sind ~1 MB. Falsche Loader können das Telefon löschen |
| OS / Slot | Android 11, MyOS11.0.13 · Slot _b |
git clone --recursive https://github.com/TomKing062/CVE-2022-38694_unlock_bootloader
cd CVE-2022-38694_unlock_bootloader
gcc chsize.c -o chsize
gcc gen_spl-unlock.c -o gen_spl-unlock
cd spreadtrum_flash && make # spd_dump
Lege chsize, gen_spl-unlock, spd_dump und die vier Dateien aus dem UFS-Paket
(fdl1-dl.bin, fdl2-dl.bin, fdl2-cboot.bin, misc-wipe.bin) in ein gemeinsames Arbeitsverzeichnis.
Die folgenden Skripte werden gegen dieses Verzeichnis ausgeführt.
Telefon aus → VOL_UP + VOL_DOWN gedrückt halten → USB anschließen → weiter gedrückt halten. Du willst USB 1782:4d00:
for d in /sys/bus/usb/devices/*/; do
[ "$(cat $d/idVendor 2>/dev/null)" = 1782 ] && echo "BROM: $(basename $d)"
done
19d2:135x ist der normale USB-Anschluss des Telefons, nicht BROM. Ein in einer Boot-Schleife hängendes Telefon ist in Ordnung — jeder Reset führt die BootROM erneut aus, die die Tasten beim Reset neu abtastet.
Schritt für Schritt, wobei vor jedem Schritt erneut BROM betreten wird. Halte die Lautstärketasten gedrückt, während es läuft.
cd /path/to/working-dir
sudo /path/to/repo/scripts/unlock.sh 1 # back up SPL + uboot_b, erase SPL (won't boot after this)
sudo /path/to/repo/scripts/unlock.sh 2 # prep images locally, phone not needed
sudo /path/to/repo/scripts/unlock.sh 3 # write fdl2-cboot.bin to uboot_b
sudo /path/to/repo/scripts/unlock.sh 4 # the unlock. ends in "connection closed" = success
sudo /path/to/repo/scripts/unlock.sh 5 # read miscdata @8192: 64 zeros = locked, string+2 hashes = unlocked
sudo /path/to/repo/scripts/unlock.sh 6 # restore uboot/SPL. never skip this
Schritt 4 endet mit EXEC FDL1 → Timeout → connection closed. Das ist der Unlock, der funktioniert, nicht fehlschlägt. Wenn Schritt 5 Nullen anzeigt, führe Schritt 4 erneut aus.
Schritt 3 hinterlässt das Telefon unfähig, Android zu booten (die Payload ist kein echter Bootloader) — Schritt 6 stellt dein Stock-uboot_bak.bin wieder her. Halte dazwischen nicht an.
FBE-Schlüssel in trustos sind an den Lock-Zustand gebunden, sodass /data niemals gemountet werden kann. Ein Wipe ist zwingend erforderlich:
sudo /path/to/repo/scripts/fix-post-unlock-hang.sh
Halte die Lautstärketasten gedrückt, es schaltet sich selbst erneut scharf, bis es BROM erfasst. Löscht userdata + metadata,
schreibt das BCB, setzt zurück. Beim dritten Versuch erfasst und dauerte unter einer Minute.
adb shell getprop ro.boot.flash.locked # 0
adb shell getprop ro.boot.verifiedbootstate # orange
adb shell getprop ro.boot.vbmeta.device_state # unlocked
fastboot getvar ist auf diesem Gerät nutzlos (liefert für alles leere Werte), suchen Sie also
dort nicht nach einer Bestätigung.
Dies ist ein VAB-Gerät ohne recovery-Partition. Fragen Sie immer den aktiven Slot ab, bevor
Sie flashen:
adb shell getprop ro.boot.slot_suffix
Das Stock-B06-Boot-Image muss vor dem Flashen mit seiner Magisk-Ausgabe neu signiert werden. Das getestete Windows-Verfahren für Stock-Flash, AVB-Signierung und Recovery ist in docs/windows-flash-root.md beschrieben. Brickst du ein Boot-Image, funktioniert BROM trotzdem noch. Partitionstabelle: docs/partition-table.md.
Erneutes Sperren: möglich (das miscdata-Token über BROM auf null setzen), aber für die Sicherheit sinnlos —
der BootROM-Bug ist dauerhaft, jeder kann mit denselben Schritten wieder entsperren.
Credit: CVE-2022-38694 stammt von NCC Group. Die Tooling-Arbeit ist von TomKing062. Die Skripte hier stehen unter MIT. Es löscht dein Telefon; das liegt bei dir.