前言
“ android:allowBackup”是一个是否允许备份系统和用户数据的属性。
当这个标志被设置为true时应用程序数据可以在手机未获取 ROOT 的情况下通过adb调试工具来备份和恢复。
案例分析
从应用商城里下载一个“密码本”之类的应用。
1. 使用AndroidStudio分析应用
“Build” 》“Analyze APK…”,选择对应的应用进行分析,关注包名和allowBackup属性
若“allowBackup”属性为true,才能继续往下进行。
2. 安装应用
3. 使用adb命令导出该应用数据,过程中手机会要求设置密码,设置密码后点击”备份我的数据“
4. 使用abe工具解压ab文件
使用abe-all.jar文件解析ab文件为rar文件,jar包下载地址为:abe-all.jar
5. 查看备份文件
解压文件,查看里面有很多有用的数据文件,如数据库db文件和SharedPreference文件
查看一下数据库文件,里面有一条我之前保存的测试数据
查看一下sp文件中的xml,里面有我设置的数字密码虽然是加过密的
6. 修改内容并恢复数据
数据库文件稍作修改“pwd”字段修改为“23456789”并保存。恢复过程中要求输入密码,和之前一样就行
7. 恢复结果
使用adb restore恢复数据后,应用内显示的数据依然是“234567”,也就是我们修改后的数据没有被接受。两方面认证:
- 重新导出数据(依然是“234567”)
- 将用于恢复数据的ab文件解析成rar文件(是我们修改后的“23456789”)
判断,恢复数据的时候,系统或者应用本身做了处理。
8. 结论
虽然我们最后修改数据并恢复,结果没有成功,但是作为一个“密码本”类的应用,可以知道看到用户储存的账号密码信息已经是相当恐怖了,并且此应用下载量还是挺高的。并且经过多个应用测试,好多应用的“allowBackup”属性均为true。可能是因为新建工程默认为true的原因吧。