AndroidStudio模拟器Charles抓包

创建AVD设备

在这里插入图片描述
点击启动按钮,打开avd设备

在这里插入图片描述

安装并启动apk

将apk安装包拖入avd设备桌面中安装
安装成功后,桌面上滑,通过图标启动,也可以通过adb命令启动

# 启动app
adb shell am start -W -n ${app包名}/${app启动Activity}
# 找app包名
adb shell pm list packages | grep ${keyword}

# 找启动类,利用AndroidSDK的build-tools下aapt命令对apk进行dump
cd ${AndroidSDK_PATH}/build-tools
./aapt dump badging ${/path/your.apk} | grep Activity
# 输出
launchable-activity: name=xxx

在这里插入图片描述

抓包

抓包软件charles,https://www.charlesproxy.com/

配置代理

charles查看本机IP
在这里插入图片描述
在这里插入图片描述

avd配置代理
在这里插入图片描述

启动app,查看抓包结果,发现https请求未知,只能抓到http请求
在这里插入图片描述

安装ssl证书

Android7.0以后,常规下载安装charles的证书的方法,只能装到用户证书下,非系统根证书,仍然是不被app信任的,无法抓https
avd设备是Android12,所以要用其他方法,将charles证书装到系统根证书下。

下载证书

在这里插入图片描述
会下载一个charles-ssl-proxying-certificate.pem证书

证书格式化

avd设备的系统证书和用户证书格式不同,我们需要格式化
查看avd设备系统证书

adb shell 
cd /system/etc/security/cacerts/ 
ls

在这里插入图片描述
发现系统证书都是.0格式,名称是一串编码,我们可以通过openssl工具计算出证书名称,Mac和Linux一般自带openssl

openssl x509 -inform PEM -subject_hash_old -in charles-ssl-proxying-certificate.pem | head -1
# 3ebb862f
mv charles-ssl-proxying-certificate.pem 3ebb862f.0

在这里插入图片描述

上传证书

打开avd设备的文件系统,avd设备的根证书目录是/system/etc/security/cacerts/,在目录右键菜单选择上传刚刚的.0证书
在这里插入图片描述
在这里插入图片描述
会报错,显示“Read-only file system”,只读文件系统,无法上传
[图片]

解决“Read-only file system”

解决方案是,以可写模式-writable-system重启avd设备,重新上传

# 进入AndroidSDK的emulator目录
cd /Users/${user}/Library/Android/sdk/emulator
# 查看avd设备列表
./emulator -list-avds
# iPhone_API_31
# ...
# -writable-system模式启动
./emulator -avd iPhone_API_31 -writable-system

# 开启system目录的写入权限
adb root
adb disable-verity
adb reboot
adb root
adb remount


在这里插入图片描述

重新上传成功,设置里可以看到charles证书已经在系统信任证书中了,抓app的https请求也成功了
在这里插入图片描述

在这里插入图片描述

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值