前言
最近在负责一个项目,需要获取其他应用的内部存储中的文件,即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 <包名>
示例:
![](https://img.haomeiwen.com/i14956926/0c884e77f722f843.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中的文件名> ,直接拷贝到sdcard中
示例:
![](https://img.haomeiwen.com/i14956926/90f17405d04154b9.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
网友评论