利用ADB獲取APP資源

最近小編常常受到失眠的困擾,由於在編寫一個安卓體能評定的軟件,同時又在構思一個桌面管理應用,無論是構想仍是操做上都遇到了不少難題,因此寄但願於小編手機上的一款軟件,由於版權問題,就不說出它叫啥名字了。這個軟件功能棒棒噠,有專門治療失眠的欄目,但是必須聯網在線聽。有時候夜裏睡前是會把手機調成飛行模式的,這樣就聽不了那些音樂了,而聽那些音樂,又經常會有加班的同事打進電話來,搞的我很煩惱。爲何不把這些音樂下載下來呢?說的好聽,作起來難!現把我白瞟下來的步驟記錄下來,期間會略去關鍵信息,僅用於技術參考,其餘概不負責java

1、準備工具

adb、安卓手機、RAR解壓軟件和瀏覽器(推薦谷歌)。android

  1. 調試好adb在系統變量path中的路徑,以即可以直接啓動adb命令行。
  2. 安卓手機鏈接電腦,並啓動開發者模式。

2、adb命令行

(一)確認設備是否正常鏈接

adb shell get-state獲取設備鏈接狀態。
只有設備正常鏈接才能進行後續操做,設備鏈接不成功有好多緣由,好比手機USB驅動沒有安裝、數據線不穩定、手機調試模式沒有打開等等。正則表達式

(二)查找目標app包名及存儲路徑並拉取

  1. 在命令行中輸入adb logcat | findstr START記錄運行程序並在其中找到剛剛啓動的程序,你會看到諸如
START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]
flg=0x10200000 cmp=XXX.XXX.XXX/XXXActivity} from pid 1461

之類的東西,其中XXX.XXX.XXX就是要找的包名,再繼續點進我要找的音樂那個界面,發現它是WebViewActivity,這就好辦了,包裏確定有相關網址信息,而後按CTRL^C退出adb logcat。shell

  1. 按照這個思路再輸入adb shell am start -W -n XXX.XXX.XXX/XXXActivity啓動軟件,以確認它就是目標軟件主界面。
  2. 輸入adb shell am force-stop XXX.XXX.XXX強制關閉app。
  3. 輸入adb shell pm path mtn.plaust.penewstd獲取APP安裝路徑package:/data/app/XXX.apk
  4. 輸入adb pull /data/app/XXX.apk拉取apk到電腦當前目錄。

個人理解是am = Activity Manager, pm = Package Manager,-W是-Wait即等待Activity啓動 -n是指定Activity名。json

3、查看apk信息

用RAR軟件查看apk,在assets/sleep/文件夾下找到CoreXXXXXXNew.txt,打開一看,是json格式的,在其中找到了我要的信息:瀏覽器

{
	"name": "XXXXX",
	"img": "XXX.png",
	"imgSquare": "XXX.jpg",
	"url": "https://www.XXXXXXX.com/XXXXXX/#/voice/146",
	"description": "XXX",
	"type": "music",
	"style": "入睡困難",
	"model": "0"
}

4、使用瀏覽器調試

  1. 打開瀏覽器按F12,並輸入地址訪問,在Network查看找到一條記錄,如圖所示:sleep*.mp3記錄,也可使用正則表達式過濾.*\.mp3搜索mp3格式的文件。
  2. 查看headers信息,找到資源文件URL地址,複製連接,而後使用瀏覽器就下載下來了。

5、其餘方法的嘗試

根據在簡書上參考的一篇文章[使用adb查看別人家的app數據][https://www.jianshu.com/p/d25bb146ef36],我又在第二大步驟的基礎上進行了如下嘗試:app

  1. 備份
//備份 -nosystem不備份系統 -all全部數據 -noshared除了手機存儲空間 -f data.ab輸出結果
adb backup -nosystem -all -noapk -noshared -f data.ab
  1. 使用abe.jar解包
    java -jar abe.jar unpack data.ab data.rar 備份密碼

可是結果報錯,反正個人目的已經達到了,就不求甚解吧。工具

相關文章
相關標籤/搜索