Appearance
drony
一、基本原理
- 1 flutter框架打包的APP无法抓包的原因: 以往的我们在进行APP抓包时,通过在网络连接中设置系统代理,让移动端设备的网络请求都会经过fiddler的代理,从而被fiddler等工具抓取到。但是flutter框架打包的APP进行网络连接时默认是不走系统代理的,即使设备设置代理也无效。
- drony能对这些APP实现抓包的原理: drony可以实现将指定的APP产生的所有网络流量进行转发,即APP要连接网络先经过drony。而drony自身的网络连接可经过代理。
drony设置
1 模拟器选择:雷电模拟器。注:经尝试夜神模拟器、逍遥模拟器上Drony无法正常进行流量转发,在MuMu模拟器虽然能正常使用Drony,但是MuMu模拟器基于安卓6.0,而flutter打包的APP一般对安卓版本要求较高,很多APP在MuMu上是无法正常运行的。
2 打开Drony,通过在顶部滑动切换到SETTING。注意:使用Drony的时候手机或模拟器上务必保持普通网络连接,不要设置系统代理,因为代理会在Drony进行设置
3 点击Networks Wi-Fi进入配置→点击当前移动端连接的网络
4 配置当前网络使用的代理入口(这里直接填写fiddler代理地址就可以),选择代理模式为手动(Manual)
5 Proxy type代理方式要选择 Plain http proxy
6 Filter default value 选择 Direct all
7 进入Rules设置应用规则
8一直返回到drony的首页,滑动到log页面,点击底部 ON/OFF开关启用drony
9 此时在PC打开fiddler,在移动端将drony切换到后台,启动要抓包的APP 就可以看到被抓包的接口信息了
生成系统证书,解决HTTPS抓包问题
前文提到的flutter打包APP对安卓版本要求较高问题。能运行这些APP的设备至少是安卓7.0以上。这种情况下,我们常用的直接在下载并安装fiddler证书的方式大多数情况下证书是不被系统认可的。因此在解决了抓不到包的问题之后,我们还要进一步解决抓到的包,无法解析的问题。
1 安装openssl
2 导出fiddler证书(.cer 格式)
3 将证书转换成 .pem格式
1)将导出的FiddlerRoot.cer文件转移到新建文件夹下
2)打开命令窗口cd到新建的文件夹下
3)执行命令,将FiddlerRoot.cer文件转换成.pem格式:
openssl x509 -inform DER -in FiddlerRoot.cer -out cacert.pem
命令执行完成后,FiddlerRoot.cer同路径下,出现了新的证书cacert.pem
4)执行命令进行MD5的hash显示:
openssl x509 -inform PEM -subject_hash_old -in cacert.pem
5)使用上面执行结果的字符串对cacert.pem证书进行重命名,并将扩展名修改为“0”:即将cacert.pem重命名为“269953fb.0”
- 4 将证书复制到移动端系统证书中
执行此步骤前,先确认模拟器已打开开发者模式,并允许usb调试。
依次执行以下命令,将新的证书文件push到模拟器的系统证书中。并重启模拟器
adb root
adb remount
adb disable-verity
adb push 269953fb.0 /system/etc/security/cacerts
adb enable-verity
adb reboot - 5 完成以上操作后,在开启fiddler的情况下 打开要抓包的APP就可以成功抓包https接口了。