前言

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

为何我们普通方式抓不到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,应该只有一个,如下图 双击进去 找一下这个堆栈,点击红圈函数,按x追踪 点击第一个进去 应该会看到这样的标志 那就是找对了 然后F5进去查看伪代码,发现这个函数地址是sub_5DC3CC,然后改为0X5dc3cc,后续frida hook时候会用到。这时候成功hook到libflutter.so中的函数 2.这个时候,我们使用别人写好的脚本https://github.com/G123N1NJ4/c2hack/blob/master/Mobile/flutter-ssl-bypass.md 把这段代码复制下来,把代码中的地址修改为刚才获得的地址0X5dc3cc,将代码保存为ssl.js。 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测试服务是否启动,如果以下图,说明启动成功 然后就可以执行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,成功!

推荐链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。