adb
✅ 两个问题直接结论
- adb 完全可以查出手机安装的所有应用(包名),不需要Root,只需要开启USB调试
- adb 可以把已安装应用的apk提取(pull)到电脑,相当于打包导出,第三方用户APP免Root;部分系统预装APP要看分区权限
原理:不是重新编译打包,是直接拷贝手机上已经存在的原始安装文件
base.apk(现代很多App是Split APK,会有多个apk,需要全部拉取)
一、查看已安装APP命令
# 列出全部应用(系统+第三方)
adb shell pm list packages
# 只列出【第三方自己装的APP】(推荐,过滤系统预装)
adb shell pm list packages -3
# 列出同时附带apk路径
adb shell pm list packages -3 -f
Windows筛选某个包名示例(找fake gps这类虚拟定位app):
adb shell pm list packages -3 | findstr fake
二、导出APK完整流程(免Root)
- 先查包路径
adb shell pm path com.xxx.appname
输出示例:package:/data/app/~~xxxx==/com.xxx.appname-xxx/base.apk
把
package:后面的路径拿出来
- pull拉到电脑(windows示例,保存到当前cmd目录)
adb pull /data/app/~~xxxx==/com.xxx.appname-xxx/base.apk ./output.apk
⚠️ 重要限制
- Split APK(App Bundle):现在很多应用不是单个base.apk,会返回多条路径,需要把所有apk全部pull,只拉base.apk会安装失败。
- 系统核心应用:
/system/priv-app部分高权限系统应用,普通adb shell权限会Permission denied,需要Root才能导出。 - 导出的apk = 原始安装包,不含用户账号数据,只是安装文件;如果要连带应用数据备份,要用
adb backup。 - 合规提醒:仅用于自己设备、自己安装的应用调试备份;不要提取别人的商业APP用于逆向、分发。
前置准备
- 手机开启开发者选项 + USB调试,电脑授权RSA调试
- 电脑安装Android SDK Platform Tools(官方adb)
- 数据线连接,先校验连通:
adb devices,能看到设备序列号才可以
补充小技巧
查看当前前台正在打开的APP包名:
adb shell dumpsys window | findstr mCurrentFocus

浙公网安备 33010602011771号