Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
spd_dump-macos — macOS용 UNISOC BootROM/FDL 플래셔: CVE-2022-38694 exec_addr2로 패치된 spd_dump, 프로토콜 참조, 파티션 규칙, 백업 검증 (UMS9621) | Kitploit
도구/GitHubGitHub/xun404/spd_dump-macos
Android SecurityEmbedded Systems SecurityExploitationHardware HackingMobile SecurityFirmware Analysis
GitHubxun404/spd_dump-macos

spd_dump-macos

macOS용 UNISOC BootROM/FDL 플래셔: CVE-2022-38694 exec_addr2로 패치된 spd_dump, 프로토콜 참조, 파티션 규칙, 백업 검증 (UMS9621)

저장소 보기
1124일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

macOS용 spd_dump

English | 简体中文

UNISOC(展锐) BootROM/FDL 플래싱 도구의 macOS 포팅. ilyakurdyukov/spreadtrum_flash(MIT) 기반으로, 클로즈드 소스 spd_dump의 exec_addr2(CVE-2022-38694 서명 검증 우회)를 보완하고, macOS(arm64 + libusb)에서 전체 체인을 완성했다:

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

검증 플랫폼: UMS9621(T158), Android 13, kernel 5.15, GKI(init_boot) 아키텍처. UMS9620 계열 주소 호환; 다른 SoC는 적응 참조.

빌드

의존성: Xcode CLT, brew install libusb.

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

사용

다운로드 모드 진입

전원을 끈 상태에서 Reset(또는 기종에 맞는 키 조합)을 누른 채 USB를 연결하면 장치가 1782:4d00으로 열거된다. BootROM은 열거 후 약 20초 동안만 응답하며 이후에는 응답하지 않는다(USB는 계속 유지됨). 자동화는 장치의 '없음→있음' 엣지 트리거로 수행해야 한다(scripts/runner.sh 참조).

FDL2 로드 및 파티션 테이블 읽기

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
인자설명
exec_addr2 <addr>CVE 우회, custom_exec_no_verify_<addr>.bin 자동 로드; 구현

백업

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는 GPT를 기준으로 read_part 시퀀스를 생성하며(중단점에서 이어받기 가능, GPT size 단위는 MB), vbmeta*에는 오프라인으로 AVB flags=3을 설정한다(verity 0과 동일).

플래싱

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에는 파티션 규칙이 내장되어 있다(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 참조.

백업 검증

정적 파티션(dtb 등)은 알려진 동일 기종 이미지와 md5 교차 대조를 수행하여 읽기 체인의 정확성을 검증할 수 있다.

다른 SoC 적응

항목출처
fdl1/fdl2 로드 주소기종 pac 펌웨어 XML(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).

도구 다운로드
fdl <file> <addr>FDL 이미지 및 SoC 관련 SRAM 로드 주소
disable_transcode새 프로세스 시작 시마다 반드시 한 번 전송해야 함(상태가 프로세스 간에 잔존함)
검증 항목값
크기GPT와 항목별로 대조(바이트 단위 정확)
boot / init_bootANDROID! @0
vendor_bootVNDRBOOT @0
vbmeta 계열AVB0 @0, flags @0x78
splloader/trustos/uboot/fdlDHTB @0
supergDla @4096 및 @8192(기하 이중 복사본), 첫 4K는 0 유지
NVNV(0x4E56) @0 또는 @0x200