最近看了一会视频号的协议,核心原理还是没变,protobuf数据通过NetScene请求再获取到protobuf。
那怎么从代码层入手呢?
-
先hook日志,然后运行,然后日志里搜索视频号界面里看到的名称之类的。
-
然后搜索日志的一些关键词,比如"contact info "之类的,然后找到相应的类。
-
然后按照关键词《-bin/finder》进行搜索代码
-
找到了一大堆类,这些类有个共同点,实现了void onGYNetEnd(int i, int i2, int i3, String str, q qVar, byte[] bArr);这么个接口方法,按经验差不多就能判断这是网络请求完成的时候回调的函数。
-
剩下的事情就是找到参数封装了。研究过代码的人大概能感觉出怎么弄,参数封装也就是实例化这些请求实现类,丢进NetScene请求队列里,然后监听onGYNetEnd,onGYNetEnd触发后读取该类里的BaseResponse接口获取到响应的protobuf。