标签:execute request okhttp3 OkHttpClient newCall result v8 某手 计算方法
一、目标
某手早就搞过好几次了,不过人家努力,几天小版本,几周大版本,一不留神就看不懂了,这不升级到 8.x 之后,包都抓不到了。蓝瘦香菇。
TIP: 新鲜热乎的 8.3.30.17506
二、步骤
先从okhttp3搞起
Charles就不用祭出来了,象征性的抓了几个无关痛痒的数据。看不到热门数据包不好玩。我们先从okhttp3入手,从jadx里看okhttp3还是没有被放弃的。
使用okhttp3发送一个请求,大概如下两步:
Call call = new OkHttpClient().newCall(new Request.Builder().build());
Response response=call.execute();
那我们就先hook newCall
var OkHttpClient = Java.use("okhttp3.OkHttpClient");
OkHttpClient.newCall.implementation = function (request) {
var result = this.newCall(request);
console.log(request.toString());
return result;
};
太棒了,Request数据打印出来了, 那Response数据我也要,hook execute
Override // okhttp3.Call.Factory
public Call newCall(C16082Request request) {
return RealCall.newRealCall(this, request, false);
}
从jadx的代码里看 newCall 返回的是 RealCall对象,所以我们也要hook RealCall的execute
var OkHttpRealCall = Java.use("okhttp3.RealCall");
OkHttpRealCall.execute.implementation = function(){
var result = this.execute();
console.log(result.toString());
return result;
}
通讯协议是 QUIC,怪不得Charles搞不定。不过这个抓包结果怎么看怎么不开心,发送过去的数据也看不到,接收回来的数据也看不到。脱了一半让人更着急。
OkHttpLogger-Frida
开始介绍新朋友了, https://github.com/siyujie/OkHttpLogger-Frida 用了一堆神奇的方法达到了命令行版的Charles的效果。
首先将 okhttpfind.dex 拷贝到 /data/local/tmp/
然后 frida -U -l okhttp_poker.js -f com.example.demo --no-pause 就可以跑起来了。
这个效果还不错,感觉又回到了Charles的美好时光。
过滤url
美好的时光总是短暂的,刷了一会,App就提示网络无法访问。难道还有什么坑?
先把返回值数据的打印屏蔽掉。这怎么玩都不会提示了。奋飞怀疑,在取热门数据数据包的时候,由于数据比较大,所以我们打印出来比较费时,可能就会导致访问超时。
还好作者提供了一个 filterUrl 函数,可以指定打印你需要分析的url,这样可以防止再产生超时的问题。
三、总结
打工人还是很苦逼呀,升级这么快,不搞点新花样都没法好好抓包了。
不要和我谈梦想,我打工就是为了钱
标签:execute,request,okhttp3,OkHttpClient,newCall,result,v8,某手,计算方法 来源: https://www.cnblogs.com/fenfei331/p/14223624.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。