Android无root,获取其他应用内部存储的数据

前言

最近在负责一个项目,需要获取其他应用的内部存储中的文件,即data/data/下的文件,并转存到sdcard上。有一点Android基础的都知道data/data/中的文件对其他应用是不可见的,在没有源码的条件下,无法直接访问data/data中的文件。问了公司的大佬,大佬提供了两种思路,一种是run-as命令进入data/data,直接copy;另一种是hook。具体怎么实施,且听我慢慢道来。

方法一,run-as命令

条件:

安装包是debug包(release包也可以利用反编译重新打包,变成debug包,网上有很多文章可以参考)

步骤:

1、连接手机到电脑,打开usb调试

2、命令行中输入 adb shell run-as <包名>

示例:

1.png

com.ss.android.ugc.aweme(抖音)不是debug包,无法使用run-as命令。

com.example.yilialin.jsonreport(我自己写的app)是debug包,使用run-as命令可以进入data/data目录下,输入ls,可以看到data/data目录下的所有文件/文件夹

3、输入 cat <文件名> >  ,直接拷贝到sdcard中

示例:

2.png

不出现任何提示,表明已经成功拷贝到了sdcard中。

优点:

几行命令直接搞定

缺点:

1、需要手工敲命令,难以实现自动化

2、debug包才能使用

方法二,hook神器——xposed插件

条件:

没有限制,安装包是release包或者debug包都可以,手机不需要root

步骤:

有关于xposed插件可以参考文章:https://blog.csdn.net/yzzst/article/details/47659479

https://blog.csdn.net/niubitianping/article/details/52571438

https://blog.csdn.net/niubitianping/article/details/52574650

其实无root也是可以使用virtualxposed的,将xposed插件和想要hook的app克隆到virtualxposed中就可以使用了。

优点:

不受root权限和debug包的限制

缺点:

前期需要做的事情多,xposed插件编写比较麻烦


后序

我研究了几个星期的xposed hook,才学会了怎么使用,原理还不是特别明白,先用着吧==

听别人说再多也只是纸上谈兵,关键是要自己动手操作,有很多问题都是在实施的过程中出现并解决的,在问题中学习不失为一种好方法。

干货

奉上我的xposed插件,供学习参考,有什么不对的地方,还望不吝赐教!

https://github.com/Yiliayan/douyinxposed.git

你可能感兴趣的:(Android无root,获取其他应用内部存储的数据)