安卓逆向笔记(9)——安卓备份文件.ab的解包方法

文章目录

工具

1.java
2.rar
3.C32Asm

分析

第一次拿到.ab后缀的文件,不知道是什么,直接丢进C32Asm里去看文件头魔数。如图:
未加密.ab文件1. 其中可以看到ANDROID BACKUP.2.1.none字样,说明是一个安卓备份文件(我查资料了的!不是看到backup所以就乱说哈)
2.其中的 .2.1 分别是两个参数,表示版本和是否压缩,具体哪个对应哪个,还有版本是指什么版本我也没搞明白,希望搞明白的同学留言告诉我。
以下是分析.ab工具的部分源码截图(分析.ab文件头的)1
.ab头部解析源码3.其中的 none 表示加密方式为:无加密。如果存在加密,则为具体加密方式2,如图:
加密的.ab文件
对于无加密的.ab文件,有24字节的文件头,文件头包含none标志,文件头之后就是数据;加密的备份文件,它的文件头就比较复杂了,文件头包含加密算法名称的标志,其他的我也不知道了,后面的估计也是数据,但是是经过了加密的数据吧。

解包

1.对于加密的.ab,我也不知道怎么解包,估计是提取出数据部分,把.ab的文件头去掉就可以,然后再做对应加密方式的解密吧。

2.无加密的.ab解包:
(1)直接使用命令:

java -jar abe.jar unpack xxx.ab xxx.rar

注意: 如果环境变量中的CLASSPATH没有找到abe.jar的路径,则会报错:

Error: Unable to access jarfile abe.jar

不管什么jar包,所有这个报错都是因为JAVA解释器无法在CLASSPATH环境变量中找到这个jar包,解决办法可以是:
a. 修改CLASSPATH环境变量的值,写上这个jar包的绝对路径;(我忘了这个方法的可靠性了,好像并没有效,反正原理是这么个原理,为什么无效,我也不知道,懒得去研究了,知道的评论区告诉我一声)
b. 或者命令中 -jar 参数写上jar包的绝对路径,要用双引号把jar包的绝对路径括起来,我也不知道为什么,反正我不用双引号就报错,可能是我电脑环境问题,可能是java语法限制,没细究。

找不到abe.jar包
3.解包执行成功后,命令行是没有任何输出的,查看输出路径,得到一个rar压缩包,则说明解包成功,解压rar即可,如图:
成功解包.ab
4.查资料的时候看到小米手机备份文件(后缀为.bak)的解包3方法,这里记录一下:
用十六进制编辑器C32Asm之类的工具打开,可以看到如下信息:
小米手机备份文件
本博客部分图是从原博客上截的,链接在文末。看这张图,根据前面的分析,可以到出 ANDROID BACKUP 1 1 none ,因此猜测小米的备份文件只是用安卓系统自身的备份操作,且是未加密的,然后对安卓备份生成的.ab再做一次封装,拼接到自己的一个文件头下面去。我们直接删除.bak的文件头,恢复成.ab文件,即可按照上面的方法去解包了。


  1. 参考自:https://www.52pojie.cn/thread-447261-1-1.html ↩︎

  2. 参考自:https://blog.csdn.net/qq_33356474/article/details/92188491 ↩︎

  3. 参考自:https://www.feifeiboke.com/android/3669.html ↩︎

猜你喜欢

转载自blog.csdn.net/yhsnihao/article/details/103047916
今日推荐