前言:本文讲述fiddler抓取模拟器中数据包,话不多说来看正文。

目录

环境准备:雷电模拟器、fiddler、adb

adb和fiddler下载地址:

 一、Fiddler设置

1.HTTPS:解密https流量、忽略不安全证书

2.连接设置:允许远程计算机连接

 3.根证书安装:导出桌面安装证书

 二、模拟器设置

1.网络设置:桥接驱动安装,及开启桥接

 2.WLAN设置:设置fiddler代理

 3.设置信任证书:使用adb命令,将安装好的证书挪到系统目录中。

解决雷电模拟器问题直接从这开始看,以上是报错处理,供其他模拟器参考分析。

其他:

问题:fiddler 雷电模拟器 无法抓包,获取不到数据?


环境准备:雷电模拟器、fiddler、adb

adb和fiddler下载地址:fiddler+adb.zip - 蓝奏云

思路:本文章可解决99%。fiddler模拟器抓包问题,比起解决问题,让大家了解原理思路更为重要,以下是思路流程图供君参考。

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_抓包

 一、Fiddler设置

1.HTTPS:解密https流量、忽略不安全证书

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_android_02

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_android_03

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_桥接_04

2.连接设置:允许远程计算机连接

点击允许远程计算机连接,点确定保存

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_抓包_05

 3.根证书安装:导出桌面安装证书

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_桥接_06

在桌面点击导出的证书进行下一步安装即可,全部默认一直点,点到导入成功为止。

 

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_fiddler_07

Fiddler配置完成将其关闭重启。

 二、模拟器设置

1.网络设置:桥接驱动安装,及开启桥接

 

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_前端_08

 安装网桥驱动,出现安装成功即可。

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_桥接_09

安装完成后点保存设置自动重启。 

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_抓包_10

 2.WLAN设置:设置fiddler代理

打开模拟器设置-打开WiFi菜单-修改wifi配置(有些模拟器有小笔头修改键,有些模拟器是鼠标长按会出现“修改网络”大同小异,可自行参照,核心就是修改连接wifi的手动代理,ip写本机,端口写8888 对饮fiddler软件里面的,如果端口占用在fiddler里面修改此处改成一致即可)最后点击保存!

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_桥接_11

 2.证书安装:物理机ip:8888

打开模拟器浏览器,地址栏输入本物理机ip跟上8888端口,就是输入代理ip和端口。会跳转证书安装页面。

为什么要这样安装证书1.简单便捷2.可以变相去检测与物理机的连接是否正常

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_抓包_12

 图片有点长,耐心按步骤点击。

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_前端_13

 3.设置信任证书:使用adb命令,将安装好的证书挪到系统目录中。

使用雷电模拟器的直接看

原-用户证书目录:/data/misc/user/0/cacerts-added/
新-系统证书目录:/system/etc/security/cacerts/

如果不移动安装好的证书,此处会出现不信任的证书,频繁弹出(可以看到组织单位是我们安装fiddler)。

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_fiddler_14

此处需要提前开启,模拟器的root权限,否则无法su 切换用户(具体因模拟器而异:有些root权限要在模拟器里面开启,有些不需要,遇到无法su的问题,找找模拟器原因)

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_fiddler_15

--------------------------------------------------------------报错分析-------------------------------------------------------
 随即我们继续操作,将/data/misc/user/0/cacerts-added/的证书文件,移动到/system/etc/security/cacerts/,使其变为信任证书。

# 进入adb shell 工具
adb shell

# 切换root用户
gracelte:/ $ su

# 查看用户证书安装的名称
127|gracelte:/ # ls /data/misc/user/0/cacerts-added/
e5c3944b.0

# 将用户证书挪至系统证书目录 /system/etc/security/cacerts/
gracelte:/ # mv /data/misc/user/0/cacerts-added/e5c3944b.0 /system/etc/security/cacerts/
mv: /system/etc/security/cacerts//e5c3944b.0: Read-only file system

在移动证书到/system/etc/security/cacerts/ 会报出问题

