Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
spd_dump-macos — Flasheur UNISOC BootROM/FDL pour macOS : spd_dump corrigé avec CVE-2022-38694 exec_addr2, référence du protocole, règles de partition, vérification de sauvegarde (UMS9621) | Kitploit
Outils/GitHubGitHub/xun404/spd_dump-macos
Sécurité AndroidSécurité des Systèmes EmbarquésExploitationHacking MatérielSécurité MobileAnalyse de Micrologiciel
GitHubxun404/spd_dump-macos

spd_dump-macos

Flasheur UNISOC BootROM/FDL pour macOS : spd_dump corrigé avec CVE-2022-38694 exec_addr2, référence du protocole, règles de partition, vérification de sauvegarde (UMS9621)

Voir le dépôt
il y a 2 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

spd_dump for macOS

English | 简体中文

Portage macOS de l'outil de flashage BootROM/FDL d'UNISOC (Spreadtrum). Basé sur ilyakurdyukov/spreadtrum_flash (MIT), il complète le spd_dump propriétaire avec exec_addr2 (contournement de la vérification de signature CVE-2022-38694), et réalise la chaîne complète sur macOS (arm64 + libusb) :

root@kitploit:~
BootROM → CVE 越界写 → FDL1 → FDL2 → GPT 解析 → 分区读写 → reset

Plateforme de validation : UMS9621 (T158), Android 13, kernel 5.15, architecture GKI (init_boot). Les adresses de la famille UMS9620 sont compatibles ; pour les autres SoC, voir Adaptation à d'autres SoC.

Construction

Dépendances : Xcode CLT, brew install libusb.

root@kitploit:~
./scripts/build-macos.sh   # 产出 ./spd_dump

Utilisation

Entrer en mode téléchargement

Éteint et débranché, maintenez Reset (ou la combinaison de touches propre au modèle) et insérez le câble USB ; l'appareil est énuméré comme 1782:4d00. Le BootROM ne répond que durant environ 20 secondes après l'énumération, puis reste silencieux (l'USB reste présent) ; l'automatisation doit se déclencher sur le front « absent → présent » de l'appareil (voir scripts/runner.sh).

Charger FDL2 et lire la table de partitions

root@kitploit:~
./spd_dump --wait 3 exec_addr2 0x65017f08 verbose 1 \
    fdl fdl1-dl.bin 0x65000800 \
    fdl fdl2-dl.bin 0xbefffe00 \
    disable_transcode partition_list gpt.xml
ParamètreDescription
exec_addr2 <addr>Contournement du CVE, charge automatiquement ;

Sauvegarde

root@kitploit:~
python3 scripts/backup_gen.py gpt.xml backup/ --img-dir data/
./spd_dump --wait 3 verbose 0 disable_transcode $(cat backup_args.txt)

backup_gen.py génère la séquence de read_part à partir du GPT (reprise après interruption ; l'unité de size du GPT est le Mo), et applique hors ligne AVB flags=3 aux vbmeta* (équivalent à verity 0).

Flashage

root@kitploit:~
python3 scripts/flash_gen.py gpt.xml data/ flash_ops.txt
N=$(grep -c 'write_part\|erase_part' flash_ops.txt)
{ yes yes | head -n $N; sleep 3600; } | ./spd_dump --wait 3 verbose 0 \
    disable_transcode $(cat flash_ops.txt | tr '\n' ' ')

flash_gen.py intègre des règles de partition (runtimenv converti en effacement, fixnv/calinv ignorés, déduplication par mtime des alias sans slot), et ajoute erase_part userdata + reset à la fin.

Points clés du protocole

Voir docs/protocol-notes.md :

  • Les commandes personnalisées doivent être consommées dans la boucle d'analyse des options ; verbose 1 termine cette boucle prématurément
  • La session FDL2 survit aux processus : la sortie du processus ne termine pas FDL2, les commandes de partition peuvent être exécutées par lots
  • 0x8A (DOWN_SIZE_ERROR) est utilisé à la fois pour : le téléchargement isolé d'adresses protégées, l'écriture de runtimenv, les blocs de lecture surdimensionnés
  • La taille maximale des blocs de lecture est inférieure à 0xffff, 4096 par défaut
  • La lecture de la famille de partitions NV (nr_fixnv1) par adressage par nom suspend la session ; règles dans docs/partition-rules.md

Vérification de la sauvegarde

Les partitions statiques (dtb, etc.) sont recoupées par md5 avec des images connues du même modèle, ce qui permet de valider la chaîne de lecture.

Adaptation à d'autres SoC

ÉlémentSource
Adresses de chargement fdl1/fdl2XML du firmware pac du modèle (dépaqueté avec SPD Research Tool)
Blob CVE et adresse de pileTomKing062/CVE-2022-38694 soc/<chip>/
Images fdlExtraites du firmware officiel du modèle (en-tête signé DHTB)

Références

  • ilyakurdyukov/spreadtrum_flash — amont (MIT), src/ contient le code source des correctifs
  • TomKing062/CVE-2022-38694_unlock_bootloader — principe du CVE et matériel pour chaque SoC
  • YC-nw/SPRDClientCore — référence pour les constantes du protocole et les règles de partition
  • NCC Group — UNISOC ROM Vulnerabilities

Pré-autorisation de Magisk su pour les appareils sans écran : docs/headless-magisk-su.md.

Les opérations au niveau BootROM comportent un risque de brick ; sauvegardez d'abord, à vos risques et périls (AS IS).

Télécharger l’outil
custom_exec_no_verify_<addr>.bin
implémentation
fdl <file> <addr>Image FDL et adresse de chargement SRAM spécifique au SoC
disable_transcodeDoit être envoyé une fois au début de chaque nouveau processus (l'état persiste entre les processus)
Élément de vérificationValeur
TailleComparée une à une au GPT (exactitude à l'octet près)
boot / init_bootANDROID! @0
vendor_bootVNDRBOOT @0
Famille vbmetaAVB0 @0, flags @0x78
splloader/trustos/uboot/fdlDHTB @0
supergDla @4096 et @8192 (double copie géométrique), les 4 premiers Ko restent à zéro
NVNV (0x4E56) @0 ou @0x200