批量提取 data/app目录中的apk文件
我的手机是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文件相关推荐
- 【Android 逆向】获取安装在手机中的应用的 APK 包 ( 进入 adb shell | 获取 root 权限 | 进入 /data/app/ 目录 | 拷贝 base.apk 到外置存储 )
文章目录 一.获取 APK 包流程 二.获取 APK 包完整流程命令行输出 一.获取 APK 包流程 从应用市场中下载的应用 , 安装完毕后 , 自动删除 ; 如果想要获取安装应用的 APK 包 , ...
- 如何在Android模拟器中安装APK文件?
我终于设法混淆了我的Android应用程序,现在我想通过安装APK文件并在模拟器上运行来测试它. 如何在Android模拟器上安装APK文件? #1楼 从浏览器下载apk文件,然后点击它(通知区域). ...
- 如何在Eclipse中构建APK文件?
当我使用Eclipse开发项目时, APK文件会在模拟器上运行. 但我想将我的应用程序上传到真实设备. 有没有工具来构建一个APK文件? 这个过程是什么? 或者是否可以从模拟器中提取APK文件? #1 ...
- android 8(O)预装APP到data/app目录
需求 想内置应用到/data/用户区,让其可卸载 系统android 8(O) android 11可查看另外一篇<android 11®预装APP到data/app目录> 集成步骤 假设 ...
- App inventor访问assets目录中的资源文件的方法
应用中需要打开一个本地的HTML文件.用AI伴侣调试的时候,上载的HTML文件被保存到手机的调试目录中(android/data/com.wxbit.appinventor.aicompanion3/ ...
- android 11(R)预装APP到data/app目录
android高版本,默认是无法预装app到/data/app目录下的,因为用低版本的方法去修改的话烧录后会无法开机. 步骤 假设是添加myapplication.apk到sdk中的, 烧录后要装到/ ...
- 怎么批量提取文件名到excel中?
怎么批量提取文件名到excel中?现在是互联网时代,我们做任何事情都离不开电脑的使用,有些时候需要将文件名称批量导出,有时我们需要将很多的文件名称汇总到一个Excel表格中,大多数人在第一次碰到的时候 ...
- 办公室小姐姐的福利!用Python批量提取word文档中的表格和图片内容
点上方"菜鸟学Python",选择"星标" 第491篇原创干货,第一时间送达 最近有许多小伙伴想要一些自动化办公的福利小程序,今天就满足大家的需求.日常的办公过 ...
- 从Word中批量提取数据到Excel中,Word导出到Excel的利器
从Word文件中取值并导出到Excel中,有现成的工具可实现. 不过要通过工具来批量取值,Word文件中的目标字符必须有规律才行,例如都处于表格中,或者都有下划线,只要目标符合指定的规则就可以批量提取 ...
最新文章
- [译] Vue.js 优雅地集成第三方 JavaScript
- linux kernel随机数
- 对比几个数据概念,数据仓库、数据集市、数据湖、数据中台分别是什么?到底有什么区别?都得做吗?
- Active Noise Cancelling-主动噪声消除
- binwalk -e mysql_Binwalk的安装和使用
- java date postmax_Postman支持的几种数据类型请求方式
- 在考生文件夹存有JAVA3_注意:下面出现的“考生文件夹”均为%USER%在考生文件夹下存有文件名为J_网考网(Netkao.com)...
- 在使用 Go 两年之后,我又转回 PHP 了
- python生成验证码_Python快速生成验证码
- python基础代码大全-python零基础入门命令方式汇总大全,快速恶补你的Python基础...
- WEB UI设计规范
- Unity读取CSV表格时出现中文乱码处理方式
- 可“一键”轻松激活Office 2010系列“VOL”版本的又一款迷你“KMS服务器”
- python 多继承 MRO
- EditPlus下载安装和汉化
- Telltale:简化了Netflix应用程序监视
- Java基础之序列化
- Javascript图片裁切
- 详解ARM的AMBA设备中的DMA设备(Linux驱动之DMA)
- 地图采集车的那些事 | 载车篇