android 7.0+抓包无限制

前提

手机已经root,手机root可参考:

  1. 小米手机升级开发版
  1. 刷面具

安装证书

  1. 保存charles pem证书到桌面
    Charles -> Help -> SSL Proxying -> Save Charles Root Certificate...
    如保存文件为charles.pem
  2. 生成Android要求的证书格式
    由于Android系统级别的证书文件名是以0为后缀,以证书的hash值为名字,所以,我们需要根据证书生成对应的hash值,执行如下命令
$ openssl x509 -inform PEM -subject_hash_old -in charles.pem
35880da4
$ mv charles.pem 35880da4.0
$ adb push 35880da4.0 /sdcard

35880da4替换为你生成的hash值

  1. 移动证书到系统目录
$ adb shell
$ su
# whoami
root
# mkdir -m 700 /sdcard/ca
# cp /system/etc/security/cacerts/* /sdcard/ca
# mount -t tmpfs tmpfs /system/etc/security/cacerts
# mv /sdcard/ca/* /system/etc/security/cacerts/
# mv /sdcard/35880da4.0 /system/etc/security/cacerts/
# chown root:root /system/etc/security/cacerts/*
# chmod 644 /system/etc/security/cacerts/*
# chcon u:object_r:system_file:s0 /system/etc/security/cacerts/*

效果

  • 查看系统证书列表,设置-安全-更多安全设置-加密与凭据-信任的凭据

    这样就可以抓到大部分app的包了

手机重启后丢失

更高效的方式

  • 由于以上的方式手机重启后丢失,还可以通过安装magisk模块MagiskTrustUserCerts
  • 启动完模块后重启,正常安装证书后重启,证书就会到系统信任证书列表中了

其他

  • 安装TrustMeAlreadySSLUnpinnning
  • 对于使用了Okhttp且被混淆的app,JustTrustMe将会失去部分效果,因为JustTrustMe将找不到okhttp的相关类,对于这类将超出本文范围,可进一步参看其他文章

参考及扩展阅读