开发不改代码,Android7以上实现https协议的fiddler抓包
说明
以下方案必须需要root权限,如不想root,也有解决方法,请跳转我另一遍博客 android7.0以上https抓包(无需root)
给Android7及以上的手机安装系统级证书,实现HTTPS的抓包
Android7以后,系统不再信任用户级的证书,只信任系统级的证书,所以要抓包就需要把我们的代理程序证书安装至Android的系统目录中
准备
- 一台已root的手机
- Openssl
证书生成
-
1.将Filddler或者其他抓包程序的证书导出,一般为
xxx.cer
或者xxx.pem
2.使用openssl
的x509
指令进行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