某音 x-gorgon, 设备注册tc, 私信imapi, xlog 等各个版本协议破解探讨

做android好多年了, 我一直比较好奇某音内部是怎么实现这种国民级app的, 无论是数据埋点, 行为风控 , 数据安全等, 这次我们一起扒扒 , 看看数据传输协议有何神奇之处

本次以某音官网当前最新版本10.9为例, 经过这么长时间的发展, 某音的协议加密策略在不停的升级, 低版本的不难处理, 就不多介绍了, 想探讨的加qq。我们就从xg,tc,imapi,xlog这4个算法作简单讲解。

1. x-gorgon (简称xg)

也许你很好奇,这是什么算法。其实xg算法无处不在,我们利用fiddler随便抓个包看看:


每个请求的请求头里都会有xg这个参数,可以看到xg是以04开头的,实际上它还有02,03的版本,无论怎么变,只要摸清楚它的生成规律就好。那么xg在哪生成的呢?

通过查看此代码发现,xg的本质是对url进行了一些骚操作,并调用了native层的leviathan方法,其实里面还有很多重要的处理细节。

2.tc (设备注册)

这个算法在设备注册的时候有使用,如图

它的请求加密体前两个字节是以tc开头的加密体, 新版本的tc相对于旧版本在java层变化不大,但在so层难度增加了不小, 这是java层tc加密的位置:

再来领略一下ida的ollvm平坦化混淆图,这种混淆的控制块无处不在,在我们硬破解的时候带来不小的麻烦,并实现了不同语言的版本,java和c#:

3.imapi

该算法以imapi域名开头 ,出现在登录之后,使用到了谷歌的probuf加密方式,这种方式的优点是跨平台加解密,需要注意的是加解密的请求和响应是分开的,如下:

4.xlog

这个无论是登录前还是登录后xlog都存在,旧版本的xlog01和新版本的xlog02, 他们都往往以xlog的域名开头,而请求的加密体里在旧版里第一个字节以01开头, 新版以02开头,下图是新版的02:

再看下ida里的ollvm平坦图 ,欣赏一下:

#### 写在最后

看完上面的主要算法之后,其实他们的网络请求也基于okhttp,在视频方面用到了ffmpeg, 一些常用的框架比如butterknife, rxjava 等, 另外也用到了kotlin协程,美团的robust热更新,通过这些框架,我们在hook的时候就多了一种考虑的方向。最后,某音的算法当然不止这些,如as, cp, mas 等等

作者:L_3020
链接:https://www.jianshu.com/p/73bc58c3e5f0
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

发表评论

邮箱地址不会被公开。 必填项已用*标注