欢乐消除开心假日协议解密
协/议/流/量/解/密
分析欢乐消除开心假日这款游戏流量的协议加密方式。
序
欢乐消除开心假日是一款合成+模拟家装的游戏,在这个游戏中,你将成为一位充满热情的设计师,与好友一起经营工作室。你需要根据客户的需求重新设计每个房间,创造出令人惊艳的独特设计。借助你自己的想象力和创造力,你将征服挑战,创造出令人眼前一亮的工艺品!这款游戏多个平台都能玩,iOS、Android、小程序都有,前一阵子貌似很火的样子,有人找我搞它,结果由于习惯性活干得比较慢,对方用不上了,考虑给大家体验一下。
本
毫无疑问,这类存档类游戏,协议的套路是一样的,数据是加密的。它在整体上,一大串存档数据,在玩的过程中上传服务器,在合适的时候,从服务器下载下来,同步到本地使用。上传下载的过程,有一些校验,当然,还有一些风控策略。在服务端或者客户端,处理了就行了。
下载存档
这款游戏上传存档和下载存档,用的都是HTTP,小程序用的URL是这个:
https://kxjr.vzhifu.net/wxxyx/userinfo/getinfo
使用POST请求,请求体数据如下:
params={"appid":"38865","prjid":"38865","openid":"ohk81cccccccY","chaid":"wechat","timestamp":"1673596666000","sign":"660767676767677676E0B2C8607151"}
这个里面唯一的看点是sign值,加盐然后MD5即可获得,盐值解开小程序包就能获取到,小程序解包可参考文末之前的文章,或者后台找我(公众号:协议分析与还原)。
Android和iOS的开发者应该是同一个人,使用的URL都是这个:
https://kxjr.app.vzhifu.net/dnwx/game/login/v2
这个的抓包过程需要注意使用合适的方式。
使用POST请求,请求体数据如下:
params= {"accountType": "0","aid": "2ec511b87b96d69e","appid": "38823","brand": "apple","chaid": "ios","cmd": "1002","email": "","gold": "0","idfa": "","itemList": "","level": "0","loginId": "xxxx","lsn": "220360577","lv": "0","model": "iphone11","netType": "2","os": "ios","pid": "38111117","pkgName": "com.xzd.holiday.hlxc","pwd": "","sign": "xxxx","sysVer": "28","timestamp": "1337049333359","userName": "","wxhead": "","wxid": "","wxname": ""}
这个里面仍然只有sign值计算需要注意,加盐然后MD5即可获得,盐值从程序里就能获取到,如果遇到困难可以后台找我(公众号:协议分析与还原)。
上传存档
上传存档的过程,小程序用的URL是这个:
https://kxjr.vzhifu.net/wxxyx/userinfo/update
Android和iOS用的是这个:
https://kxjr.app.vzhifu.net/dnwx/game/report/v2
里面的存档是和下载的响应体内基本一样的,一个itemList里面有很大的data或者zipuserdata,需要解base64,解gzip,然后unquote,找到里面的resources,处理里面的数值,再反向处理一边还原:
itemdatab64=player['itemList']['data']#这个里面的resources 里面时数据,改这个才生效itemdata=base64.b64decode(itemdatab64.encode())itemdataunzip=gzdecode(itemdata)itemdataurldec = urllib.parse.unquote(itemdataunzip)itemdatajson=json.loads(itemdataurldec)resources=itemdatajson['resources']
其他的就很简单了,如果遇到问题,仍然可以找我。
跋
这款游戏的存档修改,还算简单,我最喜欢简单的算法了,我相信大家也喜欢。
小提醒
解密协议有困难,找我(协议分析与还原),准没错,大家一起提高。
END
往期回顾
PC端微信小程序wxapkg解密
cocos2dx小游戏数据签名算法破解