目录

Android-7-及以上夜神模拟器,Fiddler-抓-https-包

Android 7 及以上夜神模拟器,Fiddler 抓 https 包

问题描述

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 版可以,绿色永久版可查看

2、 下载夜神模拟器

  • 温馨提示:如果你用的是真机那么必须要过root

3、 OpenSSL 安装

  • 参考文章:

4、 AndroidSDK 安装

  • 下载完成后,环境配置和下面 操作步骤5.3 夜神模拟器 cmd 环境配置 一样

操作步骤

1、导出 Fiddler 证书并修改成 .pem 和 .0 文件
  • 1.1 按下图步骤导出 Fiddler_Root_Certificate_Authority.crt 证书

    https://i-blog.csdnimg.cn/direct/3d650b2e4ea34b12a01d41301e6ff4f1.png

  • 1.2 cmd 命令切换到证书的导出路径(默认导出桌面)

    例如: cd C:\Users\17710\Desktop ,每个人桌面路径不一定相同,将证书文件拖拽到 cmd 窗口,即可找到文件夹路径

    https://i-blog.csdnimg.cn/direct/ddb400b71cff4020b30eef75e4fac540.png

  • 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

    https://i-blog.csdnimg.cn/direct/ecd748b5f1b645ce8ff4ea60b91393d7.png

  • 1.5 将桌面上的 cacaert.pem 证书 修改为 0725b47c.0 ,名称为上一步操作的 hash 值,后缀为 0

    https://i-blog.csdnimg.cn/direct/7ca0c5009aa9420e94f8081e9bc9d37f.png

2、修改夜神模拟器配置
  • 2.1 启动一个Android 7 以上的模拟器,按照下图指示

    • 点击右上角设置,开启网络连接和网络桥接模式

    • 设置静态 IP,一般只需要修改 IP 地址网关 这两项即可,IP 地址可以自己设置,比如我的电脑 IP 是 192.168.1.3,可修改成下图的 IP

      https://i-blog.csdnimg.cn/direct/6732332055b2497b924d51f07700c3dd.png

  • 2.2 确保模拟器已开启 Root

    https://i-blog.csdnimg.cn/direct/cc84ace58dfa41279c0b3a406eff0489.png

  • 2.3 修改完成后重启模拟器,以保证生效

  • 2.4 修改模拟器 WiFi 代理为手动,这里和真机的操作一样

    https://i-blog.csdnimg.cn/direct/ff31d1bbdfce4f6c9c580c9449e7f039.png

3、打开夜神模拟器设备的 USB 调试选项
  • 3.1 连续点击下图所指的版本号五次,即可进入开发者模式

    https://i-blog.csdnimg.cn/direct/43a2674e361a44cebaecf431a38a5b84.png

  • 3.2 搜索 USB 调试 并打开

    https://i-blog.csdnimg.cn/direct/a6a1dd5aa04e4e66b56c287451e9c2a0.png

  • 3.3 开启 USB 调试选项

    https://i-blog.csdnimg.cn/direct/d8169b105cb64b759aec04ac42f51807.png

4、将 0725b47c.0 证书放入夜神模拟器系统证书目录
  • 4.1 直接拖拽 0725b47c.0 文件到 夜神模拟器 ,会自动打开下图的文件夹,并复制成功

    https://i-blog.csdnimg.cn/direct/a0729a5d1c544f969751fcf25b3978b1.png

  • 4.2 复制上图中的 0725b47c.0 文件,然后打开下图指示的根目录文件夹,点击右上角的 粘贴 按钮,即可将 0725b47c.0 证书放入系统证书目录

    https://i-blog.csdnimg.cn/direct/4e7d33e85a6b41f2b3ad0d20da07ecec.png

5、夜神模拟器 cmd 环境配置
  • 5.1 找到 夜神模拟器 快捷方式,右键点击 打开文件所在位置

    https://i-blog.csdnimg.cn/direct/dd4091f13a9b469681c306e85b87c32e.png

  • 5.2 这个文件夹内可以看到有个 nox_adb 应用程序

    https://i-blog.csdnimg.cn/direct/b655504eb2274189b3e74e6e674c59f4.png

  • 5.3 打开 查看高级系统设置 ,进入下图页面,按照顺序进行配置环境变量地址即可

    https://i-blog.csdnimg.cn/direct/1ccfed56df1e434a822bc6419ea241fe.png

6、给 0725b47c.0 证书赋予权限
  • 6.1 使用 nox_adb devices 命令查看设备连接状态

    https://i-blog.csdnimg.cn/direct/605a61f354554a03b58c2d6726112f6c.png

    若出现下面版本号不一致的错误,可参考

    https://i-blog.csdnimg.cn/direct/c016ae83943444c89dcef939065c3034.png

  • 6.2 使用 nox_adb conncet 127.0.0.1:62025 命令建立 adb 连接

    ! 注:夜神模拟器的端口是规律的,第一个模拟器端口是62001,第二个模拟器端口是62025,第三个是62025+1,以此类推)

    https://i-blog.csdnimg.cn/direct/8651b4ee35a04ad4a3875330a8b2880e.png

  • 6.3 使用 nox_adb -s 127.0.0.1:62025 shell 命令进入模拟器 shell 命令行

    https://i-blog.csdnimg.cn/direct/d74861fae7554980b39dfeb16c5bd496.png

  • 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 命令查看权限是否启用,如下图所示:

    https://i-blog.csdnimg.cn/direct/e51fbf5d1461466f8d4a590fc881f631.png

  • 6.7 最后需要在把最外层system的权限改回去

    cd ../../../..

    mount -o remount -ro system

7、打开 fiddler everywhere 进行抓包

效果图如下:

https://i-blog.csdnimg.cn/direct/2e7b717359c6477cb228f0b6ae6fe196.png

参考文章: