有干货!
老早之前做了一个直播APP(柚子)直播间弹幕的获取,趁着闲暇写一下逆向过程。此APP需登录后才能进入直播间!
1、先抓包
登录账号后去抓进入直播间的包,多进入几个直播间,你会发现进入直播间都会出来这个包:
每次进入直播间都会进行一次ws请求,那么有理由怀疑,进入直播间是通过tcp协议做的。
2、逆向APK源码
将apk拖入jadx,根据经验我们直接查找sendMessage关键词(ws通过sendMessage发送协议数据),不出所尿~,找到了:
既然找到了,那么就通篇读一下PlayerMessageManager类的代码,你会发现这些东西:
AndWebSocket、DanmuBean....确定是ws管理类及弹幕获取入口没跑了,当然也可以进一步hook确定。
在类中我们发现获取PlayerMessageManager实例的函数:
传入的参数有一个LoginInfoEntity对象,点进入看看,发现是用户登录的一些信息:
这时,我们抓下登录接口的数据,需要的信息都在返回数据里面:
3、写代码
我们把PlayerMessageManager及关联的类直接扣下来,然后发送建立ws链接并发送请求看看:
通过ws发送数据后只返回了一个encKey,跟踪代码后发现,还需要根据此encKey获取到roomLimit然后再次发送给服务器:
这样就能顺利的获取到弹幕数据了,结束!
此app逆向较为简单,个别key在so层,不过获取并不困难。我的vx:YY_yhzf