Android如何不通过root获取到data data目录下的文件


一、前言

获取data/data目录下的文件最简单的方法当然是直接root,但是有的时候自己的手机可能没有办法root或者懒得root(备份资料太麻烦了)所以就需要用一些比较绕的方法来实现了。这个方法的适用性也不是很广泛,现在很多的软件都会二次校验apk的签名,这种方法也就失效了。还有的软件做了很多的加密,你连AndroidManifest.xml都看不见所以就更不可能了。
一句话说明方法:解包→添加debuggable属性→重新打包→签名→安装→使用ADB或者使用Android Studio的Device File Explore取得所需文件。


二、所需工具

  1. Apktool(安装与使用请参考官网或者本博客的另外一篇文章)
    官网下载地址:https://ibotpeaches.github.io/Apktool/
    博主备份(2.4.0版本):访问密码:crowsong | 解压密码:crowsong.xyz

  2. Auto-sign
    TT中文网修改版:http://www.tttabc.com/android/android.html
    博主备份地址:访问密码:crowsong | 解压密码:crowsong.xyz

  3. ADB Shell或者Android Studio3.0+
    ADB Shell请自行百度或谷歌
    Android Studio下载:https://developer.android.google.cn/studio
    博主备份地址(3.2版本):访问密码:crowsong | 解压密码:crowsong.xyz


三、原理

正常情况下没有root权限是没有办法查看data/data内的内容的,更不用说你是使用cd命令(错误的方法)还是run-as命令了(正确的方法)。所以我们需要将apk拆包然后找到AndroidManifest.xml文件,在里面添加android:debuggable="true"这条属性使程序变为开发debug模式,之后我们在使用run-as命令即可。

  • 使用错误的cd命令:除非你拥有root权限否则即使你写入了debuggable也是没有办法进入的
    Android如何不通过root获取到data data目录下的文件
  • 使用正确的run-as命令:这里我使用的是Android Studio的Device File Explorer工具(Android Studio 3.0以上自带)等同于在ADB Shell使用run-as命令。但是由于该APP没有打开debug模式,所以我们还是不能够查看到里面的文件。

四、使用示例

我们这里以某个国外的日麻小游戏(不是雀魂=。=)作为实际操作的例子。
我们使用apktool来对软件进行拆包,运行CMD→进入apk所在目录,之后对其进行解包。

apktool d .\雀娘!てんぱい_1.0.1.apk"

进入目录输入命令:

解包完毕:

在解包之后的文件会在与该apk同级的目录下:

我们打开该文件夹,找到并打开AndroidManifest.xml文件,找到application字段,并在其后面添加android:debuggable="true"属性(它里面属性太多了为了方便截图我删了一些,正常在后面添加就好了)。

然后我们需要使用apktool将其重新打包成apk,还是在刚才的路径下。

apktool b .\雀娘!てんぱい_1.0.1

进入目录输入命令:

打包完毕:

打包完毕后的apk文件会被保存在你打包的那个文件夹的dist目录下

注意路径:

虽然打包完了但是现在这个apk是没有签名的,没有签名是不能够安装的,所以我们还需要使用Auto-sign来对其进行签名。
将已经打包好的apk放到Auto-sign的文件夹里面,直接运行auto-sign-tt-v1.1.bat即可,签名完毕的apk会在Signed文件夹中。
运行签名的程序:

获得一个已经签名过了的apk:

安装,这个不用说了,然后我们可以使用ADB Shell或者Android Studio里面的Device File Explorer对文件进行操作了。
使用Device File Explorer已经可以成功的查看到里面的文件了(上面的是没有添加debuggable属性的另外一个apk):

这里强烈推荐Android Studio自带的Device File Explorer工具,非常的好用。
如果你要使用ADB Shell来操作的话需要注意以下几点:首先对于你想要修改的目录你需要先对其赋予额外的权限chmod 777 XXX/之后才可以去修改里面的文件,并且请不要尝试把修改后的文件先复制到sdcard然后再去复制或者移动到里面去,你会发现你还是没有权限=。=所以请直接使用adb pulladb push命令来对文件进行修改操作。当你操作完之后请记得把权限修改回去否则APP有可能会出错。

当然最简单的方法绝对是root。。。。这方法麻烦死了


参考资料:

  • https://blog.csdn.net/warriorpaw/article/details/8799213
订阅评论
提醒
用户头像

2 评论
最旧
最新 最多投票
用户头像
放手也是一种抉择
1 年 前

想问下apk的签名是如何获取的?(和应用程序原本的签名不一致是否有问题?)