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版本):http://waternote.ctfile.net/fs/2276132-372991817
  2. Auto-sign
    TT中文网修改版:http://www.tttabc.com/android/android.html
    博主备份地址:http://waternote.ctfile.net/fs/2276132-372991808
  3. ADB Shell或者Android Studio3.0+
    ADB Shell请自行百度或谷歌
    Android Studio下载:https://developer.android.google.cn/studio
    博主备份地址(3.2版本):http://waternote.ctfile.net/fs/2276132-372994612


三、原理

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

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


四、使用示例

我们这里以某个国外的日麻小游戏(不是雀魂=。=)作为实际操作的例子。

  1. 我们使用apktool来对软件进行拆包,运行CMD→进入apk所在目录,之后对其进行解包。
apktool d .\雀娘!てんぱい_1.0.1.apk"

进入目录输入命令:

解包完毕:

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

  1. 我们打开该文件夹,找到并打开AndroidManifest.xml文件,找到application字段,并在其后面添加android:debuggable="true"属性(它里面属性太多了为了方便截图我删了一些,正常在后面添加就好了)。
  2. 然后我们需要使用apktool将其重新打包成apk,还是在刚才的路径下。
apktool b .\雀娘!てんぱい_1.0.1

进入目录输入命令:

打包完毕:

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

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

    获得一个已经签名过了的apk:
  2. 安装,这个不用说了,然后我们可以使用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。。。。这方法麻烦死了


参考资料:


本文章笔记版本地址:http://ccdd6ec5.wiz03.com/share/s/3cTmX51TMQ-b2QTact03UPg80Yl5A73U7ALk2WfJML1iy4wy

2 评论

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

    • 没办法获取,签名不一致会导致你无法覆盖安装,需要先卸载之前的应用才能安装新签名过的apk。并且现在很多手游会联网校验,不一致会导致无法进入游戏。同时这篇文章也比较老了,新的话推荐找一个叫做‘MT管理器’的APP,可以直接在手机上完成这些,更方便。具体可以搜索下相关教程,网上很多。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注