Pass:本文有部分截图摘选自CSDN博友画图以及google/qcom文档,由于是上一年写的文章,所以暂时未能提供出处

Factory Reset Protection

功能介绍:

Google FRP,google的账户锁,全称factory reset protection,在android 5.x以后释放的功能,为减少手机被偷走的概率,该功能由google研发并提供接口,用户在使用的时候必须具备三个条件:
1.设备支持google认证
2.不能修改该方案核心功能
3.设备能连接网络进行认证
4.添加一个屏幕锁

触发原理:

当登陆了google账户后,在未退出google账户就使用了recovery或者fastboot命令回复了出厂设置的情况下,造成开机需要连网输入回复出场设置前登陆的google账户,无法跳过setupwirzd的问题,导致kill-switch,一键锁死,限制新用户注册本机,未经验证的新用户无法刷机

kill-switch工具原理:

该工具貌似供应商会提供,不过大部分由OEM自行维护,功能比较简单,其主要作用是擦除用户数据和擦除config/userdata分区

工具的原理类似于FactoryReset,通过该工具,发送boot-recovery命令进入recovery mode。再发送recovery-wipe-data命令来擦除config和userdata分区,具体发送的命令如下:

memset(&btMsg,0x00,sizeof(bootloader_message));

strcpy(btMsg.command,"boot-recovery");

strcpy(btMsg.recovery , "recovery\n--wipe_data");

if (!emmcModel.WriteProgram_fh("misc", (char*)&btMsg, partitions[i].first_lba, 1, 0))

FRP和正常factoryReset的差别(也就是该功能作用的意义)

首先,我们要理解信任回复和非信任回复的差别,在Android中,回复出厂设置可以分为:可信任回复  && 不可信任回复

在android中唯一的可信任回复方式:在setting界面中选择恢复出厂设置

通过其余方式(比如recovery双清分区,抑或远程通过google账户登录google play servicer清除用户数据等)都为不可信任回复

So,该功能的意义在于,假如登录了google账号的手机被不可信任回复给reset了,Android会在开机引导界面setupwirzd处会要求验证google账户来确定机主身份,负责不能跳过这个界面,等于软件性的变砖

那么两个reset的原理在于,可信任回复,会连存储google账号的config分区和PersistentDataBlockManager等数据,而不可信任回复不会

FRP实现代码原理:

很遗憾的告诉各位,该功能是由google提供,对第三方隐藏,所以没有源码分析

Google提供了一个实现方式的参考方案。参考实现包括两部分:一个API,用于在功能过程中存储数据,一个是GMS模块,用于将谷歌特定数据写入此平台服务。虽然该功能的实现的大部分是在Google play service,OEM可以参考平台API包含在:
 
android.service.persistentdata.PersistentDataBlockManager

所以可以理解,google提供了一个上层接口给OEM:PersistentDataBlockManager

当创建有一个google账户时,FRP会创建一个重置的标志位和key保存在这个block里面,可以用通过其他的android设备登陆你的google账户定位或者锁定,远程清空手机,回复出场设置等

上层逻辑原理:

(参考qcom源码:frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java)

(注:该图转载自CSDN博友所画流程图,由于时间太久,暂时不能提供出处)

如上图,其中最为关键的是Account Data Blocks,其实就是一个独立的存储分区(500kb),该分区在fatctory reset时不能进入,通过系统中的ro.frp.pst来制定该分区的路劲(通常默认的路劲都是/dev/block),对其的R/W操作是通过API——也就是android.service.persistentdata.PersistentDataBlockManager来操作的

值得注意的是:

FRP功能存在于任何登录了google账号以及打开了oem unlock功能的手机上。(oem-unlock功能存在于开发者选项中,默认是enable的,据了解该功能也是google开发,主要用处在于lock bootloader镜像)分区的最后一个字节应该用于信号的OEM-UNLOCK状态。如果字节为0,OEM-UNLOCK位DISABLE。即,当此字节设置为0,​fastboot oem unlock应该​失败。 该字节必须在出厂时设置为0。enable/disbale OEM-UNLOCK只能通过PersistentDataBlockManager这个API来更改(相当于更改分区最后一byte)。

(本来这个博客是想保存和记录工作三年来自行学习记录下的历程和工作经验,同时也可以给有需要的朋友做个简介,文档中可能会出现的错别字等小问题请忽略,如果涉及原理性的问题,请留言告知,不慎感激)

