nelenkov/android-backup-extractor
GitHub: nelenkov/android-backup-extractor
一款用于解包和重新打包 Android adb backup 备份文件的 Java 工具,支持加密备份的解密与处理。
Stars: 2539 | Forks: 299
# Android backup extractor
用于提取和重新打包使用 ```adb backup``` (ICS+) 创建的 Android 备份的实用工具。
主要基于 AOSP 中的 ```BackupManagerService.java```。
# 构建说明
需要 Java 11。处理加密备份需要 JCE 无限制强度管辖策略(如果使用当前的 Java 9 版本则不需要)。
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
使用下面列出的工具之一进行构建,或者在 [Releases](#releases) 中查看预构建的二进制文件(可运行的 jar 文件)。
## 使用 Eclipse:
从[这里](http://www.bouncycastle.org/latest_releases.html)下载最新版的 Bouncy Castle Provider jar(```bcprov-jdk15on-*.jar```):
将最新的 Bouncy Castle jar 放入 ```lib/``` 目录,在 Eclipse 中导入并根据需要调整构建路径。使用 ```abe``` 脚本启动该工具。
## 使用 Maven(至少需要 JDK11):
创建一个可自执行的一体化 jar:
```mvn clean package``` 然后执行:
```java -jar target/abe.jar pack|unpack|pack-kk ...```
## 使用 Ant:
使用捆绑的 Ant 脚本创建一个一体化 jar 并运行:(仍然需要将 Bouncy Castle jar 放在 lib/ 目录中;相应地修改 ```bcprov.jar``` 属性)
```java -jar abe.jar pack|unpack|pack-kk ...```
(感谢 Jan Peter Stotz 贡献了 build.xml 文件)
## 使用 Gradle:
使用 Gradle 创建一个一体化 jar:
```./gradlew``` 然后执行:
```java -jar build/libs/abe-all.jar pack|unpack|pack-kk ...```
# 用法
## 语法:
* 解包: ```abe unpack [password]```
* 打包: ```abe pack [password]```
* 针对 4.4 打包: ```abe pack-kk [password]```
(创建版本 2 的备份,兼容 Android 4.4.3)
如果文件名是 `-`,则从标准输入读取数据或写入标准输出。
如果未在命令行中提供密码,则会尝试使用环境变量 `ABE_PASSWD`。如果不指定密码,备份归档文件将不会被加密,而只会被压缩。
## 打包 tar 归档文件
- Android 对 tar 归档文件中文件的顺序**非常**讲究。格式在[这里](https://android.googlesource.com/platform/frameworks/base/+/4a627c71ff53a4fca1f961f4b1dcc0461df18a06)进行了说明。
- 不兼容的 tar 归档文件会导致错误甚至系统崩溃。
- `allowBackup` 标志设置为 `false` 的应用[不会被备份或恢复](https://android.googlesource.com/platform/frameworks/base/+/a858cb075d0c87e2965d401656ff2d5bc16406da)。
- *(您可以尝试通过 `adb push` 和 `adb shell` 手动恢复)*
- 错误只会打印到 logcat 中,请注意查看 `BackupManagerService`。
打包 tar 归档文件最安全的方法是获取原始 backup.tar 文件中的文件列表:
```
tar tf backup.tar | grep -F "com.package.name" > package.list
```
然后使用该列表构建 tar 文件。在提取出的备份目录中:
```
tar cf restore.tar -T package.list
```
您现在可以打包 `restore.tar` 并尝试执行 `adb restore restore.ab`
# 发布版本
[Releases](https://github.com/nelenkov/android-backup-extractor/releases/latest) 版本由 Travis CI 从 master 分支构建,并包含一个可运行的 fat jar。
使用这些二进制文件的风险自负。不提供任何保证或支持。
请仅报告 backup extractor 本身的错误,我无法回答有关解包/重新打包备份或 tar 文件的问题。
(参见[用法](#usage)获取简易使用指南。)
[](https://travis-ci.com/nelenkov/android-backup-extractor)
# 备注
有关备份格式和工具实现的更多详细信息,请参阅[相关博客文章](https://nelenkov.blogspot.de/2012/06/unpacking-android-backups.html)。
标签:adb backup, Android Debug Bridge, Android备份提取, Bouncy Castle, Cryptography, HTTP工具, ICS+备份, Java工具, JS文件枚举, Maven构建, tar解包, 后台面板检测, 域名枚举, 备份解密, 备份转换, 安卓备份文件格式, 开源安全项目, 数据恢复, 数据提取与打包, 演示模式, 目录枚举, 移动安全, 网络发现, 逆向分析工具