某多多抓包和商品详情分析
摘要
最近在做项目分析时发现普通的抓包代理方式抓不到某多的响应内容,故记录一下。
首先就是使用了最常见的app端进行https代理的方式进行抓包 结果只能抓到部分什么gif结尾的内容 分析dex发现 某多多使用了longlink技术 让普通的https根本是抓不到的
具体详情在 xxx.xxxx.xxxxtitan.api.TitanApiRequest和xxx.xxxx.xxxxtitan.api.TitanApiCall里 我这里只采用fridahook 前者TitanApiRequest 进行直接拦截得到请求 而不是完全关闭longlink 关闭longlink在最新的775版本貌似不太行了 应该是在后者 TitanApiCall里 没有进行深度分析 所以目前只分析了前者 附上frida脚本 由于本人文笔不好 故以下文章部分使用AI进行美化操作
本文分两部分:抓包部分(Frida) 和 商品详情的 hook 部分 两部分均给出思路、示例(Frida 脚本)
开始分析
某多使用了 longlink / 持久连接技术,把部分响应通过非普通短连接通道处理,导致常见的 HTTP(S) 代理只能抓到有限内容(例如 gif 结尾的静态片段或小包),而真正的业务响应在 Titan 网络层被处理。
为了解决这一点,分析后使用 Frida 拦截并输出响应内容 商品详情则直接在 Java 层 hook即可, 将json响应数据格式化后储存。
抓包部分(Frida Hook)
下面是可直接注入的 Frida 脚本(已对常见字段访问失败做多重尝试与反射容错),用于获取 TitanApiRequest.Builder 构造的请求并监控 longlink:
Java.perform(function () {
var TitanApiResponse = Java.use("xxx.xxxx.xxxxtitan.api.TitanApiResponse");
var StringCls = Java.use("java.lang.String");
if (TitanApiResponse.getBodyBytes) {
TitanApiResponse.getBodyBytes.implementation = function () {
var hookPoint = "TitanApiResponse.getBodyBytes()";
var data = this.getBodyBytes();
if (data) {
try {
var resp = StringCls.$new(data, "UTF-8");
if (resp) {
console.log("\n=== 📥 " + hookPoint + " 响应捕获 ===");
console.log(resp.length > 2000 ? resp.substring(0, 2000) + "..." : resp);