某宝无法抓包 逆向分析

这篇文章记录手机某宝的抓包过程。

手机:pixel 6

系统:android 12

frida version:15.2.2

软件:某宝10.17.0

首先我使用Postern开启网络代理,在电脑上尝试使用Charles抓包,但提示网络崩溃

在这里插入图片描述

那么某宝可能绑定了证书,也就是ssl pinning,上网上抄一份绕过ssl pinning的脚本(https://github.com/httptoolkit/frida-android-unpinning)

在这里插入图片描述

运行脚本之后,页面已经显示正常了,然而在charles中只抓到了很少的几个包,这显然是不正常的,下面就需要逆向分析程序来找一下发包的接口。

在这里插入图片描述

首先在jadx-gui中全局搜索一下Request,找到了下面一些类

在这里插入图片描述

我先从anet.channel.request.Request这个类开始分析,因为它看起来比较像一点。这个类的方法有点多,我直接使用r0trace对该类进行trace

在这里插入图片描述

在trace的结果中随便找一个函数,尝试分析一下它的调用栈,我认为下图中标注出来的方法是值得看看的

在这里插入图片描述

在jadx-gui中查看该方法,asyncSend方法的第一个参数包含了请求头和请求体,该方法不是重点,重点是该方法所属的DegradableNetwork类,它的类名翻译成中文是可降解的网络

在这里插入图片描述

点进该构造方法看看其实现,这个类是继承自NetworkProxy这个类,它的构造方法只是调用了父类的构造方法,其第二个参数传入的是1

在这里插入图片描述

看来具体的逻辑是在NetworkProxy里面,让我们来看看该类的构造方法

在这里插入图片描述

从代码中来看,第二个参数决定了一种类型,来看一看这个构造方法的交叉引用

在这里插入图片描述

只有两个类引用了NetworkProxy的构造方法,其中DegradableNetwork我们已经看过了,它传入的第二个参数是1,下面来看看HttpNetwork,其实看名字也可以看出来一些信息,HttpNetwork类是个http协议相关的,那么DegradableNetwork也就意味着是另一种协议,这可能就是Charles抓不到包的原因。

在这里插入图片描述

HttpNetwork类的构造方法调用NetworkProxy的构造方法时,传入的第二个参数是0。

综合以上的信息,我们可以提出一种假设:如果hook了DegradableNetwork类的构造方法,让其在调用父类的构造方法时,第一个参数由1改为0,那么走的就是Http协议了。frida脚本如下:

在这里插入图片描述

运行脚本后刷新界面,使charles抓一些包,抓包效果是很好的,图片以及文字都抓到了

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_56039202/article/details/127725890