我的手机是user版本,data/app目录不能通过adb shell ls读取。

$ adb shell ls /data/app
ls: /data/app: Permission denied

但是可以通过其他方式获取 data/app目录中的apk路径。

★ 获取 data/app中 apk的路径

        PackageManager pm = getPackageManager();ArrayList<PackageInfo> thirdPartyAppList = new ArrayList<>();List<PackageInfo> pkgList = pm.getInstalledPackages(0);if (pkgList != null && pkgList.size() > 0) {for (PackageInfo pi : pkgList) {Log.e(TAG, "pkg name: " + pi.packageName);Log.e(TAG, "dir: " + pi.applicationInfo.publicSourceDir);if (pi.applicationInfo.publicSourceDir.startsWith("/data/app/")&& !pi.packageName.startsWith("com.smartisanos.")) {thirdPartyAppList.add(pi);}}} else {Log.e(TAG, "No packages");}if (thirdPartyAppList.size() > 0) {Log.e(TAG, "====================================================");for (PackageInfo pi: thirdPartyAppList) {//Log.e(TAG, "pkg name: " + pi.packageName);Log.e(TAG, "dir: " + pi.applicationInfo.publicSourceDir);}}

打印的log如下(部分log,且通过Notepad++的列模式拷贝出来)

/data/app/com.zcbl.bjjj_driving-2/base.apk
/data/app/com.sankuai.meituan-1/base.apk
/data/app/com.youku.phone-2/base.apk
/data/app/com.dianping.v1-1/base.apk
/data/app/com.tencent.mm-2/base.apk
/data/app/com.sdu.didi.psnger-1/base.apk
/data/app/com.dangdang.buy2-2/base.apk
/data/app/com.tencent.mobileqq-1/base.apk
/data/app/com.zhihu.android-1/base.apk

通过Notepad++的列编辑模式,可以在每一行添加上 adb pull,如下:

adb pull /data/app/com.zcbl.bjjj_driving-2/base.apk
adb pull /data/app/com.sankuai.meituan-1/base.apk
adb pull /data/app/com.youku.phone-2/base.apk
adb pull /data/app/com.dianping.v1-1/base.apk
adb pull /data/app/com.tencent.mm-2/base.apk
adb pull /data/app/com.sdu.didi.psnger-1/base.apk
adb pull /data/app/com.dangdang.buy2-2/base.apk
adb pull /data/app/com.tencent.mobileqq-1/base.apk
adb pull /data/app/com.zhihu.android-1/base.apk

将此内容存为批处理文件,例如pull.bat.
但是执行pull.bat,只会得到一个base.apk.因为文件名相同,都给覆盖了。

★ 利用正则表达式 修改base.apk为特定文件名

如图,『 查找目标』填: /data/app/([a-zA-Z0-9_.\-]*)/base.apk
『替换为』填: /data/app/\1/base.apk \1.apk

效果:执行『全部替换』后,内容变为:

adb pull /data/app/com.zcbl.bjjj_driving-2/base.apk com.zcbl.bjjj_driving-2.apk
adb pull /data/app/com.sankuai.meituan-1/base.apk com.sankuai.meituan-1.apk
adb pull /data/app/com.youku.phone-2/base.apk com.youku.phone-2.apk
adb pull /data/app/com.dianping.v1-1/base.apk com.dianping.v1-1.apk
adb pull /data/app/com.tencent.mm-2/base.apk com.tencent.mm-2.apk
adb pull /data/app/com.sdu.didi.psnger-1/base.apk com.sdu.didi.psnger-1.apk
adb pull /data/app/com.dangdang.buy2-2/base.apk com.dangdang.buy2-2.apk
adb pull /data/app/com.tencent.mobileqq-1/base.apk com.tencent.mobileqq-1.apk
adb pull /data/app/com.zhihu.android-1/base.apk com.zhihu.android-1.apk
  • 20190418 update:
    替换的正则表达式也可以这么写:
    查找目标: (/data/app/([a-z0-9.]*).*/base.apk)
    替换为: \1 \2.apk

    举例:
    对于 /data/app/com.tencent.qqlive-HdJXiU5wzF6WsqpVhxnZIQ==/base.apk 替换后的结果为:
    /data/app/com.tencent.qqlive-HdJXiU5wzF6WsqpVhxnZIQ==/base.apk com.tencent.qqlive.apk
    优点是,不再要 -HdJXiU5wzF6WsqpVhxnZIQ== 这部分内容,这部分内容正好是用 -分割的,所以匹配时没有匹配 -,导出来的apk的名字为 com.tencent.qqlive.apk

  • 补充:
    如果在 cygwin 中执行 pull.sh 脚本,需要注意换行符。
    如果有回车符 \r, 会出错。出错信息,大致如下:

': No such file or directoryn.richinfo.automail.apk
': No such file or directoryom.aspire.mm.apk
': No such file or directoryom.chinasofti.rcs.apk
': No such file or directoryom.diotek.sec.lookup.dictionary.apk

解决方法,替换掉回车符,我用的是 Notepad++,可以在 Edit -》 EOL Conversion -》UNIX/OSX Format
或者用 Ctrl + H 替换,打开 Entended (\r, \n,\t...),搜索 \r,替换即可。

批量提取 data/app目录中的apk文件相关推荐

  1. 【Android 逆向】获取安装在手机中的应用的 APK 包 ( 进入 adb shell | 获取 root 权限 | 进入 /data/app/ 目录 | 拷贝 base.apk 到外置存储 )

    文章目录 一.获取 APK 包流程 二.获取 APK 包完整流程命令行输出 一.获取 APK 包流程 从应用市场中下载的应用 , 安装完毕后 , 自动删除 ; 如果想要获取安装应用的 APK 包 , ...

  2. 如何在Android模拟器中安装APK文件?

    我终于设法混淆了我的Android应用程序,现在我想通过安装APK文件并在模拟器上运行来测试它. 如何在Android模拟器上安装APK文件? #1楼 从浏览器下载apk文件,然后点击它(通知区域). ...

  3. 如何在Eclipse中构建APK文件?

    当我使用Eclipse开发项目时, APK文件会在模拟器上运行. 但我想将我的应用程序上传到真实设备. 有没有工具来构建一个APK文件? 这个过程是什么? 或者是否可以从模拟器中提取APK文件? #1 ...

  4. android 8(O)预装APP到data/app目录

    需求 想内置应用到/data/用户区,让其可卸载 系统android 8(O) android 11可查看另外一篇<android 11®预装APP到data/app目录> 集成步骤 假设 ...

  5. App inventor访问assets目录中的资源文件的方法

    应用中需要打开一个本地的HTML文件.用AI伴侣调试的时候,上载的HTML文件被保存到手机的调试目录中(android/data/com.wxbit.appinventor.aicompanion3/ ...

  6. android 11(R)预装APP到data/app目录

    android高版本,默认是无法预装app到/data/app目录下的,因为用低版本的方法去修改的话烧录后会无法开机. 步骤 假设是添加myapplication.apk到sdk中的, 烧录后要装到/ ...

  7. 怎么批量提取文件名到excel中?

    怎么批量提取文件名到excel中?现在是互联网时代,我们做任何事情都离不开电脑的使用,有些时候需要将文件名称批量导出,有时我们需要将很多的文件名称汇总到一个Excel表格中,大多数人在第一次碰到的时候 ...

  8. 办公室小姐姐的福利!用Python批量提取word文档中的表格和图片内容

    点上方"菜鸟学Python",选择"星标" 第491篇原创干货,第一时间送达 最近有许多小伙伴想要一些自动化办公的福利小程序,今天就满足大家的需求.日常的办公过 ...

  9. 从Word中批量提取数据到Excel中,Word导出到Excel的利器

    从Word文件中取值并导出到Excel中,有现成的工具可实现. 不过要通过工具来批量取值,Word文件中的目标字符必须有规律才行,例如都处于表格中,或者都有下划线,只要目标符合指定的规则就可以批量提取 ...

最新文章

  1. [译] Vue.js 优雅地集成第三方 JavaScript
  2. linux kernel随机数
  3. 对比几个数据概念,数据仓库、数据集市、数据湖、数据中台分别是什么?到底有什么区别?都得做吗?
  4. Active Noise Cancelling-主动噪声消除
  5. binwalk -e mysql_Binwalk的安装和使用
  6. java date postmax_Postman支持的几种数据类型请求方式
  7. 在考生文件夹存有JAVA3_注意:下面出现的“考生文件夹”均为%USER%在考生文件夹下存有文件名为J_网考网(Netkao.com)...
  8. 在使用 Go 两年之后,我又转回 PHP 了
  9. python生成验证码_Python快速生成验证码
  10. python基础代码大全-python零基础入门命令方式汇总大全,快速恶补你的Python基础...
  11. WEB UI设计规范
  12. Unity读取CSV表格时出现中文乱码处理方式
  13. 可“一键”轻松激活Office 2010系列“VOL”版本的又一款迷你“KMS服务器”
  14. python 多继承 MRO
  15. EditPlus下载安装和汉化
  16. Telltale:简化了Netflix应用程序监视
  17. Java基础之序列化
  18. Javascript图片裁切
  19. 详解ARM的AMBA设备中的DMA设备(Linux驱动之DMA)
  20. 地图采集车的那些事 | 载车篇

热门文章

  1. Ubuntu 下apache2 虚拟主机配置
  2. html打开方式解锁,解锁bootloader
  3. 车牌识别 瞬间启动 快速抓拍 超低功耗 的4G智能摄像头方案
  4. 网络基础知识之IP与子网掩码和网络地址
  5. android将两张图片合并为一张图片
  6. 【技术类】【ArcGIS对国产卫星的支持2:高分一号卫星】篇2、高分一号(GF-1)卫星影像数据介绍
  7. 2013夏-一篇杂文
  8. 谷歌浏览器的timeline工具的使用
  9. 时序路径(Timing path)简介
  10. 量子计算--复习+量子信息--铺垫(学习笔记)