前言

开发打的预发部环境debug.apk包,在安卓7.0以上通过fidder、charles代理抓取不到https请求;

参考各博主分析的关键点,后得到以下结论:

  1. 观察安卓的版本,"安卓7以上客户端CA证书授信凭证不走‘用户凭证’,走‘系统凭证’;
  2. 判断app是使用那种认证方式:单项认证、双向认证、 证书锁定(SSL/TLS Pinning);
  3. 验证自己的判断结论:使用反编译工具jadx将apk反编译查看源码,搜索源码的相关资料是否隔离了用户、系统证书凭据;使用低版本的安卓7尝试抓包;

解决方案

环境:

1、charles + 夜神模拟器(安卓7.0.5.5) + adb + jdk + openssl + jadx

2、charles + 小米 (安卓13) 

环境1的抓包步骤

思路清晰的情况下,先判断app使用的那种认证方式;使用排除法,先使用安卓低版本抓包;

  • 1、下载charles + 夜神模拟器(安卓7.0.5.5) + adb + jdk + openssl;
  • 2、安装charles授信证书到本地根目录,导出charles的pem证书;
  • 3、使用openssl 执行对应命令,根据证书生成对应的hash值,以.0后缀,copy到本地;
  • 4、打开夜神模拟器后开启root指令,打开代理,将apk 安装到夜神模拟器;adb命令连接到模拟器,将证书导入到系统证书目录下;
  • 5、charles观察是否能抓到包;

环境2的抓包步骤

本人是通过这种方式1抓到了,然后想在app上抓,用了其他方案;

  • 手机上安装charles的cre凭证;
     
  • 通过一偏博文,让开发修改了预发布环境的几段代码,大致意思就是这个app可以走用户凭证,然后就能抓到了;