Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
spd_dump-macos — Gravador BootROM/FDL da UNISOC para macOS: spd_dump com patch para CVE-2022-38694 exec_addr2, referência de protocolo, regras de partição, verificação de backup (UMS9621) | Kitploit
Ferramentas/GitHubGitHub/xun404/spd_dump-macos
Segurança AndroidSegurança de Sistemas EmbarcadosExploraçãoHacking de HardwareSegurança MóvelAnálise de Firmware
GitHubxun404/spd_dump-macos

spd_dump-macos

Gravador BootROM/FDL da UNISOC para macOS: spd_dump com patch para CVE-2022-38694 exec_addr2, referência de protocolo, regras de partição, verificação de backup (UMS9621)

Ver Repositório
10há 22 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

spd_dump para macOS

English | 简体中文

Porte para macOS da ferramenta de gravação BootROM/FDL da UNISOC (Spreadtrum). Baseado no ilyakurdyukov/spreadtrum_flash (MIT), adiciona o exec_addr2 do spd_dump proprietário (bypass da verificação de assinatura CVE-2022-38694) e conclui o fluxo completo no macOS (arm64 + libusb):

root@kitploit:~
BootROM → escrita fora dos limites do CVE → FDL1 → FDL2 → análise do GPT → leitura/gravação de partições → reset

Plataforma de validação: UMS9621 (T158), Android 13, kernel 5.15, arquitetura GKI (init_boot). Endereços da família UMS9620 compatíveis; para outros SoCs, veja Adaptação.

Compilação

Dependências: Xcode CLT, brew install libusb.

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

Uso

Entrar no modo de download

Com o aparelho desligado e sem energia, mantenha pressionado Reset (ou a combinação de teclas correspondente ao modelo) ao conectar o USB; o dispositivo é enumerado como 1782:4d00. O BootROM responde apenas por cerca de 20 segundos após a enumeração e depois fica silencioso (o USB permanece); a automação deve ser acionada pela borda "ausente → presente" do dispositivo (veja scripts/runner.sh).

Carregar o FDL2 e ler a tabela de partições

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âmetroDescrição
exec_addr2 <addr>Bypass do CVE, carrega 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)

O backup_gen.py gera a sequência de read_part com base no GPT (com retomada; a unidade de size do GPT é MB) e define offline AVB flags=3 para vbmeta* (equivalente a verity 0).

Gravação

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' ' ')

O flash_gen.py tem regras de partição embutidas (runtimenv é convertido em apagamento, fixnv/calinv são pulados, aliases sem slot são deduplicados por mtime) e anexa erase_part userdata + reset ao final.

Pontos-chave do protocolo

Consulte docs/protocol-notes.md:

  • Comandos personalizados devem ser consumidos no loop de análise de opções; verbose 1 encerra esse loop prematuramente
  • A sessão FDL2 sobrevive entre processos: a saída do processo não encerra o FDL2, permitindo executar comandos de partição em lotes
  • 0x8A (DOWN_SIZE_ERROR) também é usado para: download separado de endereços protegidos, gravação do runtimenv e blocos de leitura excessivamente grandes
  • O tamanho máximo do bloco de leitura é inferior a 0xffff, padrão 4096
  • A leitura da família de partições NV (nr_fixnv1) por endereçamento por nome trava a sessão; veja as regras em docs/partition-rules.md

Verificação do backup

As partições estáticas (dtb etc.) são comparadas por md5 com imagens conhecidas do mesmo modelo, o que valida a corretude do caminho de leitura.

Adaptação para outros SoCs

ItemOrigem
Endereços de carregamento fdl1/fdl2XML do firmware pac do modelo (extraído com SPD Research Tool)
Blob do CVE e endereço de pilhaTomKing062/CVE-2022-38694 soc/<chip>/
Imagens fdlExtraídas do firmware oficial do modelo (cabeçalho de assinatura DHTB)

Referências

  • ilyakurdyukov/spreadtrum_flash — upstream (MIT), src/ contém o código-fonte dos patches
  • TomKing062/CVE-2022-38694_unlock_bootloader — princípios do CVE e materiais para cada SoC
  • YC-nw/SPRDClientCore — referência de constantes de protocolo e regras de partição
  • NCC Group — UNISOC ROM Vulnerabilities

Pré-autorização do su do Magisk em dispositivos sem tela: docs/headless-magisk-su.md.

Operações no nível do BootROM apresentam risco de brick; faça backup antes e use por sua conta e risco (AS IS).

Baixar ferramenta
custom_exec_no_verify_<addr>.bin
implementação
fdl <file> <addr>Imagem FDL e endereço de carregamento na SRAM específico do SoC
disable_transcodeDeve ser enviado uma vez no início de cada novo processo (o estado persiste entre processos)
Item de verificaçãoValor
TamanhoComparado um a um com o GPT (exato em bytes)
boot / init_bootANDROID! @0
vendor_bootVNDRBOOT @0
Família vbmetaAVB0 @0, flags @0x78
splloader/trustos/uboot/fdlDHTB @0
supergDla @4096 e @8192 (dupla cópia geométrica), primeiros 4K mantidos como zero
NVNV (0x4E56) @0 ou @0x200