报错:mv: /system/etc/security/cacerts//e5c3944b.0: Read-only file system

报错原因:/system 是以只读的形式挂载上来的,所以无论你怎么chmod都无法修改其权限。

解决办法:重新挂载,挂载读写执行权限

gracelte:/ $ su

# 重新挂载/system 文件夹
:/ #  mount -o rw,remount /system
mount: '/system' not in /proc/mounts

报错:mount: '/system' not in /proc/mounts

报错原因:在Android8.0以上通过以上mount命令,找不到/system代表的节点和拥有的权限信息,这是因为Android8.0之后谷歌加入了A/B system的特性,system分区跟ramdisk分区打包在一起,因此系统起来之后也就不存在system分区了,而是直接把system镜像挂载到/根目录上。所以/proc/mounts文件中没有包含/system的权限信息。

 查看模拟器安卓版本:

# 进入adb shell 工具
adb shell

# 切换root用户
gracelte:/ $ su

# 查看安卓版本
gracelte:/ # getprop ro.build.version.release
9

                       

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_桥接_16

解决办法:解锁磁盘,重新挂载

# 在windows窗口运行以下命令,不要进到adb shell 里面运行
D:\platform-tools> adb root

# 解锁分区(需要升级到最新版本adb,才有disable-verity工具)
D:\platform-tools> adb disable-verity

# 重新挂载,没加权限 表示rwx全部挂上
D:\platform-tools> adb remount

报错:如果是旧版本adb会显示如下信息

networking:
  adb ppp <tty> [parameters]   - Run PPP over USB.
 Note: you should not automatically start a PPP connection.
 <tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
 [parameters] - Eg. defaultroute debug dump local notty usepeerdns

adb sync notes: adb sync [ <directory> ]
  <localdir> can be interpreted in several ways:

  - If <directory> is not specified, both /system and /data partitions will be updated.

  - If it is "system" or "data", only the corresponding partition
    is updated.

environmental variables:
  ADB_TRACE                    - Print debug information. A comma separated list of the following values
                                 1 or all, adb, sockets, packets, rwx, usb, sync, sysdeps, transport, jdwp
  ANDROID_SERIAL               - The serial number to connect to. -s takes priority over this if given.
  ANDROID_LOG_TAGS             - When used with the logcat option, only these debug tags are printed.

原因:旧版本adb不含disable-verity 工具包

解决办法:安装最新adb工具

报错:Failed to read fstab Maybe run adb root?

原因:雷电模拟器9把,这块直接界面化了,不需要通过disable-verity 解锁磁盘,但是其他种类模拟器会用到这个功能,大同小异,自己拿捏吧

解决办法:在模拟器设置,磁盘管理开启 system.vmdk可写入

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

解决雷电模拟器问题直接从这开始看,以上是报错处理,供其他模拟器参考分析。

# 在windows窗口运行以下命令,不要进到adb shell 里面运行
D:\platform-tools> adb root

# 雷电模拟器,直接在设置打开磁盘写入功能

# 重新挂载,没加权限 表示rwx全部挂上
D:\platform-tools> adb remount

# 进入adb shell
D:platform-tools>adb shell

# 查看用户证书位置
gracelte:/ # ls /data/misc/user/0/cacerts-added/
e5c3944b.0

# 拷贝证书到目标文件夹
gracelte:/ # mv /data/misc/user/0/cacerts-added/e5c3944b.0 /system/etc/security/cacerts/

# 雷电模拟器,直接在设置打开磁盘写入功能

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_fiddler_17

将以上配置完重启模拟器和fiddler就可以抓包了 

雷电模拟器 不信任 charles 证书 雷电模拟器证书无效_桥接_18

 

其他:

问题:fiddler 雷电模拟器 无法抓包,获取不到数据?

答案:有些按照我这个步骤执行的,还是无法抓包,应该是模拟器版本问题,使用adb工具将代理推上全局即可。

# adb.exe shell settings put global http_proxy 本机ip:fiddler端口
adb.exe shell settings put global http_proxy 192.168.0.102:8888