前言
最近在負(fù)責(zé)一個(gè)項(xiàng)目,需要獲取其他應(yīng)用的內(nèi)部存儲(chǔ)中的文件,即data/data/下的文件,并轉(zhuǎn)存到sdcard上。有一點(diǎn)Android基礎(chǔ)的都知道data/data/中的文件對(duì)其他應(yīng)用是不可見(jiàn)的,在沒(méi)有源碼的條件下,無(wú)法直接訪問(wèn)data/data中的文件。問(wèn)了公司的大佬,大佬提供了兩種思路,一種是run-as命令進(jìn)入data/data,直接copy;另一種是hook。具體怎么實(shí)施,且聽(tīng)我慢慢道來(lái)。
方法一,run-as命令
條件:
安裝包是debug包(release包也可以利用反編譯重新打包,變成debug包,網(wǎng)上有很多文章可以參考)
步驟:
1、連接手機(jī)到電腦,打開(kāi)usb調(diào)試
2、命令行中輸入 adb shell run-as <包名>
示例:

com.ss.android.ugc.aweme(抖音)不是debug包,無(wú)法使用run-as命令。
com.example.yilialin.jsonreport(我自己寫的app)是debug包,使用run-as命令可以進(jìn)入data/data目錄下,輸入ls,可以看到data/data目錄下的所有文件/文件夾
3、輸入 cat <文件名> > <sdcard中的文件名>?,直接拷貝到sdcard中
示例:

不出現(xiàn)任何提示,表明已經(jīng)成功拷貝到了sdcard中。
優(yōu)點(diǎn):
幾行命令直接搞定
缺點(diǎn):
1、需要手工敲命令,難以實(shí)現(xiàn)自動(dòng)化
2、debug包才能使用
方法二,hook神器——xposed插件
條件:
沒(méi)有限制,安裝包是release包或者debug包都可以,手機(jī)不需要root
步驟:
有關(guān)于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
其實(shí)無(wú)root也是可以使用virtualxposed的,將xposed插件和想要hook的app克隆到virtualxposed中就可以使用了。
優(yōu)點(diǎn):
不受root權(quán)限和debug包的限制
缺點(diǎn):
前期需要做的事情多,xposed插件編寫比較麻煩
后序
我研究了幾個(gè)星期的xposed hook,才學(xué)會(huì)了怎么使用,原理還不是特別明白,先用著吧==
聽(tīng)別人說(shuō)再多也只是紙上談兵,關(guān)鍵是要自己動(dòng)手操作,有很多問(wèn)題都是在實(shí)施的過(guò)程中出現(xiàn)并解決的,在問(wèn)題中學(xué)習(xí)不失為一種好方法。
干貨
奉上我的xposed插件,供學(xué)習(xí)參考,有什么不對(duì)的地方,還望不吝賜教!
https://github.com/Yiliayan/douyinxposed.git