[Android][FRP]Factory Reset Protection相关推荐

  1. android frp分区,android系统的分区结构

    android系统的分区结构 转载 ANTIBili_MC 关注 (一)Android的主要分区 Modem分区bootloader分区boot分区recoverty分区system分区data分区1 ...

  2. 平述factory reset ——从main system到重引导流程

    关于Android或linux的引导流程,网上大都是从开机开始讲述的,或者直接跳过bootloader引导阶段,直接从init进程开始说起.这里我从手机正常运行状态开始,到重启状态以及重启之后的状态略 ...

  3. Android factory reset 流程

    http://blog.csdn.net/yahoozhuo/article/details/6403140 ===== 应用流程 ===== ====>frameworks/base/serv ...

  4. Office365 - 如何在Android手机中reset OneDrive

    在维护Office365过程中,遇到user report在他的安卓系统中的OneDrive无法正常打开使用,尝试了基本的troubleshooting步骤也无法解决. 此时,觉得应该对OneDriv ...

  5. android frp分区,在安卓手机上运行FRP

    需要一台已经root了的安卓手机,下载豌豆荚搜索BusyBoxPro,安装这个来扩展linux命令集,需要root,如果是小米的话需要解锁system分区.打开BusyBoxPro,授予root权限. ...

  6. [Linux Device Driver] 高通平台分区学习

    1. 分区名字 && 作用 ssd ---ssd diag模块的分区,存储加密的RSA密钥. persist ---其中包含在设备出厂后不应该更改的数据,例如:芯片的校准数据(WIFI ...

  7. 三星手机CROM锁、OEM锁等概念的区别

    三星手机为了防止用户随意刷入第三方ROM,在BL中增加了安全防护,对某些型号的手机进行了加锁设置,具体来讲,体现在downloading模式("音量减+home+power方式,然后音量加& ...

  8. Android 驱动(5)---MTK 平台分区表

    MTK platform partition meaning Pre-loader Pre-loader image Handles all the download and secure boot ...

  9. android 高通与MTK编译命令

    分享一下,如何编译自己修改的源码模块 1).build/envsetup.sh       //进入源码目录,执行源码build目录下的envsetup.sh脚本,使mmm命令有效(此命令要在源码根目 ...

最新文章

  1. Graphviz:可视化工具Graphviz的简介、安装、使用方法、经典案例之详细攻略
  2. Asp.net中基于Forms验证的角色验证授权[转]
  3. Docker教程-深度学习环境配置
  4. 高等数学:e的-t平方次方求积分
  5. Vue 自定义组件 —— slot插槽
  6. vivado和modelsim联合仿真实现奇分频
  7. 初步猜测,当map所在线程跟显存有关时,容易崩溃
  8. 湖畔第一大脑蒋烁淼,爱技术也爱创业,送给正在奋斗的你
  9. 山寨手机拇指30掌盟APP软件游戏下载安装破解激活图文教程2
  10. 日本公平贸易委员会结束对App Store的调查,苹果再次宣布整改
  11. createrepo 是一个对rpm 文件进行索引建立的工具
  12. 如何写新产品开发报告书
  13. 电脑c语言跟英语关系大吗,英语和数学不好能学好C语言吗
  14. 视频教程-ADAS/HAD软件架构-嵌入式
  15. 阿里云APP备案操作流程 新手看过来
  16. 外国语言文学类毕业论文文献包含哪些?
  17. DW 2023年1月Free Excel 第六次打卡 查找函数
  18. iOS 多线程安全数组
  19. 白嫖AIDA64 Extreme
  20. 从一读到一亿需要读多少个汉字?

热门文章

  1. 有道云笔记Windows客户端打开白屏的问题,一个字,等
  2. 【华为机试真题二星题目 python】欢乐的周末_03
  3. (轉貼) 善用Google從入門到精通 (Misc)
  4. java swing GUI 雷电小游戏,适合初级小白
  5. 【商务英语】职场商务英语口语:银行相关业务
  6. android中添加自己的驱动
  7. 【技术贴】如何把搜狗浏览器的收藏夹导入到360浏览器的在线收藏夹
  8. 人脸属性分析--性别、年龄和表情识别,及其相关的数据集合
  9. ASO优化:导致关键词被清掉索引的原因?
  10. 过滤与反冲洗实验原理实训操作QY-HJGC43