【原創】Android下未root時導出data/app目錄下APK的方法

一、背景

很多時候,APK文件只存在於應用市場,在PC上無法直接下載。用手機下載下來後就直接安裝了,也不能保存原始的APK文件。

APK安裝到手機後,Android系統會保存一份和原始APK一模一樣的拷貝,位於data/app目錄,文件名爲“APK的包名-1.apk”或者“APK的包名-2.apk”。這裏的包名即 package name,形如 com.xxx.xxx。

data/app這個目錄在非root的情況下,是無法直接查看的。但幸運的是,這個目錄下所有的APK文件,是有other組可讀權限的。

這就是本文方法的原理了。

下面以微信這個APK爲例來說明下具體的操作步驟。

二、步驟

Step 0:在手機上安裝APK,打開(在下面的步驟中保持APK處於打開狀態)。

Step 1:將PC通過adb連接上手機。這步顯然是必要條件,對adb不清楚的請自行查閱相關資料

Step 2:獲取APK的包名(package name) - 最重要的一步 - 有兩種方法

第一種方法 -- 如果你大概知道這個APK的包名可能會包含什麼字符串。

比如,我們知道微信是騰訊出品的,那麼按慣例,它包名裏面肯定包含了“tencent ”這個字符串。

方法:打開PC的命令行,輸入adb shell ps。它會列出當前手機中所有正在運行的程序,肯定包含了你要的APK的包名。

在這個輸出裏面查找包含 tencent的行,你很快就可以找到,它的包名是 com.tencent.mm。

第二種方法 -- 如果你對這個APK的包名可能包含什麼內容一無所知。

這時可以使用一個比較複雜的命令:dumpsys activity activities

方法:打開PC的命令行,輸入adb shell dumpsys activity activities ,它會列出當前手機中所有正在運行的應用的詳細信息,按打開順序排列,最後打開的APK信息會放在輸出的最前面。

(輸出非常長,可以重定向到文件中查看到 adb shell dumpsys activity activities > temp.txt)

這個文件最前面幾行看起來是這樣的:

    ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)  
      Main stack:  
      * TaskRecord{41aa9ed0 #4 A com.tencent.mm U 0}  
        numActivities=1 rootWasReset=true userId=0  
        affinity=com.tencent.mm  
        intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] ***=0x10600000 cmp=com.tencent.mm/.ui.LauncherUI}  
        realActivity=com.tencent.mm/.ui.LauncherUI  
        askedCompatMode=false  
        lastThumbnail=null lastDescription=null  
        lastActiveTime=19915965 (inactive for 10s)  
        * Hist #9: ActivityRecord{41ba1a30 u0 com.tencent.mm/.ui.LauncherUI}  
            packageName=com.tencent.mm processName=com.tencent.mm  

發現了嗎,第三行就已經有我們需要的信息了:com.tencent.mm
不要被裏面的技術細節信息嚇倒了,我們不需要關心那些~

Step 3:利用adb pull命令導出APK

知道了APK的包名,導出APK就簡單了。因爲data/app下的APK文件名只有兩種情況,一個一個試就行了

adb pull data/app/com.tencent.mm-1.apk com.tencent.mm.apk

adb pull data/app/com.tencent.mm-2.apk com.tencent.mm.apk


備註:Android4.4以後,dumpsys的輸出有點變化,這裏,在獲取到dumpsys的輸出後,搜索關鍵字:Stack #1 ,就可以在下面幾行找到類似的包名了

<完>
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章