Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
spd_dump-macos — Flasher UNISOC BootROM/FDL para macOS: spd_dump parcheado con CVE-2022-38694 exec_addr2, referencia del protocolo, reglas de partición, verificación de copia de seguridad (UMS9621) | Kitploit
Herramientas/GitHubGitHub/xun404/spd_dump-macos
Seguridad AndroidSeguridad de Sistemas EmbebidosExplotaciónHacking de HardwareSeguridad MóvilAnálisis de Firmware
GitHubxun404/spd_dump-macos

spd_dump-macos

Flasher UNISOC BootROM/FDL para macOS: spd_dump parcheado con CVE-2022-38694 exec_addr2, referencia del protocolo, reglas de partición, verificación de copia de seguridad (UMS9621)

Ver Repositorio
hace 3 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

spd_dump for macOS

English | 简体中文

Puerto para macOS de la herramienta de flasheo BootROM/FDL de UNISOC (Spreadtrum). Basado en ilyakurdyukov/spreadtrum_flash (MIT), implementa el exec_addr2 (bypass de verificación de firma CVE-2022-38694) que falta en el spd_dump de código cerrado y completa toda la cadena en macOS (arm64 + libusb):

root@kitploit:~
BootROM → escritura fuera de límites (CVE) → FDL1 → FDL2 → análisis de GPT → lectura/escritura de particiones → reset

Plataforma de verificación: UMS9621 (T158), Android 13, kernel 5.15, arquitectura GKI (init_boot). Las direcciones de la familia UMS9620 son compatibles; para otros SoC, ver Adaptación.

Compilación

Dependencias: Xcode CLT, brew install libusb.

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

Uso

Entrar en modo de descarga

Con el dispositivo apagado y sin alimentación, mantenga pulsado Reset (o la combinación de teclas correspondiente al modelo) y conecte el USB; el dispositivo se enumera como 1782:4d00. El BootROM solo responde durante unos 20 segundos tras la enumeración y luego queda en silencio (el USB sigue presente); la automatización debe activarse por el flanco "ausente → presente" del dispositivo (ver scripts/runner.sh).

Cargar FDL2 y leer la tabla de particiones

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
ParámetroDescripción
exec_addr2 <addr>Bypass del CVE; carga automáticamente ;

Copia de seguridad

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 secuencia de read_part según el GPT (con reanudación; la unidad de size del GPT es MB) y establece AVB flags=3 sin conexión para vbmeta* (equivalente a verity 0).

Flasheo

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 incorpora reglas de partición integradas (runtimenv convertido en borrado, fixnv/calinv omitidos, alias sin ranura deduplicados por mtime) y añade erase_part userdata + reset al final.

Puntos clave del protocolo

Ver docs/protocol-notes.md para más detalles:

  • Los comandos personalizados deben consumirse en el bucle de análisis de opciones; verbose 1 termina ese bucle antes de tiempo
  • La sesión FDL2 sobrevive entre procesos: salir del proceso no termina FDL2, por lo que los comandos de partición pueden ejecutarse por lotes
  • 0x8A (DOWN_SIZE_ERROR) se usa también para: descarga independiente de direcciones protegidas, escritura de runtimenv y bloques de lectura demasiado grandes
  • El tamaño máximo del bloque de lectura es inferior a 0xffff; por defecto 4096
  • Leer la familia de particiones NV (nr_fixnv1) por direccionamiento por nombre cuelga la sesión; ver las reglas en docs/partition-rules.md

Verificación de la copia de seguridad

Las particiones estáticas (dtb, etc.) se contrastan por md5 con imágenes conocidas del mismo modelo, lo que permite verificar la corrección de la cadena de lectura.

Adaptación a otros SoC

ElementoFuente
Direcciones de carga de fdl1/fdl2XML del firmware PAC del modelo (desempaquetado con SPD Research Tool)
Blob del CVE y dirección de pilaTomKing062/CVE-2022-38694 soc/<chip>/
Imágenes fdlExtraídas del firmware oficial del modelo (cabecera con firma DHTB)

Referencias

  • ilyakurdyukov/spreadtrum_flash — upstream (MIT), src/ contiene el código fuente con los parches
  • TomKing062/CVE-2022-38694_unlock_bootloader — principio del CVE y materiales para cada SoC
  • YC-nw/SPRDClientCore — referencia de constantes de protocolo y reglas de partición
  • NCC Group — UNISOC ROM Vulnerabilities

Preautorización de Magisk su en dispositivos sin pantalla: docs/headless-magisk-su.md.

Las operaciones a nivel de BootROM conllevan riesgo de brick; haga una copia de seguridad primero. Úselo bajo su propio riesgo (AS IS).

Descargar herramienta
custom_exec_no_verify_<addr>.bin
implementación
fdl <file> <addr>Imagen FDL y dirección de carga SRAM correspondiente al SoC
disable_transcodeDebe enviarse una vez al inicio de cada proceso nuevo (el estado persiste entre procesos)
Elemento de verificaciónValor
TamañoComparado uno a uno con el GPT (precisión de bytes)
boot / init_bootANDROID! @0
vendor_bootVNDRBOOT @0
Familia vbmetaAVB0 @0, flags @0x78
splloader/trustos/uboot/fdlDHTB @0
supergDla @4096 y @8192 (doble copia geométrica), los primeros 4K se conservan en cero
NVNV (0x4E56) @0 o @0x200