美文网首页Android笔记
使用adb查看别人家APP的数据

使用adb查看别人家APP的数据

作者: 艾在灵魂深处 | 来源:发表于2019-04-12 17:00 被阅读0次

    目录:

    1.说明
    2.使用adb命令获取指定应用的包名和Activity名称
    3.使用adb命令启动/关闭APP
    4.使用adb命令把手机中的apk导到电脑上
    5.查看apk中的AndroidManifest.xml文件
    6.使用adb命令进行数据备份
    7.查看数据
    8.结语

    1.说明

    查看其它APP数据的前提是该APP默认开启数据备份,也就是allowBackup属性。
    想问一下大家在平时的开发中对应用的安全性有很在意么?有可能大家会想到加密、混淆、apk加固,但还有一些其他细节的东西需要大家去了解。今天就介绍一下android:allowBackup属性。这个属性在开发的过程中通常是默认开启的,Google起初是为了防止数据丢失,留下了这个功能,但是这个属性也容易造成一些隐私数据的泄露。如果你想关闭可以把它设置为false。那么这个属性在哪里设置呢,就在AndroidManifest.xml文件中的application标签中。

    2.使用adb命令获取指定应用的包名和Activity名称

    要备份APP的数据,首先我们要知道这个APP的包名才可以进行备份。

    第一种方法

    在手机或模拟器上面运行APP,然后输入命令:adb shell dumpsys activity top #
    这时会输出很多东西,你可以用查找功能Ctrl+F,找到TASK,下图红框中就是要找的包名

    获取包名

    第二种方法

    命令:adb logcat| findstr START
    然后在手机或模拟器上点击你想要获取的应用,这时就会在cmd中出现相应的包名和类名了。

    获取包名和启动类名
    1、该应用的包名
    2、该应用启动的类名
    记住这个参数cmp(等同于第一种方法中的ACTIVITY去掉后面的多余的),我们在下面会用到。

    3.使用adb命令启动/关闭APP

    启动APP的命令:adb shell am start -W -n package/activity

    扩展 :adb shell am 指令查看

    命令窗口通过adb shell 进入android 的Linux命令界面,输入am help看到如下信息:


    adb shell am命令

    它会展示出在不同场景下(比如start-activity、start-service等)不同参数代表的意义一些参数的意义,情况太多了这里就不细说了。

    回到正题,后面的package和activity就是上面获取包名第二种方法中提到的cmp,比如我们要启动谷歌地图:adb shell am start -W -n com.google.android.apps.maps/com.google.android.maps.MapsActivity

    启动APP命令

    在这里我们再做一个延伸,用命令做APP的冷启动和热启动操作,然后记录启动的时间
    我们看到上图中有三个数字ThisTime、TotalTime和WaitTime,这三个数字就是本次启动APP所花费的时间。
    热启动时退出退出APP的命令:adb shell input keyevent 3,这就相当于按了手机的home键,然后我们再执行启动APP的命令,这样就完成了热启动。

    热启动操作命令
    a:第一次启动(冷启动,之前没有该APP的进程在后台运行)
    b:冷启动花费的时间
    c:退出APP的命令(相当于按下home键)
    d:第二次启动(热启动)
    e:热启动花费的时间

    我们看到热启动花费的时间比冷启动少了很多,一套冷、热启动的流程我们就走完了。接下来就看我们怎么去优化了,让它们变的更少。所以我们在平时做启动优化的时候可以把自己的APP和一些优秀的APP做一下对比看看还差多少。

    上面已经说过了一种退出APP的方法了,接下来这个命令是相当于杀掉当前的APP进程。
    命令:adb shell am force-stop package
    这时候再使用启动命令,就相当于冷启动了。

    4.使用adb命令把手机中的apk导到电脑上

    有的时候我们在手机上查看和操作apk不是特别方便,而且通过文件管理找apk也很难找。接下来就介绍怎么用adb命令把手机中的apk导到电脑上。

    第一步

    通过包名获取apk在手机中的存储路径,命令adb shell pm path package

    获取apk的路径
    package后面就是apk的路径

    第二步

    导出apk文件,到当前目录下
    命令:adb pull 路径

    导出apk.png
    如果出现进度的提示,就表示导出成功了。等待到100%就好了。

    5.查看apk中的AndroidManifest.xml文件

    这一步就要看一下apk中有哪些东西了,主要还是看一下AndroidManifest.xml文件当中的allowBackup设置。
    我平常用的方法就是吧apk文件的后缀该成zip,然后就可以看到里面的东西了。下面的是谷歌地图的apk的构成。


    谷歌地图apk

    下面来看一下AndroidManifest.xml文件,会看到都是乱码,但是关键的信息还是可以获取的,我们目前想要的就是下图红框中的allowBackup属性,像谷歌的APP肯定是把它设置成false的,所以我们没办法备份它的信息的。


    谷歌地图apk中AndroidManifest.xml

    那么我们怎么看一个应用的allowBackup属性设置成true还是false呢,我的观察和实践出来的方法是看allowBackup后面有没有小方框,有就代表设置了true。如果有哪位大神知道好的可靠的方法还请留言告知。

    下面是其他apk中的AndroidManifest.xml文件,后面带了个小方框。


    其他apk中的AndroidManifest.xml

    6.使用adb命令进行数据备份

    在了解到APP可以备份之后,我们就可以开始做坏事了,哈哈。
    备份的命令:adb backup -nosystem -all -noapk -noshared -f data.ab package

    [-system | -nosystem] 是否备份系统
    [-apk | -noapk] 是否备份apk安装文件
    [-shared | -noshared] 是否备份手机存储空间
    -f *.ab 存档格式一定要是.ab
    package:包名

    在运行命令之后,手机或模拟器会出现一个页面要求你输入备份密码,这个密码你可以随便输入,但你要记住,在后面查看ab文件的时候会用到。


    输入备份密码

    输入密码,点击【备份我的数据】之后就开始备份了,备份完成之后会有提示,这时就是生产一个ab文件了。

    7.查看我们备份的数据

    ab文件大家很少接触,这里使用abe工具(链接:https://pan.baidu.com/s/1NPbhtF1fyJcHOm1CXwi9Dg
    提取码:uns4 )解析ab文件 ,也是通过命令,把abe.jar和刚才生成的ab文件放到同一个文件夹中,然后运行命令:java -jar abe.jar unpack xxx.ab xxx.rar
    (如果不想使用命令可以看看这篇文章https://www.feifeiboke.com/android/3639.html

    这个命令就是吧ab文件解析成rar文件,这样就能解压了,我们就能看到里面的东西。解压出来大概就是下面这个样子。其中比较重要的是db文件夹和sp文件夹,里面的数据我就不放了,容易引起不必要的误会。你可以自己动手试试。

    备份的数据

    8.结语

    写这篇文章还是提醒大家在平时的开发中要注重APP数据的安全问题,毕竟数据还是相当重要的。
    如果有哪里写的不对的地方,请指出,我会及时改正。

    相关文章

      网友评论

        本文标题:使用adb查看别人家APP的数据

        本文链接:https://www.haomeiwen.com/subject/sgvqwqtx.html