
Разблокировка загрузчика ZTE Blade V40 Vita (P606F02 / Unisoc UMS9230 / UFS) через CVE-2022-38694 — Linux-скрипты, исправление зависания FBE после разблокировки и две ловушки, которые никто не документирует
Заметки и скрипты для Linux по разблокировке с помощью
CVE-2022-38694. Выполнено на моём
EEA_P606F02 под управлением MyOS11.0.13_8045_EEA.
Два момента определяют, сработает ли это, и ни один из них нигде не описан:
SEND fdl2-dl.bin → connection closed). Удерживайте только VOL_UP + VOL_DOWN.
Нажмите POWER один раз, если нужен сброс.misc
ничего не даёт — этот загрузчик её игнорирует. Сотрите userdata + metadata через 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
Поместите chsize, gen_spl-unlock, spd_dump и четыре файла из пакета UFS
(fdl1-dl.bin, fdl2-dl.bin, fdl2-cboot.bin, misc-wipe.bin) в один рабочий каталог.
Приведённые ниже скрипты запускаются относительно этого каталога.
Телефон выключен → удерживайте VOL_UP + VOL_DOWN → подключите USB → продолжайте удерживать. Вам нужен 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 — это обычный USB телефона, а не BROM. Телефон в цикле загрузки — это нормально: каждый сброс
перезапускает BootROM, который заново считывает клавиши при сбросе.
По одному шагу за раз, повторно входя в BROM перед каждым. Удерживайте клавиши громкости, пока он выполняется.
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
Шаг 4 заканчивается на EXEC FDL1 → тайм-аут → connection closed. Это признак того, что разблокировка
работает, а не сбоит. Если шаг 5 показывает нули, запустите шаг 4 снова.
Шаг 3 оставляет телефон неспособным загрузить Android (полезная нагрузка — не настоящий загрузчик) — шаг 6
возвращает ваш стоковый uboot_bak.bin. Не останавливайтесь между ними.
Ключи FBE в trustos привязаны к состоянию блокировки, поэтому /data никогда не смонтируется. Стирание
обязательно:
sudo /path/to/repo/scripts/fix-post-unlock-hang.sh
Удерживайте клавиши громкости, скрипт перезапускается сам, пока не поймает BROM. Стирает userdata + metadata,
записывает BCB, выполняет сброс. Поймал с третьей попытки и занял меньше минуты.
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 на этом устройстве бесполезен (возвращает пустое значение для всего), так что не ищите
подтверждение там.
Устройство с VAB, слот b, без раздела recovery:
fastboot flash boot_b magisk_patched.img
Запорете образ boot — и снова окажетесь в BROM, который по-прежнему работает. Карта разделов: docs/partition-table.md.
Повторная блокировка: возможна (обнулить токен miscdata через BROM), но бессмысленна с точки зрения безопасности —
баг BootROM неисправим, любой может разблокировать снова теми же шагами.
Благодарность: CVE-2022-38694 принадлежит NCC Group. Инструментарий — TomKing062. Скрипты здесь под MIT. Это сотрёт ваш телефон; ответственность на вас.
| Модель | ZTE Blade V40 Vita — ZTE 8045 / EEA_P606F02 |
| SoC / накопитель | Unisoc UMS9230 / UFS |
| Пакет | ums9230_universal_unlock_UFS. UFS fdl2-*.bin имеют размер 934088 байт; версии для eMMC — ~1 МБ. Неправильные загрузчики могут стереть телефон |
| ОС / слот | Android 11, MyOS11.0.13 · слот _b |