Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/xun404/spd_dump-macos
Sicurezza AndroidSicurezza Sistemi EmbeddedExploitHacking HardwareSicurezza MobileAnalisi del Firmware
GitHubxun404/spd_dump-macos

spd_dump-macos

Flasher UNISOC BootROM/FDL per macOS: spd_dump patchato con CVE-2022-38694 exec_addr2, riferimento al protocollo, regole di partizionamento, verifica del backup (UMS9621)

Vedi Repository
3 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

spd_dump for macOS

English | 简体中文

Porting macOS dello strumento di flashing BootROM/FDL UNISOC (Spreadtrum). Basato su ilyakurdyukov/spreadtrum_flash (MIT), completa la funzionalità exec_addr2 (bypass del controllo firma CVE-2022-38694) della spd_dump closed-source e realizza l'intera catena su macOS (arm64 + libusb):

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

Piattaforma verificata: UMS9621 (T158), Android 13, kernel 5.15, architettura GKI (init_boot). Gli indirizzi della famiglia UMS9620 sono compatibili; per altri SoC vedi Adattamento.

Compilazione

Dipendenze: Xcode CLT, brew install libusb.

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

Utilizzo

Ingresso in modalità download

A dispositivo spento, tieni premuto Reset (o la combinazione di tasti specifica del modello) e inserisci l'USB: il dispositivo viene enumerato come 1782:4d00. Il BootROM risponde solo per circa 20 secondi dopo l'enumerazione, poi resta in silenzio (l'USB rimane attivo); l'automazione deve essere attivata sul fronte "assente→presente" del dispositivo (vedi scripts/runner.sh).

Caricare FDL2 e leggere la tabella delle partizioni

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
ParametroDescrizione
exec_addr2 <addr>Bypass della CVE, carica automaticamente ;

Backup

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 genera la sequenza di read_part in base al GPT (riprendibile; l'unità di size nel GPT è MB) e imposta offline su vbmeta* i flag AVB a 3 (equivalente a verity 0).

Flash

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 include regole integrate per le partizioni (runtimenv convertito in erase, fixnv/calinv saltate, deduplicazione per mtime in assenza di alias di slot) e alla fine aggiunge erase_part userdata + reset.

Punti chiave del protocollo

Vedi docs/protocol-notes.md:

  • I comandi personalizzati devono essere consumati nel ciclo di parsing delle opzioni; verbose 1 termina anticipatamente quel ciclo
  • La sessione FDL2 sopravvive tra processi: l'uscita del processo non termina FDL2, quindi i comandi sulle partizioni possono essere eseguiti in lotti
  • 0x8A (DOWN_SIZE_ERROR) viene usato anche per: download indipendente di indirizzi protetti, scrittura di runtimenv, blocchi di lettura troppo grandi
  • Il limite massimo per la dimensione dei blocchi di lettura è inferiore a 0xffff; il default è 4096
  • La famiglia di partizioni NV (nr_fixnv1), se letta tramite indirizzamento per nome, blocca la sessione; regole in docs/partition-rules.md

Verifica del backup

Le partizioni statiche (dtb, ecc.) vengono incrociate tramite md5 con immagini note dello stesso modello, per verificare la correttezza del percorso di lettura.

Adattamento ad altri SoC

VoceOrigine
Indirizzi di caricamento di fdl1/fdl2XML del firmware pac del modello (estratto con SPD Research Tool)
CVE blob e indirizzo dello stackTomKing062/CVE-2022-38694 soc/<chip>/
Immagini fdlEstratte dal firmware ufficiale del modello (header firmato DHTB)

Riferimenti

  • ilyakurdyukov/spreadtrum_flash — upstream (MIT), src/ contiene il codice sorgente delle patch
  • TomKing062/CVE-2022-38694_unlock_bootloader — principio della CVE e materiali per i vari SoC
  • YC-nw/SPRDClientCore — riferimento per costanti di protocollo e regole delle partizioni
  • NCC Group — UNISOC ROM Vulnerabilities

Pre-autorizzazione di Magisk su per dispositivi senza schermo: docs/headless-magisk-su.md.

Le operazioni a livello BootROM comportano il rischio di brick del dispositivo; esegui prima un backup, a tuo rischio (AS IS).

Scarica lo strumento
custom_exec_no_verify_<addr>.bin
implementazione
fdl <file> <addr>Immagine FDL e indirizzo di caricamento SRAM relativo al SoC
disable_transcodeVa inviato una volta all'inizio di ogni nuovo processo (lo stato persiste tra i processi)
Voce di controlloValore
DimensioniConfrontate con il GPT una a una (precisione in byte)
boot / init_bootANDROID! @0
vendor_bootVNDRBOOT @0
Famiglia vbmetaAVB0 @0, flags @0x78
splloader/trustos/uboot/fdlDHTB @0
supergDla @4096 e @8192 (doppia copia geometrica), i primi 4K restano zero
NVNV (0x4E56) @0 o @0x200