97k
1
分析PDD跨境APP时发现构架用了Flutter(Flutter并不是阻碍抓包的关键),在抓包的时候,发现使用SSLKillSwitchX仍然无法正常Wi-Fi代理抓取数据包,然后通过Frida trace 底层发包函数send、recv、socket。
frida-trace -U -f com.xunmeng.temuseller -i “recv*” -i “send*” -i “connect” -i “socket”
通过观察发现在点登陆的那一刻只能收到recvfrom、recv函数的执行。
那我们就修改trace脚本的recvfrom函数,添加查看堆栈的函数。
log('\tBacktrace:\n\t' + Thread.backtrace(this.context,Backtracer.ACCURATE).map(DebugSymbol.fromAddress).join('\n\t'));
成功打印调用栈
用Iridium对app进行砸壳,砸壳后IDA分析主程序TS文件。
通过对调用栈的地址在IDA 里的F5查看,发现是这么个玩意。
longlink.cc这玩意在git上搜一下。
可以找到对应的函数。
发现是腾讯开源的mars通信框架。(PS:这玩意长链接一般是通知用的)
TS这玩意在使用了mars HTTP长链接的情况下,是没办法Wi-Fi代理用花瓶或者burp抓到数据包的。
所以我们需要找到设置的地方关闭他长链接的地方,改让他使用正常短连接HTTP。
翻一翻符号,找到了这个方法
在这个方法里翻翻
发现要么设置强制短连接为true,要么修改couldAPILonkLink返回值为false。
最后写一个hook,测试可以成功抓包。
头次遇见因为长链接而导致抓不到包的情况,记录一下。
4 个赞
拼多多国内版也是这样用的长链接传输,可以在网络库初始化的时候把走长链接的域名数组清空,强制降级为HTTPS
1 个赞