admin管理员组

文章数量:1558098

提取Android中已安装的apk,这个需求很多时候都会遇到。比如从google play上安装过apk后,如何提取出来给别人用?

本文1. 先介绍转载的apk提取方法并 2. 验证提取出来的apk和安装之前的apk的一致性。

0x01原文:adb 取出安装在手机中的 apk

参考:http://wiki.jikexueyuan/project/android-actual-combat-skills/adb-remove-the-apk-installed-on-the-phone.html

场景:

朋友看见你 Android 手机中的游戏或应用很好玩,也想装一个此程序,但限于网络条件不能从网上下载。那么最简单的办法就是直接从你手机中将此 apk 扣出来给他安装上。

pm 命令

第一步,找到程序的包名

借助 adb shell pm 命令,将安装的所有应用包名列出来:

    $ adb shell pm list packages
    package:android
    package:cn.wps.moffice
    package:com.android.backupconfirm
    package:com.android.bluetooth
    package:com.android.browser
    package:com.android.calculator2
    package:com.android.camera
    package:com.android.certinstaller
    package:com.android.contacts

第二步,找到 apk 的位置

    $ adb shell pm path com.tence01.mm
    package:/data/app/com.tence01.mm-1.apk

第三步,pull 出来

    $ adb pull /data/app/com.tence01.mm-1.apk ~/apks
    2407 KB/s (25567735 bytes in 10.370s)

root 的手机会更好办

    $ adb shell
    shell@android:/ $ su
    shell@android:/ # cd data/app
    shell@android:/data/app # ls
    com.android.update.dmp-2.apk
    com.baidu.superservice-1.apk
    com.tence01.mm-1.apk
    com.tencent.mm-1.apk

或者直接搜索你要的 apk:

    shell@android:/ # find -name *.apk
    ./udisk/我的下载/download/我的应用/aqgj_1365562277812.apk

0x02验证

先通过adb install的apk,提取处来diff,发现和之前的apk是一致的:

 

 

PS:

20200509 apkpure下载的文件签名都验证不了了,大家下载的时候注意一点吧。

apksigner verify -v --print-certs  Google\ Chrome\ Fast\ Secure_v81.0.4044.138_apkpure.xapk

本文标签: androidappapk