开发不改代码,Android7以上实现https协议的fiddler抓包

说明

以下方案必须需要root权限,如不想root,也有解决方法,请跳转我另一遍博客 android7.0以上https抓包(无需root)

给Android7及以上的手机安装系统级证书,实现HTTPS的抓包

Android7以后,系统不再信任用户级的证书,只信任系统级的证书,所以要抓包就需要把我们的代理程序证书安装至Android的系统目录中

准备

  • 一台已root的手机
  • Openssl

证书生成

    1.将Filddler或者其他抓包程序的证书导出,一般为xxx.cer或者xxx.pem

    2.使用opensslx509指令进行cer证书转pem证书 和 用md5方式显示pem证书的hash值

    #1. 证书转换,已经是pem格式的证书不需要执行这一步
    openssl x509 -inform DER -in xxx.cer -out cacert.pem 
    

    2. 进行MD5的hash显示

    openssl版本在1.0以上的版本的执行这一句

    openssl x509 -inform PEM -subject_hash_old -in cacert.pem

    openssl版本在1.0以下的版本的执行这一句

    openssl x509 -inform PEM -subject_hash -in cacert.pem

    3.将第二条指令输出的类似347bacb5的值进行复制

    tips: 查看openssl版本的指令openssl version

    4.将pem证书重命名
    使用上面复制的值(类似于347bacb5)对pem证书进行重命名

    重命名为: 347bacb5.0,切记不要忘记".0"
    

将新证书放入手机系统证书目录

    1.手机系统目录位置是:/system/etc/security/cacerts

    2.需要拷贝至此目录必须拥有root权限,还要解锁system分区

    3.解锁system分区: 开机状态下(打开发者选项,开启USB调试,USB模式设为MTP),在adb工具文件夹下按住shift键右键打开CMD,输入如下命令:

    adb root

    adb disable-verity

    adb reboot

    4.由于adb版本问题adb disable-verity可能会没有此命令,此时需要更新adb版本即可,下载地址如下,下载好替换即可

    ADB和Fastboot for Windows

    https://dl.google.com/android/repository/platform-tools-latest-windows.zip

    ADB和Fastboot for Mac

    https://dl.google.com/android/repository/platform-tools-latest-darwin.zip

    ADB和Fastboot for Linux

    https://dl.google.com/android/repository/platform-tools-latest-linux.zip

重启Android设备以生效

    1.拷贝证书至:adb push 证书到 /system/etc/security/cacerts之后,重启手机就可以使证书生效了

特别注意

    开启了root权限并解锁了system区,则表示真正解锁了所有权限,风险也如期而至,之后请谨慎下载任何非应用市场软件!

    1.关闭system解锁:adb enable-verity,重启生效

    2.关闭后重启后,fiddler证书则会消失,再次抓包时需要重新导入证书

--------------------------------------------------------------------------------------

部分原创链接:https://blog.csdn.net/djzhao627/article/details/102812783
原文地址:https://www.cnblogs.com/jiangmingbai/p/12165005.html