不懂就问,看网上的介绍,bootloader 目的是为限制刷第三方 rom,但为什么刷原厂 rom 也要先解 bootloader 呢?有大佬可以从 bootloader 工作原理上解惑吗?
1
yklaxds 2020-12-09 20:35:40 +08:00 via Android
9008 模式‘不解也可以刷
|
2
LUREN OP @yklaxds 除了这种,好像正常流程都要解 bootloader 。bootloader 是起到验证刷机包的功能吗,好奇为什么原厂 rom,甚至是原厂最新 rom 也要解除 bootloader 验证才能刷
|
3
billlee 2020-12-09 21:29:43 +08:00
出于防盗的考虑吧? locked bootloader 的情况下不能通过 fastboot 来抹除数据。
|
4
systemcall 2020-12-09 22:02:07 +08:00
解锁 bootloader 也只是解除了 bootloader 自己的限制,设备启动的时候如果 bootloader 的签名不对照样不能启动(所以直接换闪存一般不能启动,要把一些关键的信息保留来通过对 bootloader 的校验和 bootloader 自己的校验
感觉 bootloader 默认情况下应该是限制了启动方式外加对要启动的系统进行校验吧。还是要看平台自己的设计,我记得一些电视盒子就没有那么严格 |
5
kimgo110 2020-12-09 22:03:55 +08:00 via Android
9008 是可以完全刷成出厂状态,解锁 BL 都能重新锁回去…
|
8
mxalbert1996 2020-12-09 23:24:00 +08:00 via Android
因为通过 fastboot 刷机的操作就需要解锁,就是这么设计的。
|
9
cmostuor 2020-12-09 23:32:25 +08:00
@LUREN bootloader 负责验证 Flash 分区是否完整 是否被篡改, 验证刷机包是否完整那是 fastboot 和刷机包里的 updater 的事。 解锁 bootloader 是为了跳过前面的机制。 安卓是开源的 读那该死的代码比啥瞎比比都强
|
10
S179276SP 2020-12-09 23:34:14 +08:00 via Android
华为的出厂模式刷机貌似不需要,淘宝刷 EMUI 国行系统国际系统就这样刷的。
|
12
dingwen07 2020-12-10 02:52:29 +08:00 via iPhone
三星用官方的 odin 软件刷机就不需要,甚至可以混刷原厂 rom 。中间肯定没有解锁 bl 的过程,因为三星解锁 bl 会熔断 knox 。
|
13
Linhuai 2020-12-10 08:18:02 +08:00 via Android
来学点东西
|
15
flynaj 2020-12-10 11:22:43 +08:00 via Android 1
小米手机不用解可以刷官包,不过要用它的工具并且验证手机关联的帐户。
@taobibi 解 bootloader 就可以随意刷了。 |
17
yanheqi 2020-12-10 15:57:14 +08:00
很早前最早用 HTC 的手机看过文章,大概意思,就是厂商在那个系统存储区上加密了,加了锁,而这种锁 bootloader,你一般人根本解不开,因为厂商有专门的设备。当时我看到文章说是上百万的设备。加密了 ROM 区,你也就刷不进去,必须要用厂商的放出的方法进行 bootloader 解锁。
|
18
yanheqi 2020-12-10 15:58:05 +08:00
以前刷机,弄 xposed 在 HTC 论坛看到的,具体文章,时间久远肯定找不到了,这论坛我也早没上过了,估计也没了。
|
19
acess 2020-12-10 16:59:51 +08:00
@yklaxds
@kimgo110 9008 强刷不是什么神奇万能的东西…… 我有台稍微新点的小米(仍然很老),就是可以刷进去,但是无法正常开机,开机时只有红色警告,不能继续正常启动。 另一台更老点的机器,9008 刷进非官方固件,其实开机也仍然会警告的,但是能继续正常开机(解不解 bootloader 锁都一样)。 @TreantLee 有点好奇你说的“售后授权才能 9008”是啥意思……反正我手里的机器,最多就是短接一下主板上特定的触点就可以进了。 aleph security 博客写过这方面的东西。没记错的话,Android 机器有一条启动链:PBL->SBL->aboot->Linux kernel 原则上,每个阶段,都会验证下一个阶段要执行的程序代码的数字签名,如果数字签名无效,就拒绝启动。 其中 PBL ( primary bootloader )烧写固化在芯片内,不可更新。短接法进 9008 应该就是这个阶段起作用,最后救砖手段。 SBL ( secondary bootloader ),反正我手里的机器是写在 EMMC (啊,低端机器,没办法)闪存上的。短接 D+/GND 的“USB 深度刷机线”就是这个阶段起的作用。 aboot 就是一般说的 bootloader 、fastboot 了,一般解锁解的就是这一个阶段,说白了和上面都一样,就是程序里写了个条件判断。 然后 aboot 会加载执行保存在 boot 分区的东西,除了 Linux 内核,还有 ramdisk 、启动参数之类的东西(嗯,新机器可能都用 System-as-root,甚至没有 ramdisk 了?) 最后,Linux kernel 启动后,按照配置,会继续验证 system 分区的数字签名(通过 dm-verity,所以 magisk 需要修改 boot 分区才能解除这个限制)。 |
20
acess 2020-12-10 17:06:32 +08:00
就我的理解,改写闪存里面保存的东西( SBL 、aboot 、boot 分区、system 分区……),想改总是可以改的,最不济还可以把闪存芯片用热风枪吹下来。
所以刷机锁最关键的地方并不是拒绝你刷写,而是你刷了非官方以后,能通过检查数字签名发现了刷了非官方,然后拒绝启动——虽然闪存上的东西能改,但是 PBL 是固化不能改的,一切一切的根源都来自 PBL,所以才把 PBL 叫“信任根”。(苹果的 checkm8 漏洞,就是 PBL 的限制被人研究出办法来绕过了) |
21
acess 2020-12-10 17:13:33 +08:00
aboot 这个阶段,有个条件判断来控制是否“解锁”,解锁了就允许刷入、启动执行任意内容,否则就只能是原厂的东西。
一般来说,需要把机器序列号什么的提交给官方申请解锁,官方对其数字签名,然后刷机工具把这个数字签名给 aboot,aboot 就知道自己被允许解锁了,会写一个标志位,然后 aboot 就根据这个标志位判断是否是解锁状态。 印象里,以前有些机型,把这个标志位放到闪存上了,于是就可以绕过官解,直接解锁。 其他的机型估计就麻烦了,貌似还动用了高通 efuse 之类的复杂技术。 |
22
TreantLee 2020-12-10 23:34:42 +08:00
@acess 疑似 firehose 加密 用户自己用 qfil 或 miflash 刷会报错 用小米售后的账户登录 miflash 可正常刷机 而且现在云端开启查找手机授权也没法 9008 刷 但是某些机型特定版本系统还是可以免授权的
|
23
TreantLee 2020-12-10 23:36:38 +08:00
@S179276SP 我猜你在说三键 那基于 erecovery 还是 recovery 和 fastboot 没什么关系 甚至能改写分区表 分区镜像官方才能刷写
|
24
acess 2020-12-11 00:02:27 +08:00
@TreantLee 别的我不知道,其实 QFIL 的刷写器程序(下载到手机上执行的)本来就应该是保密的吧……也许是小米的刷写器里面做了什么限制吧。刷写器本身也有数字签名,没签名不能执行。
|
25
acess 2020-12-11 00:05:46 +08:00
@TreantLee 虽然刷写器也需要有数字签名,但是含有(带有效数字签名的)刷写器的“线刷救砖包”貌似一直以来都不太保密,再加上有些机型锁 bootloader 并没有严格贯彻签名不对就拒绝启动的政策,所以“9008 强刷”才成为广为人知的坊间传闻。
也许就是小米在这方面改了?每次刷入时,都需要一个类似申请 bootloader 解锁的程序,向官方服务器提交机器序列号,等官方服务器签名了,才能刷?嗯,我啥也不知道,纯瞎猜的…… |
26
S179276SP 2020-12-11 01:07:56 +08:00 via Android
@TreantLee 也不是 3 键,淘宝刷机的叫我下载个远程 temaview,然后他把我的 usb 口连到一个 IP 地址,然后我的手机就进入到 出厂模式,就开始刷机了,应该是手机刚从工厂生产出来,准备装系统的模式,可以绕过 bootloader 。
|
27
yolee599 2020-12-11 08:55:35 +08:00 via Android
现在出的机型,解 bootloader 之前储存是加密的
|
28
yolee599 2020-12-11 09:07:41 +08:00 via Android
@TreantLee 我刷过,自己的电脑安装 teamviewer,再安装一个远程 usb 映射软件,手机进入 fastboot 模式插上电脑,然后别人远程操作,帮你解锁 bootloader 和安装第三方 recovery 。大概步骤应该是 dump 某个分区的数据,分析,然后改一下,再写回去。要是当时有抓包就好了。
|
29
TreantLee 2020-12-12 15:44:52 +08:00
|
30
uriah 2020-12-15 05:06:42 +08:00
moto fastboot 升级刷机 平级刷机无需解锁 bl
|