
Sbloccare il Bootloader per Itel S23 (S665L) / Unisoc T606 utilizzando CVE-2022-38694
Guida per sbloccare il bootloader sull'Itel S23 (S665L) utilizzando l'exploit CVE-2022-38694 sul chipset Unisoc T606 (UMS9230).
| Proprietà | Valore |
|---|---|
| Marca | Itel |
| Modello | S665L (S23) |
| Android | 12 (SDK 31) |
| Build | S665L-F065OPRSUVApAqAr-S-GL-20250207V533 |
| SoC | Unisoc T606 (UMS9230) |
| CPU | 2x Cortex-A75 + 6x Cortex-A55 (ARMv8, 64-bit) |
| Storage | UFS |
| Slot | A/B |
adb e fastboot installatiubl-itel-s23/
├── README.md
├── CLAUDE.md
├── recovery/
│ ├── TWRP_S665L.img # TWRP recovery image
│ └── OrangeFox_S665L.img # OrangeFox recovery image
└── tools/
└── spreadtrum_flash_linux/
├── spd_dump # BootROM communication tool
├── gen_spl-unlock # Unlock payload generator
├── unlock.sh # Automated unlock script
├── fdl1-dl.bin # First-stage loader
├── fdl2-dl.bin # Second-stage loader
├── fdl2-cboot.bin # Modified uboot for unlock
├── custom_exec_no_verify_65015f08.bin # CVE exploit payload
├── custom_exec_no_verify_65015f48.bin # CVE exploit payload (alt)
├── splloader.bin # SPL backup (generated during process)
├── uboot.bin # uboot backup (generated during process)
├── spl-unlock.bin # Unlock payload (generated during process)
└── ums9230/itel/ # FDL binaries for Itel UMS9230
Questo exploit sfrutta una vulnerabilità nel BootROM Unisoc che permette di scrivere dati in una regione di memoria prima che la verifica della firma sia completata.
Normale: BootROM → verify(FDL1) → RIFIUTO (non firmato)
Exploit: BootROM → sovrascrivi verify() → verify = sempre_vero → accept(FDL1) → ACCETTA → sblocca bootloader
Il payload custom_exec_no_verify (96 byte) sovrascrive il puntatore alla funzione di verifica della firma all'indirizzo 0x65015f08, facendo sì che il BootROM accetti qualsiasi FDL1 senza controllare la firma.
sudo tee /etc/udev/rules.d/51-android.rules << 'EOF'
# Google/Android (ADB & Fastboot)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
# Spreadtrum/Unisoc
SUBSYSTEM=="usb", ATTR{idVendor}=="1782", MODE="0666", GROUP="plugdev"
EOF
sudo udevadm control --reload-rules && sudo udevadm trigger
cd tools/spreadtrum_flash_linux
cp ums9230/itel/fdl1-dl.bin ums9230/itel/fdl2-dl.bin ums9230/itel/fdl2-cboot.bin .
cp ums9230/custom_exec_no_verify_65015f08.bin ums9230/custom_exec_no_verify_65015f48.bin .
chmod +x spd_dump gen_spl-unlock
Il telefono deve essere acceso e collegato via USB. Dopo questo passo, il telefono non si avvierà fino al Passo 6.
sudo ./spd_dump exec_addr 0x65015f48 fdl fdl1-dl.bin 0x65000800 \
fdl fdl2-dl.bin 0x9efffe00 exec \
r splloader r uboot e splloader e splloader_bak reset
Esegui il backup di splloader.bin e uboot.bin in un luogo sicuro:
cp splloader.bin uboot.bin backup_spl/
./gen_spl-unlock splloader.bin 0xfd28
Output: spl-unlock.bin
L'offset
0xfd28è specifico di questo firmware. Controlla la dimensione displloader.bin— l'offset dovrebbe corrispondere alla dimensione del file.
Entra in modalità BROM: spegni il telefono, tieni premuto Volume Giù, quindi collega il cavo USB.
sudo ./spd_dump exec_addr 0x65015f08 fdl fdl1-dl.bin 0x65000800 \
fdl fdl2-dl.bin 0x9efffe00 exec \
w uboot fdl2-cboot.bin reset
Entra di nuovo in modalità BROM, poi:
sudo ./spd_dump exec_addr 0x65015f08 fdl spl-unlock.bin 0x65000800
Se vedi device removed, exiting... significa successo.
Entra di nuovo in modalità BROM, poi:
sudo ./spd_dump exec_addr 0x65015f08 fdl fdl1-dl.bin 0x65000800 \
fdl fdl2-dl.bin 0x9efffe00 exec \
verbose 2 read_part miscdata 8192 64 m.bin reset
recv 64 zero = ancora BLOCCATO (fallito)recv 32 string + hash data = SBLOCCO (successo)Entra di nuovo in modalità BROM, poi:
sudo ./spd_dump exec_addr 0x65015f08 fdl fdl1-dl.bin 0x65000800 \
fdl fdl2-dl.bin 0x9efffe00 exec \
w splloader splloader.bin w uboot uboot.bin reset
Il telefono si riavvierà. Seleziona Ripristino dati di fabbrica quando appare Android Recovery.
Dopo che il telefono si avvia in Android:
adb shell getprop ro.boot.vbmeta.device_state
# Expected: unlocked
adb shell getprop ro.boot.flash.locked
# Expected: 0
splloader.bin e uboot.bin — sono necessari per il ripristino in caso di problemi0x65015f48, i passi 3-6 usano 0x65015f08spd_dump / CVE-2022-38694 Sblocco Bootloader di TomKing062 / QuTick102 https://github.com/TomKing062/CVE-2022-38694_unlock_bootloader
Raccolta Recovery e Spreadtrum Flash Tool (Linux) di Massatriof16 https://massatriof16.github.io/recovery-collections/#alat
unisoc-unlock (alternativa Python) di patrislav1 https://github.com/patrislav1/unisoc-unlock