提取设备中的apk文件

测试的时候经常需要从设备中提取apk文件,通常情况下,普通apk安装包位于/data/app/目录下,系统apk位于/system/app或/system/priv-app/目录下,结合包名就可以找到apk文件的路径,由于全局可读,所以直接dump出来就可以。

Android 8.0之后,apk文件的路径添加了随机字符,例如“/data/app/com.tencent.mobileqq-onrUh_8jpKjlW5JhNSDwNQ==/base.apk”,这就给提取apk文件带来了困难。然而有一个命令是可以很方便找到这个路径的,那就是pm path。

不仅仅普通apk,连系统apk路径也能显示出来
upload successful

之后直接adb pull /data/data/com.x.x.x/app_name.apk就可以拿到apk文件了。

附一些可能用到的命令:

  • pm list packages
    列出所有安装的apk

  • pm list packages -f
    列出APK的路径

  • pm list packages -s
    列出所有的system APP

  • pm list packages -3
    列出所有的第三方APP

  • pm list packages keywords
    匹配关键字的包名

提取所有可执行文件:

1
find / 2>/dev/null|grep -E '\.jar|\.apk|\.so|\.dex' | xargs grep "xxxx"