这篇主要讲Android的常见数据备份 & 恢复方案,以及提前做好刷机前的准备工作等. 效果是让粗粮机获得root权限,用Xposed框架代替粗粮管理手机,以及关闭云服务,禁止
合法收集、流量上传等。。拆分自Android下粗粮隐私保护方案 ,注意这不是小白刷机文,除了核心步骤给图,给出安装工具下载参考链接. 不必要的图都会略过. 重点关心的是通用的本质流程. 这样才能应对不同环境
0x00.数据备份&还原
更新: 6月9~10号抽空来实践折腾
由于风险问题,建议先备用机尝试,列一下常见三种模式备份&还原数据. 因为还原基本就是逆向的备份,下面就不再重复说明.
A.通过一键换机功能(优先采用)
需要: 两部手机(可支持iOS,但是数据完整度待确认)
这个在粗粮中已经内置到了系统内,名字是Mover(一键换机),搜索即可找到,步骤也非常简单清晰,有具体的还原选择和分类,有总的剩余时间显示以及每一项的进度和百分比. 它会备份以下数据
- 图片/音视频/文档等媒体文件
- 系统数据(短信,联系人,通话记录)
- Apps的安装包和应用数据(包括配置,登录信息,聊天记录等数据,但是有些不必要的数据建议去掉)
注意: 这些数据暂时不支持一键换机备份
- 多开的App数据 (比如多个tim/whatsapp的数据.只会备份主的,原因是多数据迁移更容易出错)
- 粗粮账号,邮箱账号,金融类App对密码做了强绑定,新机必须重新登录这种
实测中,4.5G的总数据传输无线传输的时间40min,锁屏也未出现过中断. 完成后检测新机器各App和数据恢复情况:
- TIM/Wechat大部分软件恢复正常(但是wechat会让你重新输入登录信息)
- 会丢失一部分桌面排布,虽然不多.
- 蛋疼的是有一部分系统设置没有完整拷贝?(比如呼吸灯颜色,wifi的列表) 这些离线备份应该都是有的.
所以实践之后,觉得如果时间稍微充裕,有一台SSD的PC, 还是可以求稳考虑离线还原. 单是缺点也很明显,数据都被直接打包了. 会冗余很多.. (不过这些应用可以自己安装)
B.通过离线备份(单机必备)
需要: 一台存放数据的PC,新旧机器数据线(type-c)
很多时候刷机并不是一定有两台手机,或者因为种种原因,数据离线冗余备份一直都是最靠谱的容灾方法之一.所以建议刷机前不管是否通过A同步数据,依然采用离线备份的方式存一份PC上.确保数据安全
直接在手机搜索备份,选离线加密备份即可,离线备份完把备份文件从手机内(相对地址是MIUI/backup/data_xxx)转移到你的电脑以及靠谱的云盘中(可选,毕竟文件有点大),把整个backup文件夹剪切走就行.
这种方法备份的数据理论上说是最全的,但是否包含多app数据有待确认.
C.通过粗粮的云备份服务(不推荐)
需要: 粗粮的账号以及新手机支持,良好的网络环境
简单说这个就只备份了基本的桌面排布,联系人一些基本设置之类的信息,且实际恢复测试中缺乏具体进度显示,强依赖外网,且后续体验糟糕.中断也不知如何继续. 所以如果不是身边什么都没带又急用,建议不要使用这种方法.
并且因为隐私原因,你同意使用免费的云服务就等于送厂商使用数据..
0x01.刷机实战
操作环境: Win10_RS4+Miui9.6_Stable+
工具环境: CoffaceToolV1.21(自带ADB6.0)+Su+Xposed? (下载地址可以去原作者地址,因为万恶的百度网盘的原因,我就丢了一份到github上 )
整体步骤:
很多文章没头没尾, 半懂不懂的做法, 对很多人刷机/Root造成了极大理解障碍. 其实整个流程虽然稍有繁琐, 但是脉络是很清晰的:
- 首先要通过官方渠道解锁 BL(BootLoader) 锁, 你可以简单认为这就类似电脑的 BIOS 锁一样, 这个提前做好, 解锁很快 [耗时1min]
- 然后解锁之后, 就刷入新的 Recovery 模式包, 你可以简单理解类似刷了一个新的 BIOS, 它方便我们后续去加载特殊的 ROM (系统镜像) [耗时10s]
- 此时开机后进入了刷入的新 Recovery 模式, 就迎来了我们操作的关键两步: [耗时25min]
- 先在安装选项里, 安装
SuperSUV2.7.zip软件, 它相当于是 Root权限的控制器, 决定所有机器上软件是否可拥有 root 权限 (必须先装, 已有则需卸载再装) [耗时5分钟] - 重启后, 再安装
MIUI-with-Xposed-xxx.zip, 完成后重启等待新系统初始化, 类似Windows安装完成后也很慢 [耗时20分钟]
- 先在安装选项里, 安装
A.解BL锁
官方申请解BL锁,收到成功短信后下载官方解锁工具解压-打开-登录。(自带驱动包)
点击手机的MIUI-version信息5下,然后在更多/高级选项里面进入开发者模式,启用OEM-Unlocking,然后在Mi-UnlockStatus(设备解锁状态)里面绑定账号和设备(如有问题见0x03),最后建议顺便打开下面的USB调试模式(允许通过USB安装app不用点)
关机后,手动按住电源键+音量下 ,然后通过USB连接手机,如果按键损坏可以使用adb/刷机工具直接命令重启进入BootLoader(
adb reboot bootloader即可,记得会提示一次PC权限允许)在BL模式下,重新插入USB,安装驱动,如下图.
然后返回主页解锁的按钮已经点亮了. 点击即可,大概就10s就完成重启了. 至此,BL锁已解除
B.刷入功能强大的第三方Recovery
优先用ADB命令快速进入 adb reboot fastboot. 然后刷入第三方Rec. 列出脚本核心代码,整个过程非常快,如果不暂停估计10s不到.
1 | fastboot.exe devices #第一步获取设备信息,貌似可省 |
然后就可以看到新Rec的欢迎页面了:
- 提示你”保持system可读? TWRP可以使你的系统分区不被修改,以便更好的OTA更新” 进入下一步
- 然后会看到主界面,先不急安装,四处转转. 有常见的CURD功能,进入设置关掉按键震动,锁屏这种东西…(然后设置里面勾上”删除多余应用”,”启用OTA-增量更新支持” )然后我高级里面有
- 文件管理器 (这里可看到亲切的Linux FS)
- 终端命令行(这就更亲切了,有个简易的bash..输命令玩)
- ADB线刷
- 关闭boot校验
- 我发的这个版本Rec自带了SU,而且检验内置存储跟卡效果更好,如果安装的原版Rec,就需要先手动安SU
- 你会发现主要分区有四个(如果插卡多一个SDcard):
- System 2G+
- Cache 1MB
- Data 0MB (这说明数据没有读取出来,非常蛋疼了,可能需要格式化数据区域,或者换其他Rec)
- Boot 64MB (数字非常友好&滑稽)
- 重启系统的时候,滑动禁止原本Rec载入
C.刷入SU 然后安装Xposed
这步其实很好理解,你进入了第三方Rec后还没有直接获得Root权限,也就还不能安装完整的Xposed框架,先获得完整Root权限, 然后root权限安装Xposed的apk+底层库即可. (很多小白瞎扯真是醉了..)
先安装SU,通过底包或者内置有底包的大概1分钟安好. Xposed加载时间也很快,完成后重启在Logo的地方应用时间比较长20min+ (这个是最关键的了.如果超过40min卡在这就不幸了…可能失败了)
整个流程如图(参考自粗粮论坛,因为我懒得截了. 注意第四张图之后, UI加载界面会出现一个”正在优化应用启动速度,请耐心等待“ ,第五张图要进入Xposed才能看到.找不到图标参考下面答疑.)
看到这基本核心流程就完成了~ 在理解Android启动流程的基础上,提前做好备份. 然后直接从github下载包的情况下,整个过程是非常迅速的.
0x02.Xposed模块与实测
前面都算是准备工作其实,真是准备这些,是为了让我们更好的作为admin去管理OS和Apps,那么我挑选之后,有如下可选参考: (会持续更新,筛选.18/06/16)
- IM的各种crack模块(自选)
- 微x,Qx : crack 企鹅
- 各种APP的深度DIY工具(包括不限于去启动ads,自定义调整,控制各种消息事件,精细度细的权限控制)
- AppOpsXposed : 可以控制应用权限,并且在系统设置中集成该功能
- XPrivacyLua : 隐私管理器,对所有应用的权限详细分类
- 大圣净化: 低侵入的,在不修改源APK前提下去除启动Ads和内部Ads
- 隐匿和混淆
- Android Device Changer : 修改(随机)手机的各种底层信息(手机号,IMEI,各种ID,运营商型号等.慎重使用,详见Q&A)
- fakeGPS : 修改GPS定位(开发者权限-允许地址模拟)
- fakeLocation : 甚至可以不打开GPS模拟定位和移动基站. (问题见后)
- 系统优化
- L Tweaks : 常用小工具合集.(不少是Gooxxgle的优化,先放着)
- 系统清理工具(待补充名字)
- 有一个据说很强的
Ti备份,目前还不知道刚需在哪 - 抓包工具
- Fiddler (这个其实以前web安全那就说过了,相对BS是一款轻巧的http重放工具.)
0x0n.可能の问题
- 如果你一个粗粮账户有两个手机,那么解BL锁的间隔时间需要大于30天(解锁完后“找回设备”功能就会失效)
- 解锁过程由于版本/型号等问题可能出现各种失败异常,可以让客服帮你申请跳过某些步骤,不用死磕
- 第三方ROM慎重
使用,因为更不靠谱.引发更多安全问题.
A.解BL锁中的问题
- 在移动/wifi确定正常的情况下,设备解锁状态绑定账号总是提示“无网络,请重试”。解决办法: 首先在Mi-Account退出当前账户,然后再直接从解锁设备状态那添加绑定即可
B.是否需要格式化数据或者”双清”
最新第三方rec 不需要: 参考我github丢出的地址.
B.Rec的问题
Q1:刷了第三方Rec是否能正常OTA升级到最新稳定版 ?
A:可以,只是每次升级需要下载完整包才行,默认是增量更新. 当然更新完就必须重新刷SuperSU和XP(并且注意要一定先卸载SU,且开启OTA会占用大量的存储内存 ). 建议只更新大版本的UI(比如UI9 or 10.随之把SU和Xposed的适配一起更新,平常小更新就不用管了.)
Q2:为什么刷入XP后,桌面没有这图标?
A:因为XP底包里并没有apk文件,需要在我转存的github里下载对应apk安装后就有了.(SuperSU因为放的这个Rec自带所以有图标,如果手动装的也可以下APK获得)
Q3:不用ADB工具如何进入Rec模式?
A: 粗粮可以在“系统更新”的选项里选择“重启到rec”。(关机状态下通过电源键+音量上 按住也可).注意官方原生Rec是只能通过音量+/-和电源键操作的. 不灵的话只能硬撬开了…(顺便有空可以修一下)
Q4: 为什么刷入SuperSU之后, 系统里找不到App图标
A: 你安装前后可能有顺序错误, 或者之前手动卸载但是没干净, 没关系, 你解压
SuperSU-VXxx.zip, 在common下也有单独的 apk 文件可以重新安装Q5: 为什么我流程都走完了, 但是运行部分软件, 还是提醒我没有 root 权限?
A: 请稍安勿躁, 记住一切 root 权限都是由 SuperSU 在分配, 如果它没有感知到请求, 那么你所有APP理论上都不应该有 root 权限, 打开它的后台, 直到启动的APP 被 SuperSU 感知弹出授权框后, 才是大功告成.
C.Xposed使用注意
1.修改有些手机底层设备信息可能会导致部分功能失效,千万注意慎重授权
如Android device changer这种, 它默认会修改几乎所有硬件信息包括IMEI和手机号,如果直接应用到所有APPs就会导致你无法通话,因为号码都是错的… 其次不要应用到Xposed或者SuperSU这种控制器,否则你的手机型号识别会出现错误,可能导致Xposed触发检查不通过.
如果出现如上悲剧,需要删掉设备修改的插件,然后就会恢复了. 建议这种修改底层物理信息的手动选择APP. XPrivacyLua这点比较好,默认只修改用户Apps.也要注意不要把所有权限全禁了..
补充:
- 企鹅家族的App启动的时候可能会检测历史设备信息和当前,如果发现你修改了IMEI等信息会直接关闭进程,且可能上传服务端.慎重
2.企鹅家族的Crack插件问题
首先建议使用小号测试. 因为企鹅已经有封号的例子了,然后为了避免检测上报,把企鹅软件获取的权限尽量降到最低,特别是不让它使用本地存储. 不让他获取手机安装软件.. 那这样怎么存储图片使用呢? 只能暂时不用…
后续:
插件多了肯定有很多需要单独写的东西,这里先列出来,到时候再把Xposed插件以及相关单独拆分.
3.定位相关
crack location的插件不少,但是真正用起来你会发现,很多地方有问题…模拟会失败,那么关键原因在哪呢,怎么排查呢? 建议看Xposed的日志输出. 这里长话短说,经过我反复测试和观察日志+权限控制后的变化. 发现crack失败的app多调用了一个"use tracking" (跟踪记录)的权限.
如果你不打开这个权限,你会发现不管怎么模拟定位,都是徒劳的.可能App开头首先就加了判断 (待反编译才能确定..) 但是如果你允许了这个权限. 普通的位置定位又hook的是GPS地址或者移动基站的地址,导致没有效果. 或者直接提示获取不到定位….
待后续进一步分析.普通软件是可以模拟的,注意企鹅的软件抓日志发现它使用了单独自己的locationSDK,擦. 你需要先在hook的时候用它特定的SDK. 千万注意…
参考资料:

