这次项目刚好需要对微信小程序进行抓包分析,二话不说拿起手机咔咔一顿连接,发现在备用机苹果上抓包正常,但主的安卓机上证书怎么装都失败,原来安卓7版本以后对用户自行安装的证书不再信任,所以无法抓包。

因为安卓手机不能抓包造成的强迫症,到网上找到两种解决办法:1.要么换成低版本安卓系统5去抓包;2.要么手机开root权限,然后将证书制作成系统证书。自己手机肯定不能这么玩,想了个折中办法,直接在电脑上开模拟器进行抓包,于是有了fiddler+雷电想法。

网上很多教程都还是针对fiddler4+雷电模拟器3抓包,但早期版本在访问app内嵌网页(特别是vue)时会造成雷电3无法访问加载问题。于是决定切换到主流版本:fiddler5+雷电模拟器4.0+

前期准备:下载安装篇

1、Fiddler下载地址:建议下载Classic版本即可,免费够用。

https://www.telerik.com/fiddler/fiddler-classic

2、雷电模拟器4下载地址:安卓最新版本,直接下载即可

https://www.ldmnq.com/

3、git bash下载地址:如果win没有bash界面,可以下载这个客户端

https://git-scm.com/

抓包配置

1、Fiddler打开Tools–Options–HTTPS,将证书下载到桌面。

2、桌面打开bash执行以下命令,将fiddler导出的证书,转换为.pem文件

openssl x509 -inform DER -in .\Fiddler.cer -out .\fiddler.pem

3、解析出证书的hash值(因为安卓证书文件名是根据hash值存的)

openssl x509 -inform PEM -subject_hash_old -in .\fiddler.pem |head -1269953fb

4、将该hash值作为新的文件名以”.0″结尾

cat .\fiddler.pem > .\269953fb.0

5、将命名好的269953fb.0文件,通过雷电模拟器4(需要开启ROOT权限)文件共享,把文件放置到 /system/etc/security/cacerts,但由于模拟器 /system 属于系统文件(只读),无法直接移动或修改权限,那么这里可使用adb命令 执行。

abd工具已经放在最后可自行下载。注意版本不匹配 会导致连接失败。我的雷电模拟器安卓版本为7.1.2,对应的android API为26.1。

在adb目录下打开bash执行adb shell即可进入雷电模拟器指令模式。

λ adb shelladb server version (31) doesn't match this client (39); killing...* daemon started successfully *aosp:/ # ls /storage/emulated/0/Pictures269953fb.0748061.jpgDATAWeiXincacheaosp:/ #

可用看到269953fb.0文件已经在共享目录,目录可能存在差异自行判断。

6、重新挂载,并执行移动,然后重启模拟器。

aosp:/ # suaosp:/ # mount -o rw,remount /systemaosp:/ # mv /storage/emulated/0/Pictures/269953fb.0 /system/etc/security/cacerts/aosp:/ # reboot

7、重启后再次进入adb模式,对文件赋予777权限,再重启。

aosp:/ # cd /system/etc/security/cacertsaosp:/ # chmod 777 269953fb.0aosp:/ # reboot

8、重启雷电模拟器4后,在设置–安全–信任的凭据–系统中找到fiddler证书,则安装证书成功。

9、证书安装成功后,还需要对wifi进行设置。由于模拟器4没办法直接配置,我们还是借助adb来设置全局代理。

D:\Program Files\adbλ adb shell settings put global http_proxy 192.168.2.79:8888

10、设置后再重启雷电模拟器4,即可发现能够使用fiddler进行模拟器抓包。

—- 钢铁侠的知识库 648403020@qq.com 2022.07.19

写在最后

通过以上步骤即可完成Fiddler5+雷电模拟器4正常抓包,包括https协议。

后续如果Fiddler用得多再写一篇相关内容科普,完成收工。

adb下载链接:https://download.csdn.net/download/u011463397/86242855