展示

从开机的时候,看提示,进入验证启动认知:

图片发自简书App

图片发自简书App

流程:

图片发自简书App

目的

保护系统的安全性。

涉及的范围:从受硬件保护的信任根到引导加载程序,再到启动分区和其他已验证分区(包括 system、vendor 和可选的 oem 分区)的完整信任链。

实现的方式:

1.在设备启动过程中,无论是在哪个阶段,都会在进入下一个阶段之前先验证下一个阶段的完整性和真实性

2.检查是否存在内置了回滚保护的正确 Android 版本

3. Android 设备将其完整性状态传达给用户

理解框架

图片发自简书App

实战

前言

图片发自简书App

* Android P + kernel-4.4 or kernel-3.18

- download preloader with verified boot disabled which location is the same as scatter file //preloader__SBOOT_DIS.bin

- adb root

- adb disable-verity

- adb reboot

- adb root

- adb remount

* Android P + kernel-4.9 or after

- download preloader with verified boot disabled which location is the same as scatter file. //preloader__SBOOT_DIS.bin

- boot to Home Screen

- go to setting -> system -> Developer options -> OEM unlocking

- adb reboot bootloader

- fastboot flashing unlock

- press volume up key

- fastboot reboot

- adb root

- adb disable-verity

- adb reboot

- adb root

- adb remount

实例一:

效果展示:

图片发自简书App

代码分析:

图片发自简书App

快速验证方法:

图片发自简书App

adb shell验证:

getprop ro.oem_unlock_supported

1---代表打开

0---代表关闭

图片发自简书App

通过如下操作:

- adb reboot bootloader

- fastboot flashing unlock

- press volume up key

- fastboot reboot

之后:

adb shell

解锁成功后检查这两个属性会从

[ro.boot.flash.locked]: [1]

[ro.boot.verifiedbootstate]: [green]

变成

[ro.boot.flash.locked]: [0]

[ro.boot.verifiedbootstate]: [orange]

补充:

ro.boot.flash.locke在哪里进行改变的?

开机启动过程。具体为system/core/init/init.cpp

main(int argc, char** argv) {

·····

export_oem_lock_status();

·····

}

export_oem_lock_status(){

if (!android::base::GetBoolProperty("ro.oem_unlock_supported", false)) {

return;

}

std::string value = GetProperty("ro.boot.verifiedbootstate", "");

if (!value.empty()) {

property_set("ro.boot.flash.locked", value == "orange" ? "0" : "1");

}

}

实例二:

效果展示:

图片发自简书App

怎么让禁止解锁变成可以解锁的状态?

代码分析为什么变成禁止解锁状态?

图片发自简书App

具体方法:

1.直接操作/data/system/users/0.xml中的值:

UserManagerService.java中有对/data/system/users/0.xml进行处理

eg:

灰色的值:

正常的值:

即:

adb root

adb pull /data/system/users/0.xml 本地路径

修改0.xml中的值

adb push 本地修改之后的文件 /data/system/users/

adb reboot

就可以满足要求

2.代码实现的方式:

修改配置文件

UserManagerService.java的构建方法中:

UserManagerService(......)-->readUserListLP()--->fallbackToSingleUserLP()

详解:

fallbackToSingleUserLP(){

***********

Bundle restrictions = new Bundle();

try {

final String[] defaultFirstUserRestrictions = mContext.getResources().getStringArray(

com.android.internal.R.array.config_defaultFirstUserRestrictions);

for (String userRestriction : defaultFirstUserRestrictions) {

if (UserRestrictionsUtils.isValidRestriction(userRestriction)) {

restrictions.putBoolean(userRestriction, true);

}

}

} catch (Resources.NotFoundException e) {

Log.e(LOG_TAG, "Couldn't find resource: config_defaultFirstUserRestrictions", e);

}

********

}

原生为:

frameworks/base/core/res/res/values/config.xml

gms包中overlay为:

gms_overlay/frameworks/base/core/res/res/values/config.xml

"no_oem_unlock"

参考学习

https://source.android.com/security/verifiedboot/index.html

https://source.android.com/security/verifiedboot/verified-boot.html

https://source.android.com/security/verifiedboot/dm-verity.html

https://gitlab.com/cryptsetup/cryptsetup/wikis/DMVerity

https://blog.csdn.net/sinat_34606064/article/details/77920700

