Android 7 及以上夜神模拟器,Fiddler 抓 https 包
文章目录
- 问题描述
- 解决方案
- 环境准备
- 操作步骤
- 1、导出 Fiddler 证书并修改成 .pem 和 .0 文件
- 2、修改夜神模拟器配置
- 3、打开夜神模拟器设备的 `USB 调试选项`
- 4、将`0725b47c.0`证书放入夜神模拟器系统证书目录
- 5、夜神模拟器 cmd 环境配置
- 6、给 0725b47c.0 证书赋予权限
- 7、打开 fiddler everywhere 进行抓包
问题描述
Android 从 7.0 开始系统不在信任用户 CA 证书(应用 targetSdkVersion >= 24 是生效,若是 targetSdkVersion < 24 即使系统是7.0+ 依然会信任)也就是说即使安装了用户 CA 证书,在 Android 7.0+ 的机器上,targetSdkVersion >=24 的应用 HTTPS 包就抓不到了。
解决方案
亲测有效!!!!!!
使用 OpenSSL 对 FiddlerRoot.cer 证书进行转换,然后放入手机系统证书目录内(/system/etc/security/cacerts------系统证书具体目录),并对其附加读写权限,以下为详细步骤。
环境准备
1、 下载抓包工具 Fiddler 或 Fiddler everywhere 版
- 可直接从官网链接下载
- Fiddler 免费版不能抓 HTTP/2 的包, Fiddler everywhere 版可以,绿色永久版可查看 fiddler everywhere 绿色永久版
2、 下载夜神模拟器
- 夜神模拟器官网下载链接
- 夜神模拟器帮助手册
- 温馨提示:如果你用的是真机那么必须要过root
3、 OpenSSL 安装
- 参考文章:保姆级OpenSSL下载及安装教程
4、 AndroidSDK 安装
- AndroidSDK 官方下载链接
- 下载完成后,环境配置和下面
操作步骤
中5.3 夜神模拟器 cmd 环境配置
一样
操作步骤
1、导出 Fiddler 证书并修改成 .pem 和 .0 文件
- 1.1 按下图步骤导出 Fiddler_Root_Certificate_Authority.crt 证书
- 1.2 cmd 命令切换到证书的导出路径(默认导出桌面)
例如:cd C:\Users\17710\Desktop
,每个人桌面路径不一定相同,将证书文件拖拽到 cmd 窗口,即可找到文件夹路径
- 1.3 使用 OpenSSL 将 FiddlerRoot 证书的 crt 格式转换成 pem 格式
openssl x509 -inform DER -in Fiddler_Root_Certificate_Authority.cer -out cacert.pem
- 1.4 计算 pem 证书 hash 值-截取下图中箭头指向的
0725b47c
即可
openssl x509 -inform PEM -subject_hash_old -in cacert.pem
- 1.5 将桌面上的 cacaert.pem 证书 修改为
0725b47c.0
,名称为上一步操作的 hash 值,后缀为 0
2、修改夜神模拟器配置
- 2.1 启动一个Android 7 以上的模拟器,按照下图指示
- 点击右上角设置,开启网络连接和网络桥接模式
- 设置静态 IP,一般只需要修改
IP 地址
和网关
这两项即可,IP 地址可以自己设置,比如我的电脑 IP 是 192.168.1.3,可修改成下图的 IP
- 2.2 确保模拟器已开启 Root
- 2.3 修改完成后重启模拟器,以保证生效
- 2.4 修改模拟器 WiFi 代理为手动,这里和真机的操作一样
3、打开夜神模拟器设备的 USB 调试选项
-
3.1 连续点击下图所指的版本号五次,即可进入开发者模式
-
3.2 搜索
USB 调试
并打开
-
3.3 开启
USB 调试选项
4、将0725b47c.0
证书放入夜神模拟器系统证书目录
- 4.1 直接拖拽
0725b47c.0
文件到夜神模拟器
,会自动打开下图的文件夹,并复制成功
- 4.2 复制上图中的
0725b47c.0
文件,然后打开下图指示的根目录文件夹,点击右上角的粘贴
按钮,即可将0725b47c.0
证书放入系统证书目录
5、夜神模拟器 cmd 环境配置
-
5.1 找到
夜神模拟器
快捷方式,右键点击打开文件所在位置
-
5.2 这个文件夹内可以看到有个
nox_adb
应用程序
-
5.3 打开
查看高级系统设置
,进入下图页面,按照顺序进行配置环境变量地址即可
6、给 0725b47c.0 证书赋予权限
- 6.1 使用
nox_adb devices
命令查看设备连接状态
若出现下面版本号不一致的错误,可参考 adb devices 发现连不上模拟器
- 6.2 使用
nox_adb conncet 127.0.0.1:62025
命令建立adb
连接
!
注:夜神模拟器的端口是规律的,第一个模拟器端口是62001,第二个模拟器端口是62025,第三个是62025+1,以此类推)
- 6.3 使用
nox_adb -s 127.0.0.1:62025 shell
命令进入模拟器 shell 命令行
- 6.4 使用
mount -o remount -rw /system
命令给外层根目录中的 system 赋予权限 - 6.5 使用
cd system/etc/security/cacerts
命令到系统证书目录 - 6.6 使用
chmod 644 0725b47c.0
命令给证书赋予权限 - 6.6 修改完成后,使用
ls -l
命令查看权限是否启用,如下图所示:
- 6.7 最后需要在把最外层system的权限改回去
cd ../../../..
mount -o remount -ro system
7、打开 fiddler everywhere 进行抓包
效果图如下:
参考文章:Android7及以上,抓https包-Fiddler篇