Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
spd_dump-macos — UNISOC BootROM/FDL-Flasher für macOS: gepatchter spd_dump mit CVE-2022-38694 exec_addr2, Protokollreferenz, Partitionsregeln, Backup-Verifizierung (UMS9621) | Kitploit
Tools/GitHubGitHub/xun404/spd_dump-macos
Android-SicherheitEmbedded-System-SicherheitExploitationHardware-HackingMobile SicherheitFirmware-Analyse
GitHubxun404/spd_dump-macos

spd_dump-macos

UNISOC BootROM/FDL-Flasher für macOS: gepatchter spd_dump mit CVE-2022-38694 exec_addr2, Protokollreferenz, Partitionsregeln, Backup-Verifizierung (UMS9621)

Repository anzeigen
47vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

spd_dump for macOS

English | 简体中文

macOS-Portierung des UNISOC (Spreadtrum) BootROM/FDL-Flashtools. Basiert auf ilyakurdyukov/spreadtrum_flash (MIT), ergänzt das geschlossene spd_dump um exec_addr2 (Umgehung der Signaturprüfung CVE-2022-38694) und realisiert die gesamte Kette auf macOS (arm64 + libusb):

BootROM → CVE 越界写 → FDL1 → FDL2 → GPT 解析 → 分区读写 → reset

Verifizierte Plattform: UMS9621 (T158), Android 13, Kernel 5.15, GKI-Architektur (init_boot). Die UMS9620-Familie ist adresskompatibel; für andere SoCs siehe Anpassung.

Erstellung

Abhängigkeiten: Xcode CLT, brew install libusb.

./scripts/build-macos.sh   # 产出 ./spd_dump

Verwendung

In den Download-Modus wechseln

Im ausgeschalteten Zustand Reset (oder die dem Gerätemodell entsprechende Tastenkombination) gedrückt halten und USB einstecken. Das Gerät wird als 1782:4d00 aufgelistet. Der BootROM antwortet nur etwa 20 Sekunden nach der Enumeration; danach bleibt er stumm (USB bleibt weiterhin vorhanden). Die Automatisierung muss auf die Flanke „kein Gerät → Gerät vorhanden“ reagieren (siehe scripts/runner.sh).

FDL2 laden und Partitionstabelle lesen

./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
ParameterBeschreibung
exec_addr2 <addr>CVE-Umgehung, lädt automatisch custom_exec_no_verify_<addr>.bin; Implementierung
fdl <file> <addr>FDL-Image und SoC-spezifische SRAM-Ladeadresse
disable_transcodeMuss zu Beginn jedes neuen Prozesses einmal gesendet werden (Status bleibt über Prozesse hinweg erhalten)

Backup

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 generiert die read_part-Sequenz anhand der GPT (Fortsetzung an Unterbrechungspunkten; GPT-size in MB) und setzt für vbmeta* offline AVB flags=3 (entspricht verity 0).

Flashen

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 enthält eingebaute Partitionsregeln (runtimenv in Erase umgewandelt, fixnv/calinv übersprungen, Aliasse ohne Slot anhand der mtime dedupliziert) und hängt am Ende erase_part userdata + reset an.

Wichtige Protokollhinweise

Siehe docs/protocol-notes.md:

  • Benutzerdefinierte Befehle müssen in der Optionsparsingschleife konsumiert werden; verbose 1 beendet die Schleife vorzeitig
  • FDL2-Session überlebt Prozesse: Der Prozessabbruch beendet FDL2 nicht, Partitionsbefehle können in mehreren Stapeln ausgeführt werden
  • 0x8A (DOWN_SIZE_ERROR) wird gleichzeitig verwendet für: unabhängigen Download an geschützten Adressen, Schreiben von runtimenv, übermäßig große Leseblöcke
  • Die maximale Leseblockgröße liegt unter 0xffff, Standard 4096
  • Die NV-Partitionsfamilie (nr_fixnv1) hängt die Session beim Lesen über Namensadressierung auf; Regeln siehe docs/partition-rules.md

Backup-Prüfung

PrüfpunktWert
GrößeEinzeln mit der GPT abgeglichen (bytegenau)
boot / init_bootANDROID! @0
vendor_bootVNDRBOOT @0
vbmeta-FamilieAVB0 @0, flags @0x78
splloader/trustos/uboot/fdlDHTB @0
supergDla @4096 und @8192 (geometrische Doppelkopien), erste 4K bleiben null
NVNV (0x4E56) @0 oder @0x200

Statische Partitionen (z. B. dtb) werden mit bekannten Images desselben Typs per MD5-Quervergleich abgeglichen, wodurch die Korrektheit der Lesekette verifiziert werden kann.

Anpassung anderer SoCs

PunktQuelle
fdl1/fdl2-LadeadresseXML der PAC-Firmware des Gerätemodells (mit SPD Research Tool entpackt)
CVE-Blob und Stack-AdresseTomKing062/CVE-2022-38694 soc/<chip>/
FDL-ImageAus der offiziellen Firmware des Gerätemodells extrahiert (DHTB-Signaturkopf)

Referenzen

  • ilyakurdyukov/spreadtrum_flash — Upstream (MIT), src/ enthält den Patch-Quellcode
  • TomKing062/CVE-2022-38694_unlock_bootloader — CVE-Prinzip und Materialien für verschiedene SoCs
  • YC-nw/SPRDClientCore — Referenz für Protokollkonstanten und Partitionsregeln
  • NCC Group — UNISOC ROM Vulnerabilities

Vorautorisierung von Magisk su auf Geräten ohne Bildschirm: docs/headless-magisk-su.md.

Operationen auf BootROM-Ebene bergen das Risiko eines Bricks; zuerst ein Backup erstellen, Nutzung auf eigene Gefahr (AS IS).

Tool herunterladen