记录Flutter框架开发的安卓App的抓包以及Frida安装和hook使用教程

前言

在我们进行安卓逆向的时候,往往会碰到发现是安卓app的flutter框架开发的,那么怎么判断app是Flutter开发的呢,app的apk包中包含libflutter.so即是,如下图。

记录Flutter框架开发的安卓App的抓包以及Frida安装和hook使用教程_第1张图片

为何我们普通方式抓不到HTTPS包呢:
1.它不走系统代理
2.它不支持设置代理
3.它不信任系统证书
然后它证书校验写死在so文件里,所以导致JustTrustMe,SSLUnpinning等模块完全失效,目前面临的问题:需要证书校验和不走代理,解决这个问题有以下步骤:
一.针对证书校验问题,就是用frida去hook libflutter.so中的函数
二.针对不走代理我们可以使用基于VPN模式的Postern+charles 转发抓包
三.Frida安装使用配置

一、如何用frida去hook libflutter.so中的函数?

1.可以先用360压缩在本地电脑,把apk文件解压到本地,并找到使用IDA打开app中的libflutter.so文件,打开后先转为字符串,后ctrl+F搜索ssl_client,应该只有一个,如下图
记录Flutter框架开发的安卓App的抓包以及Frida安装和hook使用教程_第2张图片
记录Flutter框架开发的安卓App的抓包以及Frida安装和hook使用教程_第3张图片
在这里插入图片描述
双击进去
记录Flutter框架开发的安卓App的抓包以及Frida安装和hook使用教程_第4张图片
找一下这个堆栈,点击红圈函数,按x追踪
记录Flutter框架开发的安卓App的抓包以及Frida安装和hook使用教程_第5张图片
点击第一个进去
在这里插入图片描述
应该会看到这样的标志
在这里插入图片描述
那就是找对了
然后F5进去查看伪代码,发现这个函数地址是sub_5DC3CC,然后改为0X5dc3cc,后续frida hook时候会用到。这时候成功hook到libflutter.so中的函数
记录Flutter框架开发的安卓App的抓包以及Frida安装和hook使用教程_第6张图片
2.这个时候,我们使用别人写好的脚本https://github.com/G123N1NJ4/c2hack/blob/master/Mobile/flutter-ssl-bypass.md
把这段代码复制下来,把代码中的地址修改为刚才获得的地址0X5dc3cc,将代码保存为ssl.js。
记录Flutter框架开发的安卓App的抓包以及Frida安装和hook使用教程_第7张图片
3.然后打开app,frida –UF –l ssl.js (-UF 就是当前打开的app)

然后打开postern工具转发一下,在charles就能抓到包了。

4.抓包成功!

二、Postern+charles 转发抓包

1.主要看下面这个大佬的文章

https://blog.csdn.net/yuyue_999/article/details/126575819

三、Frida安装使用配置

1.2.frida安装
pip install frida== 16.10
pip install frida-tools== 12.13
pip install objection== 1.8.4
1.3.frida-server下载
下载frida-sever,官方下载地址:https://github.com/frida/frida/releases
frida-server下载需要注意的有两点:
1.安装的frida版本:需要下载与安装的frida版本对应的frida-server,否则会出错。
在这里插入图片描述
2.手机设备的架构:查看手机架构,adb shell cat /proc/cpuinfo ,可以看到我是64位的,所以选择的是android-arm64
下载命令:frida-server-16.10-android-arm64.xz
下载完毕之后,解压后通过adb push到设备的临时目录下
adb push frida-server-16.10-android-arm64 /data/local/tmp/
3.配置完成后启动frida服务并连接
adb shell进入手机命令行
使用su获取权限
进入存放frida-server-16.10-android-arm64的位置
cd /data/local/tmp
给frida-server文件设置可执行权限使其可以运行
chmod 777 frida-server-16.10-android-arm64
之后运行frida服务文件,注意需要通过root权限去运行
./frida-server-16.10-android-arm64 &
然后 进行端口转发
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043
另起一个电脑端命令行,使用 frida-ps -U测试服务是否启动,如果以下图,说明启动成功
记录Flutter框架开发的安卓App的抓包以及Frida安装和hook使用教程_第8张图片
然后就可以执行frida –UF –l ssl.js这个hook代码,既可成功抓到包了
遇到问题:Unable to start: Could not listen on address 127.0.0.1, port 27042: Error binding to address 127.0.0.1:27042: Address already in use
表示这个端口已经占用,杀掉就行了
使用命令
netstat -tunlp
kill -9 xxx
查看27042这个端口,根据这个显示出来的PID,杀死Frida进程
再次重启Frida,成功!


你可能感兴趣的:(flutter,android,python)