为什么 fastboot 线刷要先解 bootloader,即使刷的原厂 rom - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LUREN
V2EX    Android

为什么 fastboot 线刷要先解 bootloader,即使刷的原厂 rom

  •  
  •   LUREN 2020-12-09 20:34:10 +08:00 16617 次点击
    这是一个创建于 1777 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不懂就问,看网上的介绍,bootloader 目的是为限制刷第三方 rom,但为什么刷原厂 rom 也要先解 bootloader 呢?有大佬可以从 bootloader 工作原理上解惑吗?

    32 条回复    2021-01-05 13:37:50 +08:00
    yklaxds
        1
    yklaxds  
       2020-12-09 20:35:40 +08:00 via Android
    9008 模式‘不解也可以刷
    LUREN
        2
    LUREN  
    OP
       2020-12-09 20:38:28 +08:00
    @yklaxds 除了这种,好像正常流程都要解 bootloader 。bootloader 是起到验证刷机包的功能吗,好奇为什么原厂 rom,甚至是原厂最新 rom 也要解除 bootloader 验证才能刷
    billlee
        3
    billlee  
       2020-12-09 21:29:43 +08:00
    出于防盗的考虑吧? locked bootloader 的情况下不能通过 fastboot 来抹除数据。
    systemcall
        4
    systemcall  
       2020-12-09 22:02:07 +08:00
    解锁 bootloader 也只是解除了 bootloader 自己的限制,设备启动的时候如果 bootloader 的签名不对照样不能启动(所以直接换闪存一般不能启动,要把一些关键的信息保留来通过对 bootloader 的校验和 bootloader 自己的校验
    感觉 bootloader 默认情况下应该是限制了启动方式外加对要启动的系统进行校验吧。还是要看平台自己的设计,我记得一些电视盒子就没有那么严格
    kimgo110
        5
    kimgo110  
       2020-12-09 22:03:55 +08:00 via Android
    9008 是可以完全刷成出厂状态,解锁 BL 都能重新锁回去…
    TreantLee
        6
    TreantLee  
       2020-12-09 22:31:27 +08:00
    @yklaxds 小米新机型加入了限制了 只有售后授权才能 9008
    TreantLee
        7
    TreantLee  
       2020-12-09 22:35:13 +08:00
    @billlee 应该不是 recovery 直接恢复出厂啊 登录账号之类 倒是通常的恢复出厂也解不掉
    mxalbert1996
        8
    mxalbert1996  
       2020-12-09 23:24:00 +08:00 via Android
    因为通过 fastboot 刷机的操作就需要解锁,就是这么设计的。
    cmostuor
        9
    cmostuor  
       2020-12-09 23:32:25 +08:00
    @LUREN bootloader 负责验证 Flash 分区是否完整 是否被篡改, 验证刷机包是否完整那是 fastboot 和刷机包里的 updater 的事。 解锁 bootloader 是为了跳过前面的机制。 安卓是开源的 读那该死的代码比啥瞎比比都强
    S179276SP
        10
    S179276SP  
       2020-12-09 23:34:14 +08:00 via Android
    华为的出厂模式刷机貌似不需要,淘宝刷 EMUI 国行系统国际系统就这样刷的。
    cmostuor
        11
    cmostuor  
       2020-12-09 23:34:49 +08:00
    @cmostuor 纠正 验证刷机包是否完整那是 recovery 和刷机包里的 updater 的事
    dingwen07
        12
    dingwen07  
       2020-12-10 02:52:29 +08:00 via iPhone
    三星用官方的 odin 软件刷机就不需要,甚至可以混刷原厂 rom 。中间肯定没有解锁 bl 的过程,因为三星解锁 bl 会熔断 knox 。
    Linhuai
        13
    Linhuai  
       2020-12-10 08:18:02 +08:00 via Android
    来学点东西
    taobibi
        14
    taobibi  
       2020-12-10 10:53:26 +08:00
    @TreantLee 这样说来现在国行的小米已经没法刷国际版 ROM 解锁谷歌全家桶了?
    flynaj
        15
    flynaj  
       2020-12-10 11:22:43 +08:00 via Android   1
    小米手机不用解可以刷官包,不过要用它的工具并且验证手机关联的帐户。
    @taobibi 解 bootloader 就可以随意刷了。
    LUREN
        16
    LUREN  
    OP
       2020-12-10 15:30:59 +08:00
    @flynaj 不用解可以刷官包指的是用它那个小米助手吗?不用解属于卡刷还是线刷?
    yanheqi
        17
    yanheqi  
       2020-12-10 15:57:14 +08:00
    很早前最早用 HTC 的手机看过文章,大概意思,就是厂商在那个系统存储区上加密了,加了锁,而这种锁 bootloader,你一般人根本解不开,因为厂商有专门的设备。当时我看到文章说是上百万的设备。加密了 ROM 区,你也就刷不进去,必须要用厂商的放出的方法进行 bootloader 解锁。
    yanheqi
        18
    yanheqi  
       2020-12-10 15:58:05 +08:00
    以前刷机,弄 xposed 在 HTC 论坛看到的,具体文章,时间久远肯定找不到了,这论坛我也早没上过了,估计也没了。
    acess
        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 分区才能解除这个限制)。
    acess
        20
    acess  
       2020-12-10 17:06:32 +08:00
    就我的理解,改写闪存里面保存的东西( SBL 、aboot 、boot 分区、system 分区……),想改总是可以改的,最不济还可以把闪存芯片用热风枪吹下来。
    所以刷机锁最关键的地方并不是拒绝你刷写,而是你刷了非官方以后,能通过检查数字签名发现了刷了非官方,然后拒绝启动虽然闪存上的东西能改,但是 PBL 是固化不能改的,一切一切的根源都来自 PBL,所以才把 PBL 叫“信任根”。(苹果的 checkm8 漏洞,就是 PBL 的限制被人研究出办法来绕过了)
    acess
        21
    acess  
       2020-12-10 17:13:33 +08:00
    aboot 这个阶段,有个条件判断来控制是否“解锁”,解锁了就允许刷入、启动执行任意内容,否则就只能是原厂的东西。
    一般来说,需要把机器序列号什么的提交给官方申请解锁,官方对其数字签名,然后刷工具把这个数字签名给 aboot,aboot 就知道自己被允许解锁了,会写一个标志位,然后 aboot 就根据这个标志位判断是否是解锁状态。
    印象里,以前有些机型,把这个标志位放到闪存上了,于是就可以绕过官解,直接解锁。
    其他的机型估计就麻烦了,貌似还动用了高通 efuse 之类的复杂技术。
    TreantLee
        22
    TreantLee  
       2020-12-10 23:34:42 +08:00
    @acess 疑似 firehose 加密 用户自己用 qfil 或 miflash 刷会报错 用小米售后的账户登录 miflash 可正常刷机 而且现在云端开启查找手机授权也没法 9008 刷 但是某些机型特定版本系统还是可以免授权的
    TreantLee
        23
    TreantLee  
       2020-12-10 23:36:38 +08:00
    @S179276SP 我猜你在说三键 那基于 erecovery 还是 recovery 和 fastboot 没什么关系 甚至能改写分区表 分区镜像官方才能刷写
    acess
        24
    acess  
       2020-12-11 00:02:27 +08:00
    @TreantLee 别的我不知道,其实 QFIL 的刷写器程序(下载到手机上执行的)本来就应该是保密的吧……也许是小米的刷写器里面做了什么限制吧。刷写器本身也有数字签名,没签名不能执行。
    acess
        25
    acess  
       2020-12-11 00:05:46 +08:00
    @TreantLee 虽然刷写器也需要有数字签名,但是含有(带有效数字签名的)刷写器的“线刷救砖包”貌似一直以来都不太保密,再加上有些机型锁 bootloader 并没有严格贯彻签名不对就拒绝启动的政策,所以“9008 强刷”才成为广为人知的坊间传闻。
    也许就是小米在这方面改了?每次刷入时,都需要一个类似申请 bootloader 解锁的程序,向官方服务器提交机器序列号,等官方服务器签名了,才能刷?嗯,我啥也不知道,纯瞎猜的……
    S179276SP
        26
    S179276SP  
       2020-12-11 01:07:56 +08:00 via Android
    @TreantLee 也不是 3 键,淘宝刷机的叫我下载个远程 temaview,然后他把我的 usb 口连到一个 IP 地址,然后我的手机就进入到 出厂模式,就开始刷机了,应该是手机刚从工厂生产出来,准备装系统的模式,可以绕过 bootloader 。
    yolee599
        27
    yolee599  
       2020-12-11 08:55:35 +08:00 via Android
    现在出的机型,解 bootloader 之前储存是加密的
    yolee599
        28
    yolee599  
       2020-12-11 09:07:41 +08:00 via Android
    @TreantLee 我刷过,自己的电脑安装 teamviewer,再安装一个远程 usb 映射软件,手机进入 fastboot 模式插上电脑,然后别人远程操作,帮你解锁 bootloader 和安装第三方 recovery 。大概步骤应该是 dump 某个分区的数据,分析,然后改一下,再写回去。要是当时有抓包就好了。
    TreantLee
        29
    TreantLee  
       2020-12-12 15:44:52 +08:00
    @S179276SP 工厂是刷写烧录包,在工程系统下检验,之后 sd 卡升级到正常系统,三键是有线刷的,开机(开生产模式)确实可以直接转成三键线刷模式
    @yolee599 如果是有解锁码的解 bl ( emui<=9 )读(其实是写随机数字或者 16 个 0 )解锁码是开机下才能进行啊
    如果你说的是海思 710_810_820_970_980_985_990 解 bl 其实是从 fastboot 引导到 com1.0 写的
    分析倒不至于 买行业现成的软件
    uriah
        30
    uriah  
       2020-12-15 05:06:42 +08:00
    moto fastboot 升级刷机 平级刷机无需解锁 bl
    idrawer
        31
    idrawer  
       2021-01-05 09:56:20 +08:00
    @acess 您好,也就是说短接手机机身上一些触点进入的 bootloader 和使用工程线进入的层级是不同对吗
    acess
        32
    acess  
       2021-01-05 13:37:50 +08:00
    @idrawer 这两个办法要进的,都是高通紧急下载模式( EDL,又称 9008 ),不是 fastboot 。区别应该就是检测是否进入 9008 的时机不一样。打个可能不恰当的比方,就好像 Win8 以后,结合 UEFI 启动,进 BIOS 可以是开机时按 DEL 键(不同品牌按键不一样,有不少机器来不及按),也可以是系统进去以后,键盘按住 SHIFT 的同时鼠标点开始菜单的重启,然后选择进入“UEFI 固件设置”。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2351 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 15:50 PVG 23:50 LAX 08:50 JFK 11:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86