lildebil0/revvl7pro-bootloader-research

GitHub: lildebil0/revvl7pro-bootloader-research

对 T-Mobile REVVL 7 Pro 5G (SM6450) 的 bootloader 运营商锁定机制进行静态逆向工程,提取了 RSA-2048 公钥、重建了三阶段认证流程并完整记录了锁定架构。

Stars: 0 | Forks: 0

# REVVL 7 Pro 5G — 引导加载器锁定研究 ### T-Mobile 运营商引导加载器锁定在 Qualcomm SM6450 (Wingtech Pinehurst) 上的静态逆向工程

License: MIT Platform SoC ODM Carrier Status

🌐 语言 / 语言

   

## 🇷🇺 俄语 ### 📋 关于本仓库 本仓库记录了 **T-Mobile REVVL 7 Pro 5G(型号 `TMRV07P5G`,代号 `Pinehurst`)上运营商锁定机制的完整逆向工程**。该设备基于 Qualcomm Snapdragon 6 Gen 1 (SM6450),ODM 为 Wingtech,运行 Android 14/16。 目标是 **为未来的研究者记录锁定架构**,而不发布可用的利用代码。 ### 🔑 关键发现 | 发现 | 详情 | |------|------| | ABL 格式 | ELF32 ARM 封装 (QC MBN) → UEFI FV → AARCH64 PE32+ `LinuxLoader.efi` (924 KB) | | 构建来源 | `TMO_S88823AA1` Jenkins 构建 + CAF EDK2 `QcomModulePkg` (公开源码) | | `flashing unlock` 命令 | 被 T-Mobile/Wingtech **物理移除** 自调度表 | | 替代方案 | 3 阶段签名认证: `oem auth_start` → 主机签名 → `oem permission ` | | 嵌入的公钥 | **4 个 RSA-2048 密钥** (V016, Android 16): EDL / AUTH / FACTORY / **NEW** (Android 16 新增, `cef06bcf...`) — 均为 DER + SHA256, 在仓库中 | | `oem permission` 模式 | 仅接受 `auth` (AUTH 密钥) 和 `factory` (FACTORY 密钥)。EDL 和 NEW 公钥硬编码在 `auth_start` (EDL) 和 `factory_auth_start` (NEW) 处理器中,**不能通过 `permission` 访问** | | 持久化 | 位于 `0xda448` 的 DevInfo 结构,偏移 `+0xD`/`+0xE` 用于 `is_unlocked`/`is_critical_unlocked` | | FRP 门控 | `/dev/block/by-name/frp` 最后一个字节的位 0 = `IsAllowUnlock` | | OEM 锁定 GUID | `C0DD69AC-76BA-11E6-AB24-1FC7F5575F19` — Qualcomm 自定义 OEM 锁定协议命名空间 | | V016 基线 | 构建 `823AA1_W_V016` (BQ2A.250925.001, 补丁 2026-01-05)。`oem auth_start` (0x57f1c) 和 `oem permission` (0x584f4) 的处理器偏移在 A14 和 V016 之间 **位级相同** — 代码库稳定 | ### 📚 文档 **核心分析 (Track A):** - [docs/ru/findings.md](docs/ru/findings.md) — 完整分析报告 - [docs/ru/architecture.md](docs/ru/architecture.md) — ABL 架构: ELF → UEFI FV → PE32+ - [docs/ru/auth-flow.md](docs/ru/auth-flow.md) — T-Mobile 3 阶段认证 (处理器 0x584f4) - [docs/ru/methodology.md](docs/ru/methodology.md) — 方法论: 零预算, 无变砖约束 **扩展研究:** - [docs/ru/avb-chain.md](docs/ru/avb-chain.md) — **AVB 链分析 (Track B)** — RSA-4096 根, 6 个 hash/hashtree 分区, AVB 外部增量 - [docs/ru/sibling-intel.md](docs/ru/sibling-intel.md) — **同系 SM6450 Wingtech 设备 (Track D)** — 交叉引用方法学 - [docs/ru/kernel-cve-survey.md](docs/ru/kernel-cve-survey.md) — **内核 CVE 调查 (Track E)** — 双层模型, 层 A vs 层 B - [docs/ru/phone-probes.md](docs/ru/phone-probes.md) — **运行时探测 (在线设备)** — 确认静态模型 **V016 基线 (Android 16 OTA, 2026-05-24):** - [docs/en/lock-architecture.md](docs/en/lock-architecture.md) — **完整架构图** — 存储层, OEM 锁定 EFI_GUID, vtable 协议, 读取/写入处理器, 启动链, 锁定状态机。包含明确的职责范围/边界章节 (第 10 节) - [docs/en/key-lifecycle.md](docs/en/key-lifecycle.md) — **HSM 到设备的 RSA 密钥生命周期**,涵盖 4 个阶段 (生成/嵌入/制造/解锁流程)。公私钥托管分析 - [docs/en/v016-deep-dive.md](docs/en/v016-deep-dive.md) — **V016 ABL 发现** — 27 条目的调度器, 构建来源 (`TMO_S88823AA1` Jenkins), 4 个 RSA 公钥清单, vbmeta 指纹 - [docs/en/research-notes/a14-v046-search-queries.md](docs/en/research-notes/a14-v046-search-queries.md) — 定位 A14 时代 OTA 的研究路径 **数据 + 复现:** - [data/dispatcher-table.md](data/dispatcher-table.md) — 完整 fastboot 调度表 - [data/unlock-state-machine.md](data/unlock-state-machine.md) — DevInfo 写入状态机 - [data/code-snippets.md](data/code-snippets.md) — 反编译 C 代码片段 (关键处理器) - [pubkeys/pubkeys.md](pubkeys/pubkeys.md) — RSA 公钥分析 (3 个原始 + V016 `tmo_new_pubkey.{der,pem,info}` 用于第 4 个 NEW 密钥) - [reproduce/extraction.md](reproduce/extraction.md) — 复现: 如何提取 LinuxLoader.efi - [reproduce/probe-scripts/fastboot_oem_probe.cmd](reproduce/probe-scripts/fastboot_oem_probe.cmd) — 只读 OEM/getvar 枚举脚本 (无变异) - [scripts/README.md](scripts/README.md) — Ghidra Java 脚本 (Track A) + Python 工具 (V016 基线) - [scripts/revvl_ablverifier.py](scripts/revvl_abl_verifier.py) — PE32+ 分析器,包含 RSA 公钥扫描器, AVB 检测, 字符串分类器, 调度器启发式 - [scripts/revvl_fv_extract.py](scripts/revvl_fv_extract.py) — QC MBN → UEFI FV → LZMA 压缩 FFS → PE32+ 链解包 (仅 stdlib lzma) ### 🔬 运营商锁定架构 ``` flowchart TB A[oem auth_start
handler 0x57f1c
hardcodes EDL pubkey 0xcb43c] -->|generates nonce internally| AS[nonce stored, not exposed] AF[oem factory_auth_start
handler 0x584e0
hardcodes NEW pubkey 0xcb7ae] -->|trampoline to auth_start body| AS PE[oem permission
handler 0x584f4
consumes stage buffer] PE -->|mode= auth| EM[strcmp lookup table] PE -->|mode= factory| EM EM -->|match auth| EV[bl 0x58d88
RSA-2048 verify
AUTH pubkey 0xcb562] EM -->|match factory| FV[bl 0x58d88
RSA-2048 verify
FACTORY pubkey 0xcb688] EM -->|no match| WM[wrong mode arg!] EV -->|OK| H[Set IsAllowUnlock
DevInfo write via
OEM Lock vtable protocol
EFI_GUID C0DD69AC-...] FV -->|OK| H EV -->|FAIL| KW[decrypt failed, key's wrong] FV -->|FAIL| KW H -->|+FRP bit-0 set| FU[flashing unlock
writes UNLOCKED descriptor
to devinfo partition] ``` 参见 [docs/en/lock-architecture.md](docs/en/lock-architecture.md) 了解完整架构图,包括启动链 (PBL → XBL → ABL → libavb → kernel) 和锁定状态机。 ### 🎯 现实结论 **没有 T-Mobile 的 RSA-2048 私钥或加密实现中的缺陷——仅靠软件解锁不可行。** 三个独立的加密门控 + FRP 位门控 + AVB 链。 本仓库是 **未来研究的完整攻击面地图**,而非可工作的解锁方案。 ### 📦 仓库结构 ``` . ├── docs/ │ ├── ru/ — Документация на русском (Track A-E) │ └── en/ — English docs + V016 baseline (2026-05-24) │ ├── lock-architecture.md — Full arch map │ ├── key-lifecycle.md — HSM-to-device key chain │ ├── v016-deep-dive.md — V016 ABL findings │ └── research-notes/ — Research path notes ├── pubkeys/ — 4 extracted RSA-2048 pubkeys (DER+PEM+info) │ EDL / AUTH / FACTORY (Track A) + NEW (V016) ├── scripts/ — Ghidra Java скрипты + Python analysis tools │ (revvl_abl_verifier.py, revvl_fv_extract.py) ├── data/ — Dispatcher table, state machine, snippets ├── reproduce/ — Step-by-step extraction + read-only probe scripts ├── LICENSE — MIT └── DISCLAIMER.md — Юридический disclaimer ``` ### ⚖️ 许可证 [MIT](LICENSE)。仅限静态研究,基于美国法典第 17 篇第 1201(f) 条 (为互操作性进行逆向工程) 及类似的俄罗斯/国际法规。 ## 🇬🇧 英语 ### 📋 关于本仓库 本仓库记录了 **T-Mobile REVVL 7 Pro 5G(型号 `TMRV07P5G`,代号 `Pinehurst`)上运营商锁定机制的完整逆向工程**。该设备基于 Qualcomm Snapdragon 6 Gen 1 (SM6450),ODM 为 Wingtech,运行 Android 14/16。 目标是 **为未来的研究者记录锁定架构**,而不发布可用的利用代码。 ### 🔑 关键发现 | 发现 | 详情 | |------|------| | ABL 格式 | ELF32 ARM 封装 (QC MBN) → UEFI FV → AARCH64 PE32+ `LinuxLoader.efi` (924 KB) | | 构建来源 | `TMO_S88823AA1` Jenkins 构建 + CAF EDK2 `QcomModulePkg` (公开源码) | | `flashing unlock` 命令 | 被 T-Mobile/Wingtech **物理移除** 自调度表 | | 替代方案 | 3 阶段签名认证: `oem auth_start` → 主机签名 → `oem permission ` | | 嵌入的公钥 | **4 个 RSA-2048 密钥** (V016, Android 16): EDL / AUTH / FACTORY / **NEW** (Android 16 新增, `cef06bcf...`) — 均为 DER + SHA256, 在仓库中 | | `oem permission` 模式 | 仅接受 `auth` (AUTH 密钥) 和 `factory` (FACTORY 密钥)。EDL 和 NEW 公钥硬编码在 `auth_start` (EDL) 和 `factory_auth_start` (NEW) 处理器中,**不能通过 `permission` 访问** | | 持久化 | 位于 `0xda448` 的 DevInfo 结构,偏移 `+0xD`/`+0xE` 用于 `is_unlocked`/`is_critical_unlocked` | | FRP 门控 | `/dev/block/by-name/frp` 最后一个字节的位 0 = `IsAllowUnlock` | | OEM 锁定 GUID | `C0DD69AC-76BA-11E6-AB24-1FC7F5575F19` — Qualcomm 自定义 OEM 锁定协议命名空间 | | V016 基线 | 构建 `823AA1_W_V016` (BQ2A.250925.001, 补丁 2026-01-05)。`oem auth_start` (0x57f1c) 和 `oem permission` (0x584f4) 的处理器偏移在 A14 和 V016 之间 **位级相同** — 代码库稳定 | ### 📚 文档 **核心分析 (Track A):** - [docs/en/findings.md](docs/en/findings.md) — 完整分析报告 - [docs/en/architecture.md](docs/en/architecture.md) — ABL 架构: ELF → UEFI FV → PE32+ - [docs/en/auth-flow.md](docs/en/auth-flow.md) — T-Mobile 3 阶段认证 (处理器 0x584f4) - [docs/en/methodology.md](docs/en/methodology.md) — 方法论: 零预算, 无变砖约束 **扩展研究:** - [docs/en/avb-chain.md](docs/en/avb-chain.md) — **AVB 链分析 (Track B)** — RSA-4096 根, 6 个 hash/hashtree 分区, AVB 外部增量 - [docs/en/sibling-intel.md](docs/en/sibling-intel.md) — **同系 SM6450 Wingtech 设备 (Track D)** — 交叉引用方法学 - [docs/en/kernel-cve-survey.md](docs/en/kernel-cve-survey.md) — **内核 CVE 调查 (Track E)** — 双层模型, 层 A vs 层 B - [docs/en/phone-probes.md](docs/en/phone-probes.md) — **运行时探测 (在线设备)** — 确认静态模型 **V016 基线 (Android 16 OTA, 2026-05-24):** - [docs/en/lock-architecture.md](docs/en/lock-architecture.md) — **完整架构图** — 存储层, OEM 锁定 EFI_GUID, vtable 协议, 读取/写入处理器, 启动链, 锁定状态机。包含明确的职责范围/边界章节 (第 10 节) - [docs/en/key-lifecycle.md](docs/en/key-lifecycle.md) — **HSM 到设备的 RSA 密钥生命周期**,涵盖 4 个阶段 (生成/嵌入/制造/解锁流程)。公私钥托管分析 - [docs/en/v016-deep-dive.md](docs/en/v016-deep-dive.md) — **V016 ABL 发现** — 27 条目的调度器, 构建来源 (`TMO_S88823AA1` Jenkins), 4 个 RSA 公钥清单, vbmeta 指纹 - [docs/en/research-notes/a14-v046-search-queries.md](docs/en/research-notes/a14-v046-search-queries.md) — 定位 A14 时代 OTA 的研究路径 **数据 + 复现:** - [data/dispatcher-table.md](data/dispatcher-table.md) — 完整 fastboot 调度表 - [data/unlock-state-machine.md](data/unlock-state-machine.md) — DevInfo 写入状态机 - [data/code-snippets.md](data/code-snippets.md) — 反编译 C 代码片段 (关键处理器) - [pubkeys/pubkeys.md](pubkeys/pubkeys.md) — RSA 公钥分析 (3 个原始 + V016 `tmo_new_pubkey.{der,pem,info}` 用于第 4 个 NEW 密钥) - [reproduce/extraction.md](reproduce/extraction.md) — 复现: 如何提取 LinuxLoader.efi - [reproduce/probe-scripts/fastboot_oem_probe.cmd](reproduce/probe-scripts/fastboot_oem_probe.cmd) — 只读 OEM/getvar 枚举脚本 (无变异) - [scripts/README.md]() — Ghidra Java 脚本 (Track A) + Python 工具 (V016 基线) - [scripts/revvl_abl_verifier.py](scripts/revvl_abl_verifier.py) — PE32+ 分析器,包含 RSA 公钥扫描器, AVB 检测, 字符串分类器, 调度器启发式 - [scripts/revvl_fv_extract.py](scripts/revvl_fv_extract.py) — QC MBN → UEFI FV → LZMA 压缩 FFS → PE32+ 链解包 (仅 stdlib lzma) ### 🔬 运营商锁定架构 ``` flowchart TB A[oem auth_start
handler 0x57f1c
hardcodes EDL pubkey 0xcb43c] -->|generates nonce internally| AS[nonce stored, not exposed] AF[oem factory_auth_start
handler 0x584e0
hardcodes NEW pubkey 0xcb7ae] -->|trampoline to auth_start body| AS PE[oem permission
handler 0x584f4
consumes stage buffer] PE -->|mode= auth| EM[strcmp lookup table] PE -->|mode= factory| EM EM -->|match auth| EV[bl 0x58d88
RSA-2048 verify
AUTH pubkey 0xcb562] EM -->|match factory| FV[bl 0x58d88
RSA-2048 verify
FACTORY pubkey 0xcb688] EM -->|no match| WM[wrong mode arg!] EV -->|OK| H[Set IsAllowUnlock
DevInfo write via
OEM Lock vtable protocol
EFI_GUID C0DD69AC-...] FV -->|OK| H EV -->|FAIL| KW[decrypt failed, key's wrong] FV -->|FAIL| KW H -->|+FRP bit-0 set| FU[flashing unlock
writes UNLOCKED descriptor
to devinfo partition] ``` 参见 [docs/en/lock-architecture.md](docs/en/lock-architecture.md) 了解完整架构图,包括启动链 (PBL → XBL → ABL → libavb → kernel) 和锁定状态机。 ### 🎯 现实结论 **没有 T-Mobile 的 RSA-2048 私钥或加密实现中的缺陷——仅靠软件解锁不可行。** 三个独立的加密门控 + FRP 位门控 + AVB 链。 本仓库是 **未来研究的完整攻击面地图**,而非可工作的解锁方案。 ### 📦 仓库结构 ``` . ├── docs/ │ ├── ru/ — Russian documentation (Tracks A-E) │ └── en/ — English docs + V016 baseline (2026-05-24) │ ├── lock-architecture.md — Full arch map │ ├── key-lifecycle.md — HSM-to-device key chain │ ├── v016-deep-dive.md — V016 ABL findings │ └── research-notes/ — Research path notes ├── pubkeys/ — 4 extracted RSA-2048 pubkeys (DER+PEM+info) │ EDL / AUTH / FACTORY (Track A) + NEW (V016) ├── scripts/ — Ghidra Java scripts + Python analysis tools │ (revvl_abl_verifier.py, revvl_fv_extract.py) ├── data/ — Dispatcher table, state machine, snippets ├── reproduce/ — Step-by-step extraction + read-only probe scripts ├── LICENSE — MIT └── DISCLAIMER.md — Legal disclaimer ``` ### ⚖️ 许可证 [MIT](LICENSE)。仅限静态研究,基于美国法典第 17 篇第 1201(f) 条 (为互操作性进行逆向工程) 及类似的国际法规。
标签:AARCH64, Android, bootloader lock, carrier-lock, DSL, EDK2, MBN格式, PE32+, Pinehurst, Qualcomm SM6450, RSA-2048, Snapdragon 6 Gen 1, T-Mobile REVVL 7 Pro 5G, UEFI, Wingtech, 云安全监控, 云资产清单, 域名枚举, 引导加载器, 目录枚举, 移动安全, 认证流程, 调度表, 运营商锁, 逆向工具, 逆向工程, 静态分析