吧务
level 10
有人知道最新的vivo手机那一步限制了获取root权限,自从接触root以来就没碰过vivo手机。
听网友说不让解bl锁;但也有人说刷入非官方的boot或第三方rec系统会校验是吧无法开机(那是不是能解锁bl锁)。
2023年06月17日 02点06分
1
吧务
level 10
引用资料-刷机:
0. JTAG工具 手机主芯片上有一些特殊的管脚,可以连接到Trace32调试器上,通过配套软件,能对手机内部的几乎任何东西进行读写,DDR、寄存器、eMMC等,还能控制上面程序运行,相当之厉害,常用于非常早期的研发。Trace32硬件设备和软件设备都很贵,一般人甚至企业都不会买。一般在前期软硬件调通后,都不会再留这些管脚的接头,以优化PCB布线以及节省成本。我们买到的手机原则上都没法再接JTAG。
1. 烧录机烧录 在工厂生产时,有可能会在eMMC焊接前,预先将系统镜像烧录到eMMC芯片中,这个过程是使用专门的高速烧录机批量烧录大量的eMMC。一般个人或研发单位不会用这个方式。高速烧录机也不便宜。就算是烧了eMMC芯片,脱离工厂环境也很难批量把它焊到板子上。
2. Qualcomm Emergency Download 高通的紧急下载模式,简写EDL,也就是题主提到的9008强刷。当手机上的eMMC是全新的没有任何数据和程序,或者通过短接某些管脚,在开机时就会自动进到这个模式。进入此模式后,用USB线连上电脑,电脑上会出现一个名字叫9008的串口设备,所以被人称作9008模式。此时通过特定的工具软件就可以对eMMC进行任何操作,重分区、写镜像等。一部分工厂生产时可能用到此模式进行在线烧录。研发时也偶尔会用这种模式进行某些彻底刷机。此模式会影响分区表,在使用时,一定要确认分区表信息是否跟手机匹配,否则可能丢分区。
3. Fastboot Fastboot模式是Bootloader(启动代码)中的一个特殊模式,平常正常开机是不会跑到这个里面去的,只有按住某些按键或使用特别的重启命令,才会跑到这个模式。在fastboot下,可以连电脑用fastboot命令对eMMC的擦除或烧录。Android BSP系统软件开发过程中,会经常使用此模式。此模式通常不会改动分区表(除非下的就更新分区表的命令以)。如果bootloader被改坏,进不了fastboot模式,就只能用9008去重刷bootloader了。
4. Recovery更新模式 这个是Android标准的系统更新模式,可以用热键或特殊命令进入此模式。在这个模式下,可以通过菜单或adb sidload命令更新指定的刷机包。也可进行数据清空等操作。一般玩家多用此模式进行刷机。开发过程中,应用程序开发部门及软件测试部门也多用此模进行刷机。要进到此模式,前提是bootloader和recovery镜像都是好的。否则要先用9008或fastboot命令先搞好准备工作。
5. 系统自动更新或更新向导更新 开机进到系统后,系统自己检测到网站或手机存储器里有更新包,提示用户更新,用户确认后会自动重启进行更新。这个动作,原理就是在手机的某个位置写了一个更新信息,然后重启到Recovery更新模式,再利用这个信息进行的系统更新。平常大都是使用的这种方式,最安全最傻瓜最方便。要使用这种方式,前提是系统要完好,能正常开机才行。
2023年06月17日 02点06分
3
吧务
level 10
引用资料-校验:
ARM、手机芯片厂、Google Android及手机研发部门通过专门的硬件和软件机制实现了Secboot及Verifying Boot这一整套验证流程。确保手机上运行的Bootloader 、系统内核及Android 系统都是原厂的,任一部分被替换成第三方的都会导致开机时验证系统失败无法启动。也就是在一部启用了Secboot及Verifying Boot并且没解BL锁的机器上,用以上任何方式都只能刷原厂镜像。
然后还利用了数据加密技术,让存储在手机里的用户数据都是加密过的,使用任何工具在关机后读取到的eMMC中的用户数据都无法正常查看(可以防止别人用烧录机读eMMC)。使用了Android的权限管理系统对App的权限进行限制,防止机器运行时非法软件对各种数据的窃取。使用了SeLinux对系统底层权限进行原格限制,就算Android层面被攻破,底下还有一层保护(这也是为什么手机越来越难root的原因之一)。 以上机制细节很多,可能涉及一些不可公开文档,不在此详述。
一个正规则厂商会严格按照上面的方法对手机进行锁定,以保证手机数据的安全。当中任一环节出现问题,都会导致安全机制失效。BL锁通常是控制fastboot和Recovery刷机的那一部分。一旦解开BL锁,允许刷第三方镜像,那就可以刷一个关掉了SeLinux并用root工具穿透Android的权限管理的系统镜像,就有可能导致用户数据不安全。 所以按正常的机制,“安卓手机保护用户个人信息不被非法读取,实现这一点,需要BL锁” 有部分厂商的手机,没有启用Secboot,只是软件上限制了Fatstboot和Recovery,能通过9008刷第三方镜像,绕开了BL锁,实际上是不规范和不安全的。有的厂商默认不开启数据加密,也有一定安全风险。 原则上,启用了SecBoot且不解锁也没Root并启用了数据加密的手机才是一部安全的手机。
2023年06月17日 02点06分
4
吧务
level 10
引用资料-BL锁:
Android系统的启动或更新过程大致如下:正常启动: 芯片内部固化的BootROM -> Bootloader -> (Linux kernel)-> system.img(Android)OTA刷机包更新: Bootloader -> 更新OTA刷机包fastoot刷机: Bootloaer->烧写分区镜像
BL锁一般是锁两个方向:1. Bootloader会去检查它加载的镜像boot.img或recovery.img的签名信息,这个签名只有手机原厂能做出来。修改过后的或第三方镜像的签名不存在或无效,Bootloader会拒绝继续启动。boot.img会去检查system镜像签名,如果不是原厂的,拒绝启动。recovery会去检查OTA刷机包的签名,不是原厂的拒绝更新。2. 一般出厂机器会禁用常规Bootloader的直接刷机功能。以上这个流程,其实是secure boot规范的一部分,主要有两个目的:1. 防止用户刷入第三方ROM, 导致系统出现不可逆的损坏,增加售后服务支持和维修成本2. 防止不明系统窃取手机的底层机密信息,比如,HDCP秘钥,各种钱包数据,这些东西应用甚至android系统层都无法直接接触到(一般从硬件层面加密过),但刷入不明ROM会大大增加泄露破解的风险。也因此,有些机器发现被root之后,钱包功能会被永久禁用。secure boot是很多服务供应商(收费视频,手机支付,生物特征识别等)要求手机oem厂商必须做到的。
Bootloader锁的解锁原理:在某处存放一个标志,标识有没有解锁,如果解锁了,就放开以上限制。存放这个标志的位置在解锁前第三方app是没有权限读写的,所以不可能绕过官方解锁流程。正常的解锁过程一般跟电脑软件的注册码实现原理相当,解锁软件根据手机硬件特征生成中间码,把中间码发给服务器,服务器进行某种加密传回来写入特定位置,bootloader会在这个位置检查解锁信息是否合法,合法就写入已解锁的标志,就可以刷入并加载第三方镜像了。解锁码的生成过程一般会用到非对称加密外加私有算法,几乎不可破解,即使拿到原代码也做不到。
所谓bootloader锁,就是bootloader程序里自带一个条件判断,比如如果有个标志位是1,就放开限制,允许执行非官方的内核;否则必须先通过数字签名验证,确认有官方有效签名,再执行。这个标志位,粗心的厂商会放在闪存上,所以有的型号就存在漏洞,不向官方申请即可直接解锁。正经一些的方案是把这个标志放到芯片提供的熔丝上。熔丝有硬件的(物理不可逆,熔断一根就永久断了,不能复原),也有软件的。这个熔丝只能在特殊的可信环境里操作。顺便说一下,为了保护系统完整性,除了bl锁,还有其他加强措施比如阻止回滚(也就是回滚保护)。到官方申请解锁,就是你提交手机硬件特征给厂商,厂商进行签名,再发回给你。然后你再用fastboot把它发给手机,让bootloader检查。如果bootloader验证签名有效,就会修改标志位,允许解锁,然后一般还会进行抹除用户数据的操作(我见到的一台手机,貌似是交给recovery处理的,所以非官方recovery可能就不理会这个要求,然后数据就侥幸保留下来了——不过bootloader想直接下手清掉用户数据好像也不是不可能)。还有高通9008强刷,这个好像就是一些厂商没有完全锁死,搞成“验证签名不通过仍然允许启动”的样子,不知道是出于疏忽还是故意。
但是,Bootloader加锁并不意味着就不能刷机,还是有一些劫持开机强制引导等的技术方式来绕过签名检查,但是很难完美。
2023年06月17日 02点06分
5
吧务
level 10
引用资料-手机启动:
手机启动流程一般是PBL->SBL->aboot->boot其中只有PBL固化在芯片内部,其他东西都保存在闪存上。如果你知道怎么让PBL进下载模式(比如楼上说的短接主板管脚,高通9008的一种进入方法就是这样),那这台手机应该就算是刷不死了吧。楼上说的刷坏aboot其实还不算最糟糕的情况,更糟糕的是刷坏SBL,这种情况下短接USB D+/D-的工程线也是无能为力的,但是短接测试点进9008还能救回来。SBL呢,刚刚说的“工程线”或者说“深度刷机线”,就是SBL在识别并作出反应。刷坏aboot也有可能走这个途径救活。一般说的bootloader在aboot里,fastboot就是它在支持。boot里有Linux内核、ramdisk、命令行之类的东西,ramdisk里有dm-verity的哈希树和签名,可以验证system分区的数据是不是官方的(所以twrp都提供只读挂载system分区的选项,因为只要可写挂载一次system,哪怕不动文件,也会触发dm-verity)。每一级程序都知道下一级的公钥(或公钥的哈希),执行下一级程序前要先验证数字签名。私钥只有官方有。数据有任何改动都会使原有签名无效。除非这些程序存在漏洞,否则不解锁只有可能启动官方固件。
2023年06月17日 02点06分
6
吧务
level 10
引用资料-PC:
类比PC的话,现在PC都用UEFI,也有安全启动么,也是用数字签名来验证的。(顺便说一下,UEFI只是个规范,厂商是按照这个规范自己去实现)一般电脑都没有搞成刷机锁那种程度(UEFI本身就可以免疫鬼影、暗云那种MBR bootkit,安全启动也许可以防止kon-boot这种东西,不过微软的引导器好像爆过好几个漏洞,所以我不确定),甚至可以直接关掉安全启动。不过好像有些平板是这样的(以前好像因为微软泄漏了一个东西,绰号SecureGoldenKeyBoot,搞得一些设备上整个安全启动体系都可以被绕过了,我不知道到底影响面多大),据说用户也可以自己配置成那种程度。UEFI固件,也就是BIOS,地位和PBL类似。可想而知,如果BIOS都被攻破了,那这个机器就变成黑客案板上的肉了。至于SBL和aboot,我觉得差不多等同于EFI系统分区(也就是ESP)里面的东西,一般就是微软的bootmgfw.efi之类的,也许还能算上系统分区里的winload.efi。顺便说一下,该死的微软,从Win8开始就把F8在桌面机上干掉了(不仅是UEFI,传统BIOS也是一样的政策),好在不是完全干掉,可以bcdedit /set {default} bootmenupolicy legacy调回来。你看,开机按住音量键进fastboot或recovery,这操作是不是和电脑上开机按F8进安全模式挺像呢。至于boot,这个大概就相当于微软的系统内核文件ntoskrnl.exe、一众启动时加载的驱动,与启动有关的注册表项,还有BCD(引导配置数据库)吧。我不知道上面说的winload.efi是不是应该归到这里……
2023年06月17日 02点06分
7
level 1
以前是可以走漏洞解锁bl但是内核反su而且不开源,所以vivo就特有了vivosu和suu以及timesu的root,自从谷歌发布通用内核映像后阻止vivo手机root的最大障碍就是无法解bl锁
2023年06月17日 18点06分
8