Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
spd_dump-macos — UNISOC BootROM/FDL прошивальщик для macOS: пропатченный spd_dump с CVE-2022-38694 exec_addr2, справочник по протоколу, правила разделов, проверка резервных копий (UMS9621) | Kitploit
Инструменты/GitHubGitHub/xun404/spd_dump-macos
Безопасность AndroidБезопасность встроенных системЭксплуатацияАппаратный ХакингМобильная безопасностьАнализ Прошивок
GitHubxun404/spd_dump-macos

spd_dump-macos

UNISOC BootROM/FDL прошивальщик для macOS: пропатченный spd_dump с CVE-2022-38694 exec_addr2, справочник по протоколу, правила разделов, проверка резервных копий (UMS9621)

Репозиторий
481 месяц назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

spd_dump for macOS

English | 简体中文

Порт инструмента прошивки BootROM/FDL UNISOC (Spreadtrum) для macOS. Основан на ilyakurdyukov/spreadtrum_flash (MIT), дополняет закрытый spd_dump командой exec_addr2 (обход проверки подписи CVE-2022-38694) и реализует полный конвейер на macOS (arm64 + libusb):

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

Проверено на: UMS9621 (T158), Android 13, kernel 5.15, архитектура GKI (init_boot). Адреса совместимы с семейством UMS9620; для других SoC см. адаптацию.

Сборка

Зависимости: Xcode CLT, brew install libusb.

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

Использование

Вход в режим загрузки

В выключенном состоянии (без питания) удерживайте Reset (или соответствующую комбинацию клавиш для вашей модели) и вставьте USB: устройство определится как 1782:4d00. BootROM отвечает только в течение примерно 20 секунд после определения, затем замолкает (USB остаётся); для автоматизации нужно срабатывать по фронту «нет → есть» (см. scripts/runner.sh).

Загрузка FDL2 и чтение таблицы разделов

./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
ПараметрОписание
exec_addr2 <addr>Обход CVE; автоматически загружает custom_exec_no_verify_<addr>.bin; реализация
fdl <file> <addr>Образ FDL и адрес загрузки в SRAM для данного SoC
disable_transcodeДолжен отправляться один раз в начале каждого нового процесса (состояние сохраняется между процессами)

Резервное копирование

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 по GPT формирует последовательность read_part (возобновление с места прерывания; единица size в GPT — МБ), и офлайн-устанавливает для vbmeta* флаги AVB flags=3 (эквивалент verity 0).

Прошивка

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 содержит встроенные правила для разделов (runtimenv преобразуется в стирание, fixnv/calinv пропускаются, псевдонимы без слотов дедуплицируются по mtime); в конце добавляется erase_part userdata + reset.

Ключевые особенности протокола

Подробнее в docs/protocol-notes.md:

  • Пользовательские команды должны обрабатываться в цикле разбора опций; verbose 1 преждевременно завершает этот цикл
  • Сессия FDL2 переживает процессы: выход из процесса не завершает FDL2, команды разделов можно выполнять партиями
  • 0x8A (DOWN_SIZE_ERROR) также используется для: отдельной загрузки по защищённым адресам, записи runtimenv, слишком больших блоков чтения
  • Максимальный размер блока чтения меньше 0xffff, по умолчанию 4096
  • Чтение семейства NV-разделов (nr_fixnv1) по имени подвешивает сессию; правила см. в docs/partition-rules.md

Проверка резервной копии

Проверяемый элементЗначение
РазмерСверка с GPT по каждому разделу (побайтово)
boot / init_bootANDROID! @0
vendor_bootVNDRBOOT @0
Семейство vbmetaAVB0 @0, flags @0x78
splloader/trustos/uboot/fdlDHTB @0
supergDla @4096 и @8192 (геометрическая двойная копия), первые 4 КБ остаются нулями
NVNV (0x4E56) @0 или @0x200

Статические разделы (dtb и т. п.) сверяются по md5 с известными образами той же модели — так можно убедиться в корректности цепочки чтения.

Адаптация для других SoC

ЭлементИсточник
Адреса загрузки fdl1/fdl2XML из pac-прошивки модели (распаковано с помощью SPD Research Tool)
CVE blob и адрес стекаTomKing062/CVE-2022-38694 soc/<chip>/
Образы fdlИзвлечено из официальной прошивки модели (заголовок с подписью DHTB)

Ссылки

  • ilyakurdyukov/spreadtrum_flash — апстрим (MIT), src/ содержит исходники патчей
  • TomKing062/CVE-2022-38694_unlock_bootloader — принцип CVE и материалы для разных SoC
  • YC-nw/SPRDClientCore — справочник по константам протокола и правилам разделов
  • NCC Group — UNISOC ROM Vulnerabilities

Предварительная авторизация Magisk su на устройствах без экрана: docs/headless-magisk-su.md.

Операции на уровне BootROM несут риск превратить устройство в «кирпич»; сначала сделайте резервную копию, всё на ваш страх и риск (AS IS).

Скачать инструмент