android ro.boot.mac,Android Verified Boot浅知分享相关推荐

  1. android mac 管理工具,Coolmuster Android Assistant for Mac(Android管理工具)

    原标题:Coolmuster Android Assistant for Mac(Android管理工具) 想要在mac上管理你的安卓手机数据吗?试试Coolmuster Android Assist ...

  2. Android Studio for mac(Android集成开发工具)

    Android Studio for mac是谷歌称为将会让开发者更快.更具生产力,它完全免费,跨平台支持 Win/Mac/Linux,Android Studio for mac是替代 Eclips ...

  3. android ro.boot.mac,Android设备ro.boot.serialno的前世今生

    为了找到ro.boot.serialno的赋值位置,在源码最可能出现它的目录下比如/system/./device/./hardware/./u-boot/进行搜索: grep -rn "r ...

  4. android p随机mac,android设备唯一码的获取,cpu号,mac地址

    抄自http://blog.csdn.net/hpccn/article/details/7872141 开发Android应用中,我们常常需要设备的唯一码来确定客户端. Android 中的几中方法 ...

  5. android 手机固定mac,Android之获取手机MAC

    一种比较折衷的办法,在获取MAC地址之前先判断当前WiFi状态,若开启了Wifi,则直接获取MAC地址,若没开启Wifi,则用代码开启Wifi,然后马上关闭,再获取MAC地址. ​ 目前此方法测试成功 ...

  6. Magisk root 原理分析之二 :Android Verified Boot (AVB)

    1. Android Verified Boot (AVB) 或称 Verified Boot 2.0 简介 官方解释:验证用户设备上运行的软件完整性.它通常从设备固件的只读部分开始,该部分加载代码并 ...

  7. AVB校验微观版本:android avb(Android Verified Boot)验证

    前辈原文:https://blog.csdn.net/weixin_43836778/article/details/90400147 其实可能有人会说,怎么整这么多重复的,其实不是的.这是为了不断地 ...

  8. Android Verified Boot 2.0 最新安卓P AVB详解

    什么是AVB 验证启动是确保用户设备运行软件完整性的一整套流程. 它通常从设备固件的只读部分启动,使用加密方式验证代码是可靠且没有任何已知的安全缺陷之后才会执行. AVB是验证启动的一种实现. VBM ...

  9. android 分析boot.img,Android 系统准备知识-bootimg文件的结构

    做android系统的兄弟都知道,android系统编译完成后生成的目标文件会包含几个img boot.img system.img data.img 等 可以通过fastboot 工具,在fastb ...

  10. android 分析boot.img,Android bootimg的详细分析.pdf

    bootimg 的详细介绍&使用 adb 的强大之处在于可以在PC 端直接操控手机,可以说是通用的工具!那么今天带来的这款 工具的强大,估计会让爱好者灰常之兴奋,用好这款工具你就可以动手修改b ...

最新文章

  1. zabbix 乱码的问题
  2. XamarinSQLite教程下载安装SQLite/SQL Server Compact Toolbox
  3. Mongo报如下类似错误时的修改方法Cannot natively represent the long 1396367483000 on this platform...
  4. DCMTK:DcmDate,DcmTime和DcmDateTime类的测试程序
  5. add-migration Build failed.
  6. USACO 1.3-Combination Lock
  7. 根据/proc/meminfo对空闲内存进行占用
  8. 今天成功的将一个对1,000,000条记录的查询从30'提升到1'以下,庆祝一下
  9. mysql查询语句块_mysql查询语句
  10. Hibernate批量操作数据
  11. thinkphp count distinct
  12. 太网交换机芯片-KSZ系列
  13. 软件测试python版本的决策表法解决preDate返回前一天日期
  14. 5G时代下的人工智能发展
  15. pmp各种比较容易混淆的图
  16. C#毕业设计——基于C#+asp.net+FTP的FTP客户端设计与实现(毕业论文+程序源码)——FTP客户端
  17. Android多开分身 v7.2 破解永久VIP付费版
  18. CentOS 路由设置
  19. STM32定时器捕获编码器模式测速和方向测不准问题
  20. 对话姜老师,DBA的职场之路

热门文章

  1. react中数组添加值,超时设置
  2. android scala,用scala开发android,用spray-json解析json
  3. 探访广东电子垃圾第一镇:家庭作坊饮鸩止渴---ESM
  4. 苹果手机里微信数据删除怎么恢复?
  5. 【Android】关于WIFI局域网的手机摄像头当视频监控用实现方案详解
  6. python创作音乐: 计算机创作,计算音乐
  7. python自动上传百度网盘_树莓派使用百度云盘自动上传存储监控照片
  8. 火狐插件 测试浏览器兼容性_在Firefox中测试和报告插件兼容性
  9. 机器学习(二)--新加坡国立大学寒假学习项目总结
  10. 小牛电动IPO:四年跌宕起伏 一代天才少年李一男终圆梦