
Bootloader entsperren für Itel S23 (S665L) / Unisoc T606 mittels CVE-2022-38694
Anleitung zum Entsperren des Bootloaders auf dem Itel S23 (S665L) mit dem CVE-2022-38694-Exploit auf dem Unisoc T606 (UMS9230)-Chipsatz.
| Eigenschaft | Wert |
|---|---|
| Marke | Itel |
| Modell | 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) |
| Speicher | UFS |
| Slot | A/B |
adb und fastboot installiertubl-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
Dieser Exploit nutzt eine Schwachstelle im Unisoc-BootROM aus, die das Schreiben von Daten in einen Speicherbereich ermöglicht, bevor die Signaturprüfung abgeschlossen ist.
Normal: BootROM → verify(FDL1) → REJECT (unsigned)
Exploit: BootROM → overwrite verify() → verify = always_true
→ accept(FDL1) → ACCEPT → unlock bootloader
Das custom_exec_no_verify-Payload (96 Bytes) überschreibt den Funktionszeiger der Signaturprüfung an Adresse 0x65015f08, was dazu führt, dass das BootROM jedes FDL1 akzeptiert, ohne dessen Signatur zu überprüfen.
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
Das Telefon muss eingeschaltet und per USB verbunden sein. Nach diesem Schritt startet das Telefon nicht mehr, bis Schritt 6 durchgeführt wird.
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
Sichern Sie splloader.bin und uboot.bin an einem sicheren Ort:
cp splloader.bin uboot.bin backup_spl/
./gen_spl-unlock splloader.bin 0xfd28
Ausgabe: spl-unlock.bin
Der Offset
0xfd28ist spezifisch für diese Firmware. Überprüfen Sie die Größe vonsplloader.bin– der Offset sollte der Dateigröße entsprechen.
BROM-Modus betreten: Telefon ausschalten, Lautstärke leiser gedrückt halten, dann USB einstecken.
sudo ./spd_dump exec_addr 0x65015f08 fdl fdl1-dl.bin 0x65000800 \
fdl fdl2-dl.bin 0x9efffe00 exec \
w uboot fdl2-cboot.bin reset
BROM-Modus erneut betreten, dann:
sudo ./spd_dump exec_addr 0x65015f08 fdl spl-unlock.bin 0x65000800
Wenn Sie device removed, exiting... sehen, bedeutet das Erfolg.
BROM-Modus erneut betreten, dann:
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 = noch GESPERRT (fehlgeschlagen)recv 32 Zeichenfolge + Hash-Daten = ENTSPERRT (Erfolg)BROM-Modus erneut betreten, dann:
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
Das Telefon wird neu gestartet. Wählen Sie Factory Reset, wenn Android Recovery erscheint.
Nachdem das Telefon in Android hochgefahren ist:
adb shell getprop ro.boot.vbmeta.device_state
# Expected: unlocked
adb shell getprop ro.boot.flash.locked
# Expected: 0
splloader.bin und uboot.bin – sie werden für die Wiederherstellung benötigt, falls etwas schiefgeht0x65015f48, Schritte 3-6 verwenden 0x65015f08spd_dump / CVE-2022-38694 Bootloader entsperren von TomKing062 / QuTick102 https://github.com/TomKing062/CVE-2022-38694_unlock_bootloader
Recovery-Sammlungen & Spreadtrum Flash Tool (Linux) von Massatriof16 https://massatriof16.github.io/recovery-collections/#alat
unisoc-unlock (Python-Alternative) von patrislav1 https://github.com/patrislav1/unisoc-unlock