承接上一篇《一次不成功的抓包过程》,失败的原因是搞错了方向,也可以说自己技术不到家,解析app发现存在libflutter.so库,有这个库就可以确定APP是基于谷歌的Flutter框架开发出来的,网上搜罗一番,有现成的一些思路去抓包Flutter app,于是在Windows系统上安装了一个逍遥模拟器,模拟器直接就是root环境,就可以不用把自己的手机刷机root,很省事,刷机root是逆向抓包的关键环节,嫌麻烦,就用了逍遥模拟器,最后一番操作下来,发现安装在模拟器里的app,已经不加载libflutter.so库,所以还是按照Flutter框架,Frida抓包技术路线,后面没抓包成功。
这次换了一个思路,抓包成功了,不在用模拟器,直接使用一部OPPO Android手机,刷机root,使用Frida注入脚本
搭建软件环境
电脑端:
Windows:win 10 专业版 64位
Python:python-3.12.0
frida:16.1.4
frida–tools:16.1.4
frida–server:frida–server-16.1.4-android–arm64
adb:34.0.5
IDA Pro:7.7
QtScrcpy:QtScrcpy–win–x64-v2.1.2
Charles :v4.6.3
手机端:
Android手机:OPPO R11,Android 9
Android vpn 工具:socksdroid-1.0.4.apk
手机刷机
Android手机需要刷机,获取root权限,可以选择自己刷机,这样有变砖的的风险,得熟悉才行,也可以选择花几十块钱,在闲鱼上找人远程刷机。
安装证书
抓包工具使用Charles,手机端和Windows电脑需要安装Charles证书
Windows电脑安装Charles的root证书,手机里安装Charles的用户证书,安装参考这篇《使用Charles进行HTTPS抓包》
一般的app安装了这两个证书就可以抓包https,一个电脑端的root证书和一个手机里的用户证书,如果app里不信任用户证书,那抓包就会失败,所以还需要安装Charles的证书到Android的系统证书里。
安装Android的系统证书,这就需要获取root权限,本身Android系统是不允许任何人安装系统证书可以参考《安卓7.0以上手机写入安全证书》,手机需要通过数据线连接电脑,总结其中几个关键命令如下:
Frida脚本
以下脚本就是hook住flutter的证书校验,让其信任我们的Charles代理证书