解决某手8.0抓包问题

原创
2020/11/15 16:00
阅读数 402

最近某手更新了8.0版本,这让我们的爬虫小伙伴可难受了。某手更新8.0之后,最直接的问题就是抓不到包。我们需要逆向分析一下8.0的网络协议,看看到底使用了什么技术,才让我们抓不到包呢。

分析借助的技术&工具

1、jadx 2、frida

网络请求框架分析请求协议

通过查看app源码,可以清楚看到okhttp3的包名,使用okhttp3就很香。

okhttp3分析

1、打印网络请求 通过他的sign或者sig3算法位置打印即可 frida 是真的香

    var s = Java.use("j.a.*.*.s");
    s.a.overload('okhttp3.Request''java.util.Map''java.util.Map').implementation = function (a1, a2, a3) {
        console.log(a1)
        return this.a(a1, a2, a3)
    }

可以清楚的看到请求的url还有get的参数,不过发现没有打印出来协议相关的信息。2、打印网络响应 打印一下第一步的调用栈

    var exc = Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new());
        console.log(exc)

这里的就可以去打印响应数据了。这就好了,app使用的协议是quic,这也就是为什么通过Charles抓不到包的原因了。okhttp3本身是支持quic的,但是app这里没有用到。从这篇文章就能发现蛛丝马迹 https://cloud.tencent.com/developer/news/666059

客户端、网络库统一设计
对 QUIC 协议的支持需要客户端、服务端统一设计,kQUIC 也做了相应的工作。

客户端网络库项目代号是库 Aegon,目标是代替原 OKHTTP/AFNetworking 和进行 API 请求和短视频下载,提供了 QUIC 协议的支持、完善的上报信息,并基于对数据指标的分析和对协议的深入理解,对网络库中持续进行了多项协议相关的优化,包括预建连、SSL Session 复用优化、客户端 BBR、POST 请求 0RTT 优化等等。

一般 APP 使用的开源的网络库包括 OKHTTP 和 AFNetwork,都不支持跨平台,OKHTTP 是 Android 端,AFNetwork 是 iOS 端。**网络库在设计之初就把跨平台作为一个重要的目标,为**的双端提供统一的网络优化解决方案。

所以Aegon是客户端代号,全部的包名是aegon.chrome,剩下的就好办了。

解决问题

通过上面类似步骤的hook和打印调用栈,发现app本身有一个类似开关的地方。"enable_quic": true把这个开关利用hook改成"enable_quic": false,那就可以抓包了。看看hook修改后的请求协议吧。看看Charles是否能抓到包。

最后小结

frida Hook在app启动的时候,不要attach,建议使用xposed进行Hook,主要app会在开机的自启动。自己搞了一个知识星球,主要是用来分享在工作的的一些实际经验,更偏向与实践和干货,和某些知识理论相比更实际一点,现在加入还有50元优惠。这个抓包的frida代码也已经放在星球了,欢迎大佬们加入,互相学习。


更多推荐

xposed插件BankRX

Nic*app的native层算法破解
       

本文分享自微信公众号 - 小白技术社(xbjss123)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部