
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, wenn ein Reset nötig ist.misc-Wipe-BCB bewirkt
nichts — dieser Bootloader ignoriert ihn. Stattdessen userdata + metadata über BROM löschen.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 Arbeitsverzeichnis.
Die folgenden Skripte laufen gegen dieses Verzeichnis.
Telefon aus → VOL_UP + VOL_DOWN halten → USB einstecken → weiter 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 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, vor jedem Schritt BROM erneut betreten. 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 das Entsperren, das funktioniert, nicht
fehlschlägt. Wenn Schritt 5 Nullen zeigt, 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
setzt dein Stock-uboot_bak.bin zurück. Nicht dazwischen aufhören.
FBE-Schlüssel in trustos sind an den Sperrzustand gebunden, daher kann /data niemals gemountet werden. Wipen ist
zwingend erforderlich:
sudo /path/to/repo/scripts/fix-post-unlock-hang.sh
Halte die Lautstärketasten, es bewaffnet sich selbst neu, bis es BROM erwischt. Löscht userdata + metadata,
schreibt den BCB, setzt zurück. Beim dritten Versuch erwischt 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), also suche dort nicht
nach Bestätigung.
VAB-Gerät, Slot b, keine recovery-Partition:
fastboot flash boot_b magisk_patched.img
Zerschieße ein Boot-Image und du bist zurück in BROM, was weiterhin funktioniert. 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 permanent, jeder kann mit denselben Schritten erneut entsperren.
Danksagung: CVE-2022-38694 stammt von NCC Group. Die Tooling ist von TomKing062. Die Skripte hier stehen unter MIT. Es löscht dein Telefon; das liegt bei dir.
| 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 |