
Desbloqueo del bootloader del ZTE Blade V40 Vita (P606F02 / Unisoc UMS9230 / UFS) mediante CVE-2022-38694: scripts de Linux, la solución al cuelgue posterior al desbloqueo de FBE y las dos trampas que nadie documenta
Notas y scripts para Linux para desbloquear con
CVE-2022-38694. Hecho en mi
EEA_P606F02 con MyOS11.0.13_8045_EEA.
Dos cosas deciden si esto funciona y ninguna está documentada en ningún sitio:
SEND fdl2-dl.bin → connection closed). Mantén pulsado VOL_UP + VOL_DOWN únicamente.
Pulsa POWER una vez si necesitas un reinicio.misc BCB no
hace nada — este bootloader lo ignora. Borra userdata + metadata por BROM en su lugar.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
Pon chsize, gen_spl-unlock, spd_dump y los cuatro archivos del paquete UFS
(fdl1-dl.bin, fdl2-dl.bin, fdl2-cboot.bin, misc-wipe.bin) en un mismo directorio de trabajo.
Los scripts de abajo se ejecutan contra ese directorio.
Teléfono apagado → mantén pulsado VOL_UP + VOL_DOWN → conecta el USB → sigue manteniendo pulsado. Quieres el 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 es el USB normal del teléfono, no BROM. Un teléfono en boot-loop está bien — cada reinicio
vuelve a ejecutar el BootROM, que vuelve a muestrear las teclas al reiniciar.
Un paso a la vez, volviendo a entrar en BROM antes de cada uno. Mantén las teclas de volumen pulsadas mientras se ejecuta.
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
El paso 4 termina en EXEC FDL1 → timeout → connection closed. Eso es el desbloqueo funcionando, no
fallando. Si el paso 5 muestra ceros, ejecuta el paso 4 de nuevo.
El paso 3 deja el teléfono incapaz de arrancar Android (el payload no es un bootloader real) — el paso 6
vuelve a poner tu uboot_bak.bin original. No te detengas entre medias.
Las claves FBE en trustos están selladas al estado de bloqueo, así que /data nunca puede montarse. Borrar es
obligatorio:
sudo /path/to/repo/scripts/fix-post-unlock-hang.sh
Mantén las teclas de volumen pulsadas, se rearma a sí mismo hasta que captura BROM. Borra userdata + metadata,
escribe el BCB, reinicia. Lo capturó al tercer intento y tardó menos de un minuto.
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 es inútil en este dispositivo (devuelve vacío para todo), así que no busques
ahí la confirmación.
Dispositivo VAB, slot b, sin partición recovery:
fastboot flash boot_b magisk_patched.img
Si brickeas una imagen de arranque vuelves a BROM, que sigue funcionando. Mapa de particiones: docs/partition-table.md.
Re-bloqueo: posible (poner a cero el token de miscdata por BROM) pero inútil para seguridad —
el bug del BootROM es permanente, cualquiera puede volver a desbloquear con estos mismos pasos.
Crédito: CVE-2022-38694 es de NCC Group. Las herramientas son de TomKing062. Los scripts de aquí son MIT. Borra tu teléfono; eso es cosa tuya.
| Modelo | ZTE Blade V40 Vita — ZTE 8045 / EEA_P606F02 |
| SoC / almacenamiento | Unisoc UMS9230 / UFS |
| Paquete | ums9230_universal_unlock_UFS. Los fdl2-*.bin de UFS son de 934088 bytes; los de eMMC son de ~1 MB. Cargadores equivocados pueden borrar el teléfono |
| SO / slot | Android 11, MyOS11.0.13 · slot _b |