钛备份的逆向原理
经常刷机的机友一定很熟悉钛备份,简直刷机备份数据的神器。有了它刷机爽得一批,备份应用数据,还原数据,真的很爽。钛备份是我刷完 ROM,接着 root 后装得第一个应用,用它来还原之前得应用,十分方便。
对钛备份得备份原理很是好奇,在钛备份的 /data/data/com.keramidas.TitaniumBackup/files/ 下发现了 busybox,猜想一定是使用 tar 来备份的,压缩使用设定的 gzip 或 xd,但我一般不采用压缩,能加快备份速度。接下来就使用 adb 模拟钛备份的过程
1.先 kill 要备份应用killall -s STOP com.music.moto
2.计算空间大小du -H -s /storage/emulated/0/Android/data/com.music.moto
3.把 sdcard 下的 data 软连接过来ln -s /storage/emulated/0/Android/data/com.music.moto /data/data/.external.com.music.moto
4.用 tar 备份,排除了 lib 和 cachetar -cz /data/data/com.music.moto/. /data/data/.external.com.music.moto/. --exclude data/data/com.music.moto/./lib --exclude data/data/com.music.moto/./cache
5.删除 sdcard 的 data 软连接rm /data/data/.external.com.music.moto
6.剩下的应该是保存备份信息还有改备份文件的权限killall -s CONT com.music.moto
ls --color=never -d /data/app/com.music.moto-1/base.apk
ls --color=never /data/data/com.music.moto/databases/
chown media_rw:media_rw /storage/B35D-1F87/TWRP/TitaniumBackup/com.music.moto-20190412-174942.tar.gz
2、恢复(已安装的程序)
1 这两个命令合起来看,是把压缩文件解包cat /storage/B35D-1F87/TWRP/TitaniumBackup/com.music.moto-e9310c14ccf910db88f0bc4c842e515a.apk.gz
bunzip2
2.改权限,应该有个安装应用的命令,pm 没有替换,有的话应该能看到chmod 755 /data/local/tmp/com.keramidas.TitaniumBackup-install.apk
3.删除应用rm /data/local/tmp/com.keramidas.TitaniumBackup-install.apk
4 将原来应用的 data 移动下mv /data/data/com.music.moto /data/data/.com.music.moto
5 删除 sdcard 下的 data 并链接过来rm -R /storage/emulated/0/Android/data/com.music.moto
ln -s /storage/emulated/0/Android/data/com.music.moto /data/data/.external.com.music.moto
6 解包数据,排除 libcat /storage/emulated/0/TitaniumBackup/com.music.moto-20171004-052037.tar.gz
tar -C / -x --exclude data/data/com.music.moto/lib --exclude data/data/com.music.moto/./lib
7.删除 sdcard 的 data 链接rm /data/data/.external.com.music.moto
8 改用户组chown -R media_rw:media_rw /data/media/0/Android/data/com.music.moto
chown -hR 10118:10118 /data/data/com.music.moto
9 改权限chmod -R u+rwx /data/data/com.music.moto
10 将原应用的 lib 移到新恢复应用的 data 目录下mv /data/data/.com.music.moto/lib /data/data/com.music.moto
11 删除原应用的 datarm -R /data/data/.com.music.moto