刷机基础知识
第一章:刷机常见术语
一、adb
1. 什么是 adb?
Android 调试桥(adb)是一种开发工具,用于促进 Android 设备与个人计算机之间的通信。这种通信通常通过 USB 线进行,但也支持 Wi-Fi 连接。
adb 就像是 Android 开发的“瑞士军刀”。它提供了许多功能,详细描述可以通过命令 adb --help 查看。
2. 安装 adb
1️⃣ 下载 adb 程序 platform-tools Windows zip。
2️⃣ 解压到 %USERPROFILE%\platform-tools 里面。
3️⃣ 配置环境变量
搜索“高级系统设置”。
选择“查看高级系统设置”。
点击“高级选项卡”。
打开“环境变量”窗口。
在“系统变量”下选择 Path 变量并点击“编辑”按钮。
点击“新建”按钮。
在文本字段中插入 %USERPROFILE%\platform-tools。
4️⃣ 安装驱动。
5️⃣ 开启开发者选项,且开启 USB 调试。
6️⃣ 验证:数据线连接电脑,执行 adb devices。
3. 常用命令
# 在设备上启动一个 shell
adb shell
# 将文件 <local> 推送到 <remote>
adb push <local> <remote>
# 将文件 <remote> 拉取到 <local>。如果未指定 <local>,它将拉取到当前文件夹
adb pull <remote> [<local>]
# 正常重启到系统
adb reboot
# 重启到恢复模式
adb reboot recovery
# 重启到引导加载程序 (Fastboot)
adb reboot bootloader
# 重启到 sideload 模式 (用于侧载更新)
adb reboot sideload二、Fastboot
1. 什么是 Fastboot?
Fastboot 在手机上的角色相当于电脑中 BIOS。在 fastboot 模式下,您可以输入 fastboot devices 来验证您的设备是否能够被检测到。
主要功能:
- Bootloader 操作:解锁或锁定设备的 Bootloader。
- 刷写系统:可以刷入系统镜像、引导程序和恢复分区。
- 分区管理:擦除或修复设备分区。
- 系统维护:执行各种底层系统操作。
2. 常用命令
1)基本操作命令
# 检查设备连接
fastboot devices
# 重启到正常系统
fastboot reboot
# 重启到 Recovery 模式
fastboot reboot recovery
# 重启到 Bootloader
fastboot reboot bootloader2)boot.img 相关命令
# 刷写 boot 分区 (替换 boot.img)
fastboot flash boot boot.img
# 临时启动 boot 镜像 (不刷入)
fastboot boot boot.img
# 备份原始 boot 分区
fastboot dump boot boot_backup.img3)获取 root 相关操作
# 解锁 Bootloader (不同设备可能有特定命令)
fastboot oem unlock
fastboot flashing unlock # 较新设备
# Magisk 安装过程 (总体流程)
# 1. 先备份原 boot.img
fastboot dump boot boot_original.img
# 2. 使用 Magisk App 修补 boot.img 生成 magisk_patched.img
# 3. 刷入修补后的 boot 镜像
fastboot flash boot magisk_patched.img
# 某些设备需要禁用 AVB 验证
fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img4)其他有用命令
# 擦除分区
fastboot erase [partition_name]
# 刷写 recovery 分区
fastboot flash recovery recovery.img
# 刷写 system 分区
fastboot flash system system.img
# 刷写 vendor 分区
fastboot flash vendor vendor.img
# 刷写 dtbo 分区
fastboot flash dtbo dtbo.img第二章:设备过环境
一、Play Integrity (PI)
文章参考:Play Integrity API - replacement for SafetyNet | XDA Forums
您是否遇到过这样的问题:
- Google Wallet (数字钱包) 非接触式支付 (NFC) 无法使用 - “设备未能满足安全要求”。
- Play 商店报告您的设备与应用程序不兼容。
- Play Protect 报告“此设备未经认证”。
- 其他 SafetyNet / Play Integrity 相关问题。
1. 基本认识
[1] 什么是 Play Integrity?
Play Integrity 是一种 API,应用程序用来确定设备兼容性和安全状态。它在很大程度上取代了 SafetyNet,并设定了截止日期为 2025 年 1 月,届时 Google 的 SafetyNet 服务器将下线。一旦发生这种情况,继续仅依赖 SafetyNet 的应用程序将不再工作。大多数开发者已经迁移到 Play Integrity。
[2] Play Integrity 与 SafetyNet (SN) 有什么不同?
在很多方面,它非常相似。它使用了许多与 SafetyNet 相同的检查,但响应变得更简单了一些。
与 SafetyNet 类似,Play Integrity 允许应用开发者根据其对目标环境的要求选择分级执行策略。
[3] Play Integrity 和 Play Protect 是一样的吗?
不一样。Play Integrity 为用户提供了验证设备兼容性和安全性的功能,就像 SafetyNet 一样。Play Protect 是 Play 商店的一部分,确保您的设备经过认证,并帮助防止恶意软件。然而,Play Protect 认证结果确实取决于您的 DEVICE_INTEGRITY 结果。请参见此处。
注意:您的 Play 认证可能会滞后于您的完整性判定。有可能即使您未通过 DEVICE_INTEGRITY,Play 商店仍然报告“设备已认证”,反之亦然 —— 即使您通过了,它也可能仍报告“未认证”。要解决这个问题,请清除 Play 商店数据。
[4] 为什么这很重要?
与 SafetyNet 类似,许多支付、银行和 DRM (数字版权管理) 应用程序使用此 API 来确定设备的兼容性和安全状态。未通过判定可能会限制您安装和使用这些应用程序的能力。
2. Play Integrity API 级别
MEETS_BASIC_INTEGRITY
- 设备不满足 Android 兼容性要求,未被批准运行 Google Play 服务。例如,设备可能正在运行无法识别的 Android 版本、有已解锁的引导加载程序,或者没有经过制造商的认证。
MEETS_DEVICE_INTEGRITY
- 应用程序正在由 Google Play 服务提供支持的 Android 设备上运行。设备通过了系统完整性检查,并且满足 Android 兼容性要求。例如:设备通过 Google 认证,但是 BL 解锁且获取了 Root。
MEETS_STRONG_INTEGRITY
应用程序正在由 Google Play 服务提供支持且具有强有力的系统完整性保证(如由硬件提供支持的启动完整性保证)的 Android 设备上运行。设备通过了系统完整性检查,并且满足 Android 兼容性要求。例如:设备未被 root + 无自定义 ROM + 系统未被修改 + 强硬件安全保证。
说白了就是手机买回来后,正常使用。一旦 Root 了设备,很难达到这个级别。
MEETS_VIRTUAL_INTEGRITY (了解,模拟器才看这个)
- 虚拟环境验证。确认设备不是模拟器(虚拟化环境中运行),是真实的物理设备。
更多参考:配置 API 响应
3. 如何知道我的设备是否通过了 Play Integrity 检查?
方法一:Play 商店
1️⃣ 点击右上角的个人资料图标,进入设置 ==> 关于 ==> 连续点击 8 次 Play 商店版本。这将解锁 Play 商店中的开发者模式。
2️⃣ 现在进入设置 ==> 常规 ==> 开发者选项 ==> 检查完整性。
方法二:应用程序
① Play Integrity API Checker【推荐】
② TB Checker - Play Integrity
此应用不仅检查 Play Integrity 判决,还检查 root、Magisk 和 Xposed 的痕迹。
③ 密钥认证【推荐】
可查看密钥认证详情。
④ YASNAC - SafetyNet 检查器
注意:谷歌关闭了 SafetyNet 服务器,此软件无法正常使用了。
二、TEE
TEE (可信执行环境, Trusted Execution Environment) 是移动设备(智能手机、平板电脑、智能电视)CPU上的一块区域。这块区域的作用是给数据和代码的执行提供一个更安全的空间,并保证它们的机密性和完整性。
Key Attestation 中的 keybox.xml 就存储于 TEE。
三、KeyStore
KeyStore 是 Android 提供的安全密钥管理系统,用于存储和管理密码学密钥,提供高级别的安全保障。密钥保存在硬件安全模块 (HSM) 或可信执行环境 (TEE) 。举个安全支付应用使用 KeyStore 流程的例子:
- 用户首次设置
- 用户安装支付应用并完成账户注册。
- 应用要求用户设置支付 PIN 码或使用生物识别 (指纹 / 面容) 。
- 在后台,应用使用 KeyStore 生成支付凭证密钥,并与用户生物识别绑定。
- KeyStore 将密钥安全存储在 TEE / 安全硬件中。
- 日常使用场景
- 用户打开支付应用并浏览商品。
- 用户选择商品并点击"支付"按钮。
- 应用显示支付确认界面并请求生物识别验证。
- 用户提供 pin、指纹或面容识别。
- 安全验证过程
- 生物识别通过后,应用请求访问 KeyStore 中的支付密钥。
- KeyStore 验证用户身份后授予应用使用密钥的临时权限。
- 应用使用密钥对交易数据进行签名 (在 TEE 内完成) 。
- 签名后的交易数据安全发送到支付服务器。
四、Key Attestation
Key Attestation 是 Android 提供的一项安全验证机制,用于证明加密密钥是否真正在设备的安全硬件中生成和存储。
制造阶段(设备生产时)
- 根证书预置:设备在制造过程中,Google 的 Hardware Attestation Root 证书被烧录到 TEE 中。
- 设备证书生成:制造商为每台设备生成唯一的 attestation 密钥对。
- 证书签名:制造商使用其中间证书对设备 attestation 密钥进行签名。
- 安全存储:这些密钥和证书被安全存储在设备
keybox.xml中,并保护在 TEE 内。
应用请求 Key Attestation(运行时)
- 应用生成挑战值:应用创建一个随机挑战值 (challenge) 。
- 密钥生成请求:应用请求 KeyStore 生成带 attestation 的密钥,并传入挑战值。
- 请求转发:KeyStore 将请求转发给 TEE。
TEE 内部证书链形成
- 密钥生成:在 TEE 内部创建新的应用密钥对。
- 证书创建:使用设备 attestation 私钥创建一个新证书,包含:
- 新生成密钥的公钥。
- 密钥属性(用途、限制等)。
- 设备状态信息(bootloader 状态等)。
- 对挑战值的签名。
- 证书链构建:TEE 构建完整证书链,自下而上为:
- 第一层:刚刚创建的应用密钥证书。
- 第二层:设备 attestation 证书(制造时预置)。
- 第三层:制造商中间证书。
- 顶层:Google Hardware Attestation Root 证书。
- 返回结果:TEE 将完整证书链返回给应用(私钥保留在 TEE 中)。
证书验证(通常在服务器端)
- 应用将证书链发送到后端服务器
- 服务器从顶部开始验证整个链:
- 验证Google根证书的有效性
- 使用Google根证书验证制造商证书
- 使用制造商证书验证设备证书
- 使用设备证书验证应用密钥证书
- 验证挑战值是否正确签名
- 检查设备状态信息