为什么要备份TA分区
Sony的机器虽然允许解锁BL(Boot Loader)之后就可以自由的刷入第三方Recovery和自定义Rom,但是解锁BL之后TA分区将永久性不可用,而且就算重新刷入官方ROM之后该分区也无法恢复。这会影响到相机的降噪算法和显示图像算法(超逼真图像)。所以对Sony手机来说备份TA分区就显得十分重要,如果没有备份该分区则解锁后的使用体验就将降低一大截。
原理
备份该分区的数据需要在root
权限来访问block
块设备,用dd
命令将块设备的数据导出。但是在普通情况下获取root
权限需要解锁BL
,而解锁BL
又会破坏掉TA
分区的数据。这似乎是一个死循环?
这里咱们备份TA分区的关键则是在不解锁BL
的情况下,获取root
权限。
万幸的是,在XZ1 Compact
特定版本的官方Rom中,有个内核漏洞CVE-2017-7533
。这个漏洞会则会在特定的情况下被获取到root
权限。不过这个漏洞在2017-12-05的安全更新中被Google修复了。
所以,我们只需要在蓝灯模式下将手机的Rom刷至更新前的官方版本,就可以通过该漏洞来获取root
权限从而备份TA分区了。
已经验证的可以获取root
权限的官方Rom:47.1.A.2.324_CE1、47.1.A.8.49_CE1
准备工具
- 可以被破解的Rom,自己使用的是
47.1.A.2.324_CE1
- 蓝灯模式刷机工具:Flash Tool或者newflasher,自己使用的是
newflasher
root
工具:renoshell 下载地址:外网 备份- adb工具:这个就大家自己找吧,我就不放链接了
开始破解
1.刷入可以被破解的官方Rom
-
将Rom解压和刷机工具
newflasher
(windows是newflasher.exe,Linux则是newflasher.x64)放入一个文件夹 -
手机连接电脑关机
-
按住手机
音量+
和电源键
开机,待手机震动一下呼吸灯变成蓝色松手 -
执行刷机
tianliang@omen:~/downloads/XZC/G8441/ sudo .newflasher.x64
- 手机刷机完成后不插卡开机,只连接wifi其它均不设置,打开
adb
调试模式
2.将root工具
传入手机
tianliang@omen:~/downloads/XZC/ adb push renoroot/renoroot /data/local/tmp
tianliang@omen:~/downloads/XZC/ adb push renoroot/renoshell /data/local/tmp
tianliang@omen:~/downloads/XZC/ adb push renoroot/renosploit /data/local/tmp
tianliang@omen:~/downloads/XZC/ adb install -r renoroot/renostrap.apk
3.获取root
权限
- 在手机上打开安装的应用
adb shell
执行renoroot
tianliang@omen:~/downloads/XZC/ adb shell
G8441:/ cd /data/local/tmp
G8441:/data/local/tmp/ ./renoroot
在获取root
权限的过程中手机有可能会因为出错而重启,重新开机再执行renoroot
直至root
成功。
root
成功时,adb shell
会显示#
的命令行,手机端则会有绿色成功的标志
4.备份TA分区
G8441:/data/local/tmp # dd if=/dev/block/bootdevice/by-name/TA of=/data/local/tmp/ta-locked.img
4096+0 records in
4096+0 records out
2097152 bytes (2 M) copied, 0.01 s, 76 M/s
G8441:/data/local/tmp # exit
G8441:/data/local/tmp $ exit
tianliang@omen:~/ adb pull /data/local/tmp/ta-locked.img ./
5.还原TA分区
解锁BL之后,在root
权限下可以通过如下命令还原TA分区
tianliang@omen:~/ adb push ta-locked.img /data/local/tmp
tianliang@omen:~/ adb shell
G8441:/ $ su # 获取root权限可以是在刷入magisk之后,也可以在不刷入magisk的情况下是把上面的获取root再执行一遍,这里的例子是使用magisk直接获取root
G8441:/ # cd /data/local/tmp
G8441:/data/local/tmp # dd if=ta-locked.img of=/dev/block/bootdevice/by-name/TA
最后
最后当然是解锁BL之后随便玩啦。
PS:图解
- 刷机时的文件
- 获取
root
权限成功时的命令行
- 获取
root
权限成功时的手机端