针对 Exynos 990 Galaxy S20、S20 FE 和 Note20 系列的 CVE-2024-56426 统一工具集。该漏洞利用接受全部十种 型号名称,并将它们映射到六个经过验证的原厂 bootloader 系列。
[!CAUTION] 所跟踪的密钥包和生成的镜像具备熔断能力。熔断是 不可逆的。熔断到某个密钥的手机只能启动与该密钥兼容的镜像。错误的型号、回滚版本、补丁集或密钥包可能使 设备陷入熔断启动循环。在迭代过程中请使用开发密钥和 UFS 载荷。 除非明确打算进行自定义密钥熔断,否则请在每条准备/签名命令中添加
--no-fuse。
所选型号同时控制 BL1 型号 ID 和精确型号 LK 补丁 TSV。Runtime artifact 控制预检使用哪个
原厂固件和加密拆分镜像。四个使用配对 5G 运行时
产物的非 5G 标志还会修补 LK 的型号 ID 检查和型号 ID 编程路径。
[!IMPORTANT] 在下面列出的原厂固件版本上,G780F、N980F、N981B、N985F 和 N986B 无法使用 UH-to-BOOTLOADER 方法进入 EUB。它们的 LK bootloader 会调用
Check_signinfo(),该函数将镜像内嵌的BinaryName(uh.bin)与 BOOTLOADER 分区的预期文件名(sboot.bin)进行比较。不匹配会产生Binaryname has changed (uh.bin) -> (sboot.bin)并拒绝刷写。在这些设备上,请使用相应的型号专用测试点进入 EUB,而不是使用 UH 方法。
| 型号标志 | 运行时产物 | 运行时固件 | 型号 ID | EVT | 回滚 | 已测试 | UH 方法 / EUB 进入方式 |
|---|---|---|---|---|---|---|---|
G780F | G780F | G780FXXSOFYJ1 | 0x154 | 11 | 24 | ❌ | 被阻止 — 使用测试点 |
G980F | G981B | G981BXXSNHYB1 | 0x143 | 11 | 23 | ✅ | 无文件名阻止 |
G981B | G981B | G981BXXSNHYB1 | 0x13D | 11 | 23 | ❌ | 无文件名阻止 |
G985F | G986B | G986BXXSNHYB1 | 0x142 | 11 | 23 | ✅ | 无文件名阻止 |
G986B | G986B | G986BXXSNHYB1 | 0x13C | 11 | 23 | ✅ | 无文件名阻止 |
G988B | G988B | G988BXXSNHYB1 | 0x13E | 11 | 23 | ❌ | 无文件名阻止 |
N980F | N981B | N981BXXSIHYH3 | 0x153 | 11 | 18 | ❌ | 被阻止 — 使用测试点 |
N981B | N981B | N981BXXSIHYH3 | 0x14E | 11 | 18 | ❌ | 被阻止 — 使用测试点 |
N985F | N986B | N986BXXSIHYH3 | 0x152 | 11 | 18 | ❌ | 被阻止 — 使用测试点 |
N986B | N986B | N986BXXSIHYH3 | 0x14D | 11 | 18 | ❌ | 被阻止 — 使用测试点 |
全部十种受支持的 Galaxy S20、S20 FE 和 Note20 型号标志都有一个可选的
仅 CLI 的 KVM 启动配置文件。构建
Exynos 990 内核 的一个分支,
其名称包含 kvm,并在精确型号命令中添加 --kvm,例如:
python3 exploit/exploit.py --build-sboot --model G985F --no-fuse --kvm
此配置文件移除 LK H-Arx/UH 路径,要求 EL3 在 EL2 进入内核,并应用匹配的 解密/重新加密 EL3 监控补丁表。对于原厂/被篡改的引导加载程序 刷写模式,它仍然不可用。Web 控制中心有意不提供 KVM 控制。配合匹配的内核 和 WindowsInQemu,Windows 可以在手机上通过 KVM 以全速在 QEMU 中运行。
不要将每种模式都视为一个编号的安装序列。请选择一个目标:
| 目标 | 路径 |
|---|---|
| 安装已签名的自定义 ROM | 精确型号/设置 → EUB → 临时 --signed --no-fuse 链 → 刷写 ROM 的完整签名输出 → UFS 首次启动 |
| 测试漏洞利用 | 可选 --prepare --no-fuse → EUB → --signed --no-fuse → 停止 |
| 开发引导链(仅 CLI) | 临时 no-fuse 测试 → 构建 → 刷写生成的 SBoot/TZSW/LDFW → UFS |
| 转储 / 恢复 | 使用其独立的工作流程和熔断状态检查 |
--prepare 执行仅主机端准备:它替换生成的工作镜像并构建和签名本地文件,
而不打开 USB。它不是只读的试运行,也不是必需的前置步骤:--signed 会重复预检。
生成的三段式 Heimdall 命令是引导链开发工具;它不是自定义 ROM 刷写。
在接触设备之前,请阅读 USER_GUIDE.md 并选择其匹配的工作流程。它包含 完整 ROM 交接以及未熔断、已熔断和不确定状态的恢复规则。
浏览器 UI 的 HTTP 服务器使用 Python 标准库,并调用现有的 exploit/exploit.py CLI。
密钥包验证和工具执行还需要 requirements.txt 中的软件包。引导链开发及其
生成的三段式 Heimdall 命令仍然是仅限终端的工具。
从仓库根目录启动它:
python3 exynos990_control_center.py
启动器绑定到 127.0.0.1,生成新的访问令牌,打印完整的本地 URL,并在默认浏览器中打开它。当不应自动打开浏览器时,使用 --no-browser:
python3 exynos990_control_center.py --no-browser
UI 提供:
它还会显示一条仅限 CLI 的 Exynos 990 KVM 提示,但有意不暴露 KVM 选项,也不将 --kvm 转发到任何
Web 操作。
USB 访问遵循启动控制中心的进程的权限。在启动前配置好随附的 udev/驱动 权限。UI 不会请求、保留或转发特权凭据。请对打印出的 令牌 URL 保密,并在使用后立即停止服务器。
终端用户可以忽略 exynos990_control_center.py;下文记录的所有 CLI 命令均保持不变并完全
受支持。
需要 Python 3.10 或更高版本。
Windows 10/11(原生 PowerShell):
.\windows\setup.ps1
. .\windows\activate.ps1
python .\exploit\exploit.py --prepare --model G985F --no-fuse
安装过程会安装固定版本的原生 AArch64 工具链、LZ4、Heimdall 以及仓库虚拟环境,然后 构建所有 payload。BootROM WinUSB 驱动需要管理员显式选择安装,因为其上游自签名 证书会更改机器的信任存储。完整安装、驱动安装、 Download Mode 区别、验证和故障排除流程请参见 WINDOWS.md。
在 Windows 激活后,在其余跨平台示例中显示 python3 的地方请使用 python。
Linux:
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu lz4
macOS:
brew tap messense/macos-cross-toolchains
brew install aarch64-unknown-linux-gnu lz4