微信“跳一跳”如何改高分-微信小游戏分析

我本身是个程序员,对于微信“跳一跳”这个小游戏嗤之以鼻,但是迫于媳妇强烈要求提高下名次的要求,不得搞搞事情,教你如何解析这个微信小程序

https抓包

基于fiddler+ android 手机抓包,这部分不细讲,主要讲下这个游戏的通信数据流量分析

游戏初始化通信

游戏初始化
TIM截图20180106015513.png

小游戏初识化一个session_id,请求的url是 【POST】https://mp.weixin.qq.com/wxagame/wxagame_init,这部分给每次耍给个id

游戏提交内容

总体样本是这样:

3.png

提交的url 是https://mp.weixin.qq.com/wxagame/wxagame_bottlereport
提交的json文件:
···
{"base_req":
{"session_id":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"fast":1,"client_info":{"platform":"XXXXXXX","brand":"XXXXXXX","model":"XXXXXX","system":"Android 6.0"}},"report_list":[{"ts":1515173704,"type":10},{"ts":1515173706,"type":2,"score":1563,"best_score":1563,"break_record":0,"duration":2,"times":23},{"ts":1515173733,"type":10},{"ts":1515173740,"type":1,"duration":1134},{"ts":1515173744,"type":0,"scene":1089},{"ts":1515173749,"type":2,"score":0,"best_score":9,"break_record":0,"duration":16,"times":24},{"ts":1515173755,"type":10}]}
···
xxx表示一些个人隐私数据,我就略去了,这里最关键的是看懂这个json提交的内容

json文件包括两部分:

  1. base_req :表示你提交的请求,里面包含client_info、fast、session_id
  2. report_list : 这个包含若干个内容


    4.png

ts表示时间戳,
1515173704 = 2018/1/6 1:35:4 这个表示一个时间;
后边的type表示类型10,暂定为成绩一;
后边跟的是这次的成绩:


5.png

里面包含:
best_score 最好成绩
break_recode 是否打破记录
duration 持续时间
score 分数
times 时间(以s计时)
ts 时间戳(结束的时间戳)
type 又一个类型

这种结构体你会发现好几个,暂定为成绩1 ,成绩2 ,间隔时间,因为有的时候你是断断续续的玩的,在一个session生存周期内,你可能玩了好几次,所以这种设计是合理的

wxagame_getfriendsscore

这个就是为了获取你的好友的成绩,当然了,你如果截包的话,肯定可以改你本地的显示,但是对server毫无用处


6.png

最后了,教你如何让你的名次很牛逼

因为每次运行,程序最初会wxagame_init,这会让你获取一个session,然后你自己编个wxagame_bottlereport 提交过去就可以了,但是切记,这个服务器端肯定会校验,用这么多字段也不是白用的,他会校验你的结果,比如你的耗时跟你两次起始时间戳是否一致等等啦!!总之摸索几次,发个包,写个小程序就行,反正我是手算的,借助fiddler,web神器。

最后祝大家游戏愉快,重在如何玩,不在如何改,如果作弊玩也没意思了,对吧大家!!!

我不是web手,我更喜欢binary

推荐阅读更多精彩内容