
Déverrouillage du bootloader du ZTE Blade V40 Vita (P606F02 / Unisoc UMS9230 / UFS) via CVE-2022-38694 - scripts Linux, le correctif du blocage post-déverrouillage FBE, et les deux pièges que personne ne documente
Notes et scripts Linux pour le déverrouillage avec
CVE-2022-38694. Réalisé sur mon
EEA_P606F02 exécutant MyOS11.0.13_8045_EEA.
Deux choses déterminent si cela fonctionne et aucune des deux n'est documentée nulle part :
SEND fdl2-dl.bin → connection closed). Maintenez VOL_UP + VOL_DOWN uniquement.
Appuyez une fois sur POWER si vous avez besoin d'une réinitialisation.misc ne
fait rien — ce bootloader l'ignore. Effacez userdata + metadata via BROM à la place.| Modèle | ZTE Blade V40 Vita — ZTE 8045 / EEA_P606F02 |
| SoC / stockage | Unisoc UMS9230 / UFS |
| Paquet | ums9230_universal_unlock_UFS. Les fdl2-*.bin pour UFS font 934088 octets ; ceux pour eMMC font ~1 Mo. De mauvais loaders peuvent effacer le téléphone |
| 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
Placez chsize, gen_spl-unlock, spd_dump et les quatre fichiers du paquet UFS
(fdl1-dl.bin, fdl2-dl.bin, fdl2-cboot.bin, misc-wipe.bin) dans un même répertoire de travail.
Les scripts ci-dessous s'exécutent dans ce répertoire.
Téléphone éteint → maintenez VOL_UP + VOL_DOWN → branchez l'USB → continuez de maintenir. Vous voulez l'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 correspond à l'USB normal du téléphone, pas au BROM. Un téléphone en boucle de démarrage ne pose pas de problème — chaque réinitialisation réexécute le BootROM, qui rééchantillonne les touches lors de la réinitialisation.
Une étape à la fois, en revenant au BROM avant chacune. Maintenez les touches de volume enfoncées pendant l'exécution.
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
L'étape 4 se termine par EXEC FDL1 → timeout → connection closed. C'est le déverrouillage qui fonctionne, pas un échec. Si l'étape 5 affiche des zéros, relancez l'étape 4.
L'étape 3 laisse le téléphone incapable de démarrer Android (le payload n'est pas un vrai bootloader) — l'étape 6 remet votre uboot_bak.bin d'origine. Ne vous arrêtez pas entre les deux.
Les clés FBE dans trustos sont scellées à l'état de verrouillage, donc /data ne peut jamais être monté. L'effacement est obligatoire :
sudo /path/to/repo/scripts/fix-post-unlock-hang.sh
Maintenez les touches de volume, il se réarme tout seul jusqu'à ce qu'il attrape le BROM. Efface userdata + metadata,
écrit le BCB, réinitialise. Attrapé à la troisième tentative et a pris moins d'une 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 est inutile sur cet appareil (renvoie vide pour tout), donc ne cherchez pas
là pour confirmation.
Il s'agit d'un appareil VAB sans partition recovery. Interrogez toujours le slot actif avant
de flasher :
adb shell getprop ro.boot.slot_suffix
L'image de démarrage B06 d'origine doit voir sa sortie Magisk re-signée avant le flashage. La procédure testée sous Windows de flashage de la ROM d'origine, de signature AVB et de récupération se trouve dans docs/windows-flash-root.md. Briquez une image de démarrage et le BROM fonctionne toujours. Carte des partitions : docs/partition-table.md.
Re-verrouillage : possible (mettre à zéro le jeton miscdata via BROM) mais inutile pour la sécurité —
le bug du BootROM est permanent, n'importe qui peut re-déverrouiller avec ces mêmes étapes.
Crédit : CVE-2022-38694 appartient à NCC Group. L'outillage est celui de TomKing062. Les scripts ici sont sous MIT. Cela efface votre téléphone ; c'est votre responsabilité.