这次项目刚好需要对微信小程序进行抓包分析,二话不说拿起手机咔咔一顿连接,发现在备用机苹果上抓包正常,但主的安卓机上证书怎么装都失败,原来安卓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下载地址:安卓最新版本,直接下载即可
3、git bash下载地址:如果win没有bash界面,可以下载这个客户端
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 -1
269953fb
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 shell
adb server version (31) doesn't match this client (39); killing...
* daemon started successfully *
aosp:/ # ls /storage/emulated/0/Pictures
269953fb.0 748061.jpg DATA WeiXin cache
aosp:/ #
可用看到269953fb.0
文件已经在共享目录,目录可能存在差异自行判断。
6、重新挂载,并执行移动,然后重启模拟器。
aosp:/ # su
aosp:/ # mount -o rw,remount /system
aosp:/ # mv /storage/emulated/0/Pictures/269953fb.0 /system/etc/security/cacerts/
aosp:/ # reboot
7、重启后再次进入adb模式,对文件赋予777权限,再重启。
aosp:/ # cd /system/etc/security/cacerts
aosp:/ # chmod 777 269953fb.0
aosp:/ # 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