为什么我要死磕短视频四小龙的数据请求加密协议?因为我带你飞,伤痛我背!

Android技术篇 尼古拉斯.赵四 10784℃

好了终于到这个时间节点了,也终于把基础工作都做完了,接下来就要进入我们的正题了,其实之前也有很多人好奇我为什么非要死磕这些短视频的加密协议分析破解,因为在那个寒冷的夜晚,我独自一人孤独的躺在冰冷的床上还是和以往一样刷着某音,某手,某山小视频的时候:

但是在我切换应用的时候,悲剧来了,手机尽然卡住了死机了,好吧,我知道这不怪任何人,只能怪我太穷买了这么便宜劣质的手机,但是无独有偶,要不是切换操作也不至于。又因为我是暴脾气。扔了手机独想,我不能在来回切换了,那么怎么办呢?只能把这四家的内容整合到一个app中,然后就用我家里最贵的电器笔记本破解这些视频app:

就有了下面的死磕这四家短视频的事情了。经过一丝考虑之后,与其开发这个app,我想是不是在世界的某个角落也有一些人和我遇到 问题是一样的,那么我作为一个屌丝程序猿一定要站在屌丝的立场为他们考虑,所以就决定将这个app正式确立项目,项目的大致情况如下:

项目技术难题:四家app中视频数据获取协议全部加密需要单独破解。
项目名称:酱爆视频(酱爆是我最喜欢的星爷的喜剧配角,希望此app能给用户带来快乐)。
项目周期:只占用周末时间,预计今年年底发布。
项目资源:因为全部采用破解后的请求四家平台数据,视频播放地址也是一样,全部占用他们的服务器资源!自己暂时不用单独写服务器接口,客户端所有用到的图片资源全部采用xml和代码进行编写,不需要单独使用图片资源。
项目人员:常年混迹娱乐圈的底层码畜
项目理念:只要还有一个用户和我一样有这个需求,那么我就有责任将需求变成应用,让屌丝的手机不在卡。

项目框架:网络请求使用okhttp,视频播放使用ijkplayer即可。

因为这里有的同学还认真看到前面的几篇破解文章,这里再来总结一下大致内容:

第一、某音短视频

1、点击查看详情:Android中破解某音小视频的数据请求协议

2、这里我们利用IDA动态调试找到so中的一些防护策略,大致为签名保护,反调试等。

3、数据列表请求接口:http://xxx.xxx.xxx/aweme/v1/feed/

4、返回的json数据格式如下:

5、数据请求分页功能实现原理:

第一次请求,这两个字段都是0

上拉数据:min_cursor和max_cursor始终未0
下拉数据:第二次请求取第一次请求返回的json数据中的min_cursor字段,max_cursor不需要携带。第三次以及后面所有的请求都只带max_cursor字段,值为第一次请求返回的json数据中的max_cursor字段。

防护策略:加密放在native中做的,为了防止so被恶意调用,增加了反调试,签名校验,Java层类的检查!

第二、某山小视频

1、点击查看详情:Android中破解某山小视频的数据请求协议

2、因为某音和某山都是某头条孵化的项目所以采用的加密协议是一模一样的。

3、数据列表请求接口:https://hotsoon.snssdk.com/hotsoon/feed/

4、返回的json数据格式如下:

5、数据请求分页功能实现原理:

第一次请求,max_time和min_time都为0
1》上拉数据:只传递min_time字段并且始终为0;
2》下拉数据:为上一次的max_time值,只传递max_time字段;

防护策略:加密放在native中做的,为了防止so被恶意调用,增加了反调试,签名校验,Java层类的检查!

第三、某拍小视频

1、点击查看详情:Android中破解某拍小视频的数据请求协议

2、这里我们利用IDA动态调试找到so中的一些防护策略,主要为包名校验,这里利用修改arm指令解决防护问题。

3、数据列表请求接口:http://c.miaopai.com/1/recommend/index.json

4、返回的json数据格式如下:

5、数据请求分页功能实现原理:

第一次请求,lastUpdateTime为当前时间,page字段都不传递

1》上拉规律:lastUpdateTime:为上一次刷新时间;page:始终为1;
2》下拉规律:lastUpdateTime:为上一次刷新时间;page:依次递增;

注意这里的时间都是服务器时间戳为10位,Java中是13位需要特殊处理。

防护策略:加密放在native中做的,为了防止so被恶意调用,增加了包名检查,加密信息也放在了数据请求中。

第四、某手小视频

1、点击查看详情:Android中破解某手小视频的数据请求协议

2、这里我们直接使用Jadx分析Java层代码,找到so直接调用即可,内部没有防护策略。

3、数据列表请求接口:http://api.gifshow.com/rest/n/feed/hot

4、返回的json数据格式如下:

5、数据请求分页功能实现原理:

1》上拉数据规律pcursor不传值;refreshTimes递增;id值递增;page字段始终都是1;
2》下拉数据规律pcursor字段递增;page字段递增;refreshTimes递增;id值递增;

防护策略:加密放在native中做的,so中唯一做了一个系统版本判断校验。

因为这是个开源项目,并不会进行任何利益赚取,所以项目源码准备开源,会在编码美丽小密圈中同步开发进度,对于项目中用到的资源我会给大家一个方式,我们不需要设计师,测试,产品,因为这些我们可以自己做。确定人员之后,代码采用svn管理,我开通权限账号,大家就可以在周末时间进行项目开发和代码提交。

这个项目的包名就定位:cn.wjdiankong.levideo了,项目名称是:酱爆视频;如果大家还有更好的提议请留言:

其实我们做的事很简单,但是在这个过程中我们可以学习到很多知识,首先是逆向知识,其次是项目开发技巧,比如框架的使用,内存优化,图片资源优化,动画效果制作等。我希望通过这个项目能给大家带来更多的技术分享和知识提高。毕竟我只说干货,不闲扯淡。所以如果有感兴趣的同学,就来编码美丽技术圈一起参与项目开发。

 

《Android应用安全防护和逆向分析》

点击立即购买:京东  天猫  

更多内容:点击这里

关注微信公众号,最新技术干货实时推送

编码美丽技术圈
微信扫一扫进入我的”技术圈”世界
扫一扫加小编微信
添加时请注明:“编码美丽”非常感谢!

转载请注明:尼古拉斯.赵四 » 为什么我要死磕短视频四小龙的数据请求加密协议?因为我带你飞,伤痛我背!

喜欢 (39)or分享 (0)