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)获取简易使用指南。) [![Build Status](https://travis-ci.com/nelenkov/android-backup-extractor.svg?branch=master)](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解包, 后台面板检测, 域名枚举, 备份解密, 备份转换, 安卓备份文件格式, 开源安全项目, 数据恢复, 数据提取与打包, 演示模式, 目录枚举, 移动安全, 网络发现, 逆向分析工具