
Desbloqueando o bootloader do ZTE Blade V40 Vita (P606F02 / Unisoc UMS9230 / UFS) via CVE-2022-38694 - scripts Linux, a correção do travamento pós-desbloqueio do FBE e as duas armadilhas que ninguém documenta
Notas e scripts para Linux para desbloquear com
CVE-2022-38694. Feito no meu
EEA_P606F02 rodando MyOS11.0.13_8045_EEA.
Duas coisas decidem se isso funciona e nenhuma delas está escrita em lugar nenhum:
SEND fdl2-dl.bin → connection closed). Segure apenas VOL_UP + VOL_DOWN.
Toque POWER uma vez se precisar de um reset.misc não
faz nada — este bootloader o ignora. Apague userdata + metadata via BROM.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
Coloque chsize, gen_spl-unlock, spd_dump e os quatro arquivos do pacote UFS
(fdl1-dl.bin, fdl2-dl.bin, fdl2-cboot.bin, misc-wipe.bin) em um único diretório de trabalho.
Os scripts abaixo rodam contra esse diretório.
Telefone desligado → segure VOL_UP + VOL_DOWN → conecte o USB → continue segurando. Você quer o 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 é o USB normal do telefone, não o BROM. Um telefone em boot-loop não é problema — cada reset
reexecuta a BootROM, que reamostra as teclas no reset.
Um passo de cada vez, reentrando no BROM antes de cada um. Mantenha as teclas de volume pressionadas enquanto ele roda.
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
O passo 4 termina em EXEC FDL1 → timeout → connection closed. Isso é o desbloqueio funcionando, não
falhando. Se o passo 5 mostrar zeros, rode o passo 4 novamente.
O passo 3 deixa o telefone incapaz de inicializar o Android (o payload não é um bootloader real) — o passo 6
recoloca seu uboot_bak.bin original. Não pare no meio.
As chaves FBE no trustos estão seladas ao estado de bloqueio, então /data nunca consegue montar. O wipe é
obrigatório:
sudo /path/to/repo/scripts/fix-post-unlock-hang.sh
Segure as teclas de volume, ele se rearma até capturar o BROM. Apaga userdata + metadata,
grava o BCB, reseta. Capturou na terceira tentativa e levou menos de um 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 é inútil neste dispositivo (retorna vazio para tudo), então não procure
lá por confirmação.
Dispositivo VAB, slot b, sem partição recovery:
fastboot flash boot_b magisk_patched.img
Brique uma imagem de boot e você volta ao BROM, que ainda funciona. Mapa de partições: docs/partition-table.md.
Re-bloquear: possível (zerar o token de miscdata via BROM) mas inútil para segurança —
o bug da BootROM é permanente, qualquer um pode desbloquear novamente com estes mesmos passos.
Crédito: CVE-2022-38694 é do NCC Group. O ferramental é do TomKing062. Os scripts aqui são MIT. Isso apaga seu telefone; o risco é seu.
| Modelo | ZTE Blade V40 Vita — ZTE 8045 / EEA_P606F02 |
| SoC / armazenamento | Unisoc UMS9230 / UFS |
| Pacote | ums9230_universal_unlock_UFS. Os fdl2-*.bin de UFS têm 934088 bytes; os de eMMC têm ~1 MB. Loaders errados podem apagar o telefone |
| SO / slot | Android 11, MyOS11.0.13 · slot _b |