android 解锁程序,锁定/解锁引导加载程序  |  Android 开源项目  |  Android Open Source Project...

默认情况下,大多数 Android 设备都附带一个已锁定的引导加载程序,这意味着用户无法刷写引导加载程序或设备分区。如果需要,您(以及启用了开发者选项的设备用户)可以解锁引导加载程序以刷写新映像。

解锁引导加载程序

如需解锁引导加载程序并允许重新刷写分区,请在设备上运行 fastboot flashing unlock 命令。设置完毕后,解锁模式会在重新启动后保留。

除非 get_unlock_ability 设置为 1,否则设备应拒绝 fastboot flashing unlock 命令。如果设置为 0,用户需要启动到主屏幕,依次转到“设置”>“系统”>“开发者选项”菜单,然后启用 OEM 解锁选项(此操作会将 unlock_ability 设置为 1)。设置完毕后,此模式会在重新启动和恢复出厂设置后保留。

发送 fastboot flashing unlock 命令后,设备应提示用户,警告他们非官方映像可能存在问题。在用户确认收到警告后,设备应恢复出厂设置,以防止未经授权的数据访问。即使引导加载程序无法正确对设备执行重新格式化,也应重置设备。只有在恢复出厂设置后,才能设置持久标志,以便重新刷写设备。

所有尚未覆盖的 RAM 都应在 fastboot flashing unlock 过程中被重置。此措施可防止出现读取上次启动剩余 RAM 内容的攻击。同样,解锁的设备应在每次启动时清除 RAM(除非这样做会造成不可接受的延迟),但应保留供内核的 ramoops 使用的区域。

锁定引导加载程序

如需锁定引导加载程序并重置设备,请在设备上运行 fastboot flashing lock 命令。打算零售的设备应以锁定状态发货(get_unlock_ability 返回 0),以确保攻击者不能通过安装新的系统或启动映像来入侵设备。

设置锁定/解锁属性

ro.oem_unlock_supported 属性应在构建时根据设备是否支持刷写解锁来设置。

如果设备支持刷写解锁,请将 ro.oem_unlock_supported 设置为 1。

如果设备不支持刷写解锁,请将 ro.oem_unlock_supported 设置为 0。

如果设备支持刷写解锁,引导加载程序应通过将内核命令行变量 androidboot.flash.locked 设置为 1(如果已锁定)或 0(如果已解锁)来指示锁定状态。

对于支持 dm-verity 的设备,请使用 ro.boot.verifiedbootstate 将 ro.boot.flash.locked 的值设置为 0;如果启动时验证状态显示为橙色,此操作可解锁引导加载程序。

保护关键部分

设备应支持锁定和解锁关键部分(指将设备启动到引导加载程序所需的任何部分)。这些部分可能包括 fuse、传感器中枢的虚拟分区、第一阶段引导加载程序等。如需锁定关键部分,您必须采用一种机制,阻止设备上运行的代码(内核、恢复映像和 OTA 代码等)故意修改任何关键部分。如果设备处于锁定关键部分状态,OTA 应无法更新关键部分。

从锁定状态转换为解锁状态应需要与设备进行物理交互。此类交互的效果类似于运行 fastboot flashing unlock 命令,但要求用户按下设备上的实体按钮。设备不应允许在没有进行物理交互的情况下以程序化方式从 lock critical 状态转换为 unlock critical 状态,并且设备应以 unlock critical 状态推出。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值