如何通过ADB从Android Studio模拟器导出指定应用的登录令牌Token
安卓模拟器导出应用Token的可行方案
该需求可正常实现,核心分为两种路径,对应Token的两种常见存储形态,具体操作如下:
1. 从应用本地私有目录提取Token
绝大多数应用的Token都会存储在自身私有目录下,根据应用是否可调试分为两种操作场景:
- 目标为可调试应用(比如你自行开发的应用):
无需root权限,直接通过ADB即可访问私有目录,操作步骤:- 执行
adb shell进入模拟器的shell环境 - 执行
run-as <你的应用包名>切换到应用专属权限上下文 - 按优先级查找以下存储位置的Token内容:
shared_prefs/目录下的XML配置文件,执行cat shared_prefs/*.xml即可直接查看明文内容files/目录下的自定义配置文件、缓存文件databases/目录下的SQLite数据库文件,可执行adb pull将文件导出到本地后用数据库工具打开检索
- 执行
- 目标为第三方不可调试应用:
先给模拟器获取root权限,Android Studio官方提供的可写系统镜像可直接执行adb root开启root,之后直接访问/data/data/<你的应用包名>/下的对应目录检索即可。
2. 抓包提取网络请求中的Token
如果本地存储的Token做了加密无法直接解析,可直接抓包获取请求中的明文Token,操作步骤:
- 给模拟器配置代理,和你电脑上的抓包工具(Charles、Fiddler、mitmproxy均可)保持在同一局域网下
- 在模拟器安装抓包工具的根证书,安卓7.0及以上系统默认不信任用户证书,如无法抓取HTTPS包,可将证书移动到系统证书目录,或使用安卓6.0及以下版本的模拟器镜像
- 触发应用的任意业务网络请求,直接在请求头(常见为
Authorization字段)或请求参数中即可提取到明文Token。
如果目标应用开启了SSL Pinning导致抓包失败,可通过Frida、Xposed等工具Hook掉应用的SSL Pinning校验逻辑后再抓包。
内容的提问来源于stack exchange,提问作者Bella Smith
相关产品推荐
相关产品推荐

