Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2024-56426 — CVE-2024-56426 Exynos9830 Bootrom 漏洞利用 - SM-G985F | Kitploit
工具/GitHubGitHub/xcracker000/cve-2024-56426
Android安全嵌入式系统安全漏洞利用逆向工程硬件黑客移动安全硬件安全Payload 开发固件分析二进制利用
GitHubxcracker000/cve-2024-56426

CVE-2024-56426

41271个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2024-56426 Exynos9830 Bootrom 漏洞利用 - SM-G985F

查看仓库

SM-G985F / Exynos9830 Bootrom 漏洞利用

[!CAUTION] 当前的密钥包和生成的文件具备熔断(fusing)能力。一旦设备被熔断, eFuse 更改将不可逆,并且设备必须继续使用与该熔断密钥匹配的引导镜像和密钥材料。 由于熔断行为,使用这些文件或流程的风险自负; 所有后果均由运行它们的用户承担。在运行任何熔断流程之前,请核实 eFuse 文件、私钥、 已签名的 FWBL1、LK / sboot.bin 镜像以及目标设备。

目录

  • 仓库结构
  • 环境要求
  • 镜像准备
  • Payload 构建
  • 已签名 SBoot 镜像生成
  • 漏洞利用模式
  • Exynos 9830 引导链
  • Exynos 9830 镜像布局
  • 加载地址
  • 引导源 ID
  • 转储 /mem Payload
  • 上游归属
  • 致谢

仓库结构

路径用途
bootLoaderFiles/引导加载程序二进制文件、拆分后的引导加载程序部件、原始镜像、解密镜像和转储产物。
bootromNotes/Boot ROM 笔记、流程图和 USB 上下文偏移量。
exploit/Python 工具、漏洞利用运行器、拆分/合并脚本、payload 构建辅助工具和 SoC 数据。
exploit/extra/images/漏洞利用流程所使用的工作引导加载程序镜像。
exploit/extra/payloads/从 external/payloads/ 复制的已构建 payload 二进制文件。
external/Payload 源码、构建 Makefile、反编译笔记、共享密钥材料和辅助工具。
external/keys/exynos9830_crecker/签名加载器流程所使用的共享 Exynos9830 / Exynos990 自定义密钥包。
exynos990reverseEng/Exynos 990 逆向工程项目文件。

环境要求

Linux 工具链

sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu

macOS 工具链

brew tap messense/macos-cross-toolchains
brew install aarch64-unknown-linux-gnu

Python 依赖

python3 -m pip install -r requirements.txt

requirements.txt 包含 coloredlogs、cryptography、hexdump、libusb、pyusb 和 pycryptodome。

Windows USB 驱动

在 Windows 上,BootROM USB 设备 04e8:1234 必须使用 WinUSB/libusb 兼容 驱动,PyUSB 才能打开它。参见 exploit/windows/README.md。

仓库在 exploit/windows/Exynos_USB_Device.inf 处包含一个 WinUSB 驱动包, 其匹配的目录文件和证书导入文件位于同一目录中。

镜像准备

拆分 sboot.bin

python3 exploit/split.py bootLoaderFiles/originalSboot_K/sboot.bin -o exploit/extra/images

拆分脚本会将镜像部件和 split_manifest.json 文件写入输出目录。

修补 LK 自定义密钥

LK 镜像必须为自定义密钥流程使用 ROM 安全启动密钥 2 命令 ID:

密钥 1 命令值密钥 2 命令值
CMD_W_ROM_SEC_BOOT_KEY10x001CMD_W_ROM_SEC_BOOT_KEY20x016
CMD_W_USE_ROM_SEC_BOOT_KEY10x002CMD_W_USE_ROM_SEC_BOOT_KEY20x017
CMD_C_ROM_SEC_BOOT_KEY10x100CMD_C_ROM_SEC_BOOT_KEY20x114
CMD_R_USE_ROM_SEC_BOOT_KEY10x101CMD_R_USE_ROM_SEC_BOOT_KEY20x115

在 Ghidra 项目中应用 LK 补丁 TSV 时,辅助工具是通过 Ghidra headless 模式这样调用的:

GHIDRA=/path/to/ghidra_12.0.4_PUBLIC
REPO=$(pwd)
"$GHIDRA/support/analyzeHeadless" "$REPO/exynos990reverseEng" exynos990 \
  -process lk.bin \
  -noanalysis \
  -scriptPath "$REPO/external/ghidra" \
  -postScript ApplyLkPatches.java "$REPO/external/ghidra/lk_985_selected_patches.tsv"

将 32 字节的 eFuse 密钥嵌入 lk.bin 偏移 0x205008 处,替换原厂密钥:

dd if=external/keys/exynos9830_crecker/crecker.efuse of=exploit/extra/images/lk.bin bs=1 seek=$((0x205008)) count=32 conv=notrunc
xxd -g1 -s $((0x205008)) -l 32 exploit/extra/images/lk.bin

合并拆分部件

python3 exploit/merge.py exploit/extra/images Exynos9830

合并脚本会将 sboot.bin 写入当前工作目录。

Payload 构建

构建 external/payloads/ 下的 payload 项目,并将生成的二进制文件复制到 exploit/extra/payloads/:

./exploit/build_payloads.sh
Payload输出路径用途
mem.binexploit/extra/payloads/mem.binBoot ROM 内存转储 payload。
loader.binexploit/extra/payloads/loader.bin--ufs 使用的 UFS 路径 payload。
Exynos990_boot_custom_key.binexploit/extra/payloads/Exynos990_boot_custom_key.bin--signed 使用的自定义密钥签名加载器 payload。

UFS 加载器和自定义密钥 payload 在构建时会嵌入 32 字节的 efuse 文件。 默认情况下,Makefile 读取 external/keys/exynos9830_crecker/crecker.efuse; 需要时可通过 CUSTOM_KEY_EFUSE=/path/to/crecker.efuse 覆盖。

已签名 SBoot 镜像生成

由 exploit/exploit.py 运行的预检步骤会在每次签名运行前对 exploit/extra/images/ 中的 SBoot 镜像集进行就地重新签名。不会保留单独的签名 输出。签名步骤使用有意纳入版本控制的共享密钥包,位于 external/keys/exynos9830_crecker/ 下。

在仓库根目录对完整镜像集执行等效命令:

python3 external/tools/sign_sboot_images.py \
  --images-dir exploit/extra/images \
  --keys-dir external/keys/exynos9830_crecker

将签名以下镜像:

镜像使用的密钥材料回滚版本
fwbl1.imgBL1 私钥 + Stage2 TEE/REE 公钥23
epbl.imgStage2 TEE 私钥23
bl2.imgStage2 REE 私钥23
lk.binStage2 REE 私钥23
el3_mon.imgStage2 TEE 私钥23
ldfw.imgStage2 TEE 私钥,内部 + 外部23
tzsw.imgStage2 TEE 私钥,内部 + 外部23

批量签名器为每个镜像传入十进制 23,并且不会重用 现有 footer 中已有的旧回滚值。

如需要,epbl.img 会先重新加密,再对最终字节进行签名。 如果 ldfw.img 和 tzsw.img 的 AVB 内容需要刷新,则仍需要外部 AVB 流程。

仅 FWBL1 的命令为:

python3 external/tools/sign_tool.py \
  -i exploit/extra/images/fwbl1.img \
  -o exploit/extra/images/fwbl1.img \
  -k external/keys/exynos9830_crecker/crecker_private.pem \
  -H external/keys/exynos9830_crecker/crecker.hmac \
  -s 0x3000 \
  -r 23 \
  -ma 0x9830 \
  -m 0x142 \
  -e 11 \
  -t external/keys/exynos9830_crecker/crecker_stage2_tee_pubkey.bin \
  -re external/keys/exynos9830_crecker/crecker_stage2_ree_pubkey.bin

当 sign_tool.py、fwbl1.img 和 crecker_* 文件位于当前目录时的简短形式:

python3 sign_tool.py -i fwbl1.img -o fwbl1.img -k crecker_private.pem -H crecker.hmac -s 0x3000 -r 23 -ma 0x9830 -m 0x142 -e 11 -t crecker_stage2_tee_pubkey.bin -re crecker_stage2_ree_pubkey.bin

漏洞利用模式

除非另有说明,请在仓库根目录运行命令。

命令模式默认 payload说明
python3 exploit/exploit.py --ufsUFS 路径loader.bin启动 UFS payload 流程。
python3 exploit/exploit.py --signed签名引导链Exynos990_boot_custom_key.bin重新签名 SBoot 镜像集,发送镜像。
python3 exploit/exploit.py --dumpBoot ROM 转储mem.bin接收 0x20000 字节并写入 exynos990.bootrom.bin。

设备流程说明

下载工具