DDR爱好者之家 Design By 杰米

9.20解决不显示方法在文末

羊了个羊近日火爆,对于这种收割智商税的游戏,论坛大佬们给出了很多思路

游戏由2关组成,在开始游戏时会请求每关的基本信息(包括卡牌类型代码和卡牌组数),然后将3倍卡牌放入一个array中随机打乱,再放入地图指定位置,以达到随机关卡不给活路的目的(误

地图id为80001(第一关)和90016(第二关,每天不同)

文件结构如下:

羊了个羊 快速通关(已解决名片不显示问题 9.20)

数据包结构:

羊了个羊 快速通关(已解决名片不显示问题 9.20)

目前已有的破解思路:

  1. 修改第二关的请求响应,将block内容改为和第一关一样(或改成同一种卡片)(来自本站羊了个羊修改关卡以及只留3卡片思路分析)

  2. 修改第二关的请求响应,将blockTypeData改掉,最终生成了全白的图片(来自b站CheersUP主的思路,简化了替换内容)

  3. 获取t值,直接发送通关请求

  4. 无限获取道具

使用第二种方法进行测试:

使用Charles的rewrite功能,将响应中的内容替换掉

羊了个羊 快速通关(已解决名片不显示问题 9.20)

blockTypeData改为clockTypeData,结果如图:

羊了个羊 快速通关(已解决名片不显示问题 9.20)

卡片全部变成了空白,轻松过关

使用第三种方法测试:

获取t值:随便找个请求拿到t

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXyNDkxNzcxNSwiZGVidWciOiIiLCJsYW5nIjoiIn0.vZVf1YuLOViM-tShvCM6mOKoEGZXnZhYzLRu5I9NFhM

发送请求:

https://cat-match.easygame2021.com/sheep/v1/game/game_over?rank_score=1&rank_state=1&rank_time=59&rank_role=1&skin=1

from bs4 import Beautifulimport requestst = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTQyNDM4ODQsIm5iZiI6MTY2MzE0MTY4NCwiaWF0IjoxNjYzMTM5ODg0LCJqdGkiOiJDTTpjYXRfbWF0Y2g6bHQxMjM0NTYiLCJvcGVuX2lkIjoiIiwidciOiIiLC.vZVf1YuLOViM-tShvCM6mOKoEGZXnZhYzLRu5I9NFhM"headers = {  "t": t }url = "https://cat-match.easygame2021.com/sheep/v1/game/game_over?rank_score=1&rank_state=1&rank_time=40&rank_role=1&skin=1"requests.get(url, headers)

这里我发送内容是通关时间40s,结果:

羊了个羊 快速通关(已解决名片不显示问题 9.20)

通关时间显示40秒,成功运行

由于不小心通了关,等明天再开游戏观察添加道具的接口了


9.18更新

今日游戏更新,上述方法二测试失败

通过抓包发现,开始游戏后的两次请求数据中,不再包含卡牌具体内容,因此修改失败

羊了个羊 快速通关(已解决名片不显示问题 9.20)

如图为第一关80001的数据,明显046ef1bab26e5b9bfe2473ded237b572是加密后的数据,但我们不关心具体内容

第二关9001884559a02920def9e5a3ddb921617de36

只要将这串字符改为第一关的就行,使用rewritemap local功能实现

羊了个羊 快速通关(已解决名片不显示问题 9.20)

再次开始游戏,此时第二关变为和第一关一样,顺利通关

羊了个羊 快速通关(已解决名片不显示问题 9.20)

本次更新加大了直接修改地图内容的难度(需要重新找文件修改,或阅读源码获取解密算法)但对于直接改响应/直接发送过关请求没有影响



9.20更新


今日羊了个羊再次更新,之前的方法可能都不太好使了

进入游戏,抓包,发现只剩下一个包

羊了个羊 快速通关(已解决名片不显示问题 9.20)

请求为:https://cat-match.easygame2021.com/sheep/v1/game/map_info_ex?matchType=3

查看响应内容:

羊了个羊 快速通关(已解决名片不显示问题 9.20)

data由两部分组成

  • map_md5
  • map_seed

map_seed是用于生成地图的种子,不清楚具体算法

map_md5很明显就是地图内容的md5加密,和昨天的加密一样,查看昨天的地图80001的加密数据,为046ef1bab26e5b9bfe2473ded237b572,和今天的map_md5[0]完全一致,那就将第二张图的数据也改为这个:

羊了个羊 快速通关(已解决名片不显示问题 9.20)

进入游戏后完美实现将第二张图替换为第一张(与9.18结果一致),顺利通关

羊了个羊 快速通关(已解决名片不显示问题 9.20)


貌似破解通关后名片上不显示,朋友圈不显示

查看名片:

羊了个羊 快速通关(已解决名片不显示问题 9.20)

发现未加入羊群,目前还不知道具体原因。查看名片后,找到数据包:

https://cat-match.easygame2021.com/sheep/v1/game/personal_info?

{        "err_code": 0,        "err_msg": "",        "data": {                "register_time": 1663161958,                "avatar": "",                "nick_name": "",                "challenge": 23,                "uid": 4210**23,                "daily_count": 4,                "topic_count": 0,                "today_state": 2,                "today_ts": 1663604857,                "today_time": 37,                "today_fail_count": 1,                "skin": 16        }}

明显today_state的值是有问题的,因为通关时的接口(旧版本和新版本)均为rank_state=1,猜测1才是正常值

保存该响应,修改state为1,通过map local功能修改响应地址:

{        "err_code": 0,        "err_msg": "",        "data": {                "register_time": 1663161958,                "avatar": "",                "nick_name": "",                "challenge": 23,                "uid": 4210**23,                "daily_count": 4,                "topic_count": 0,                "today_state": 1,                "today_ts": 1663604857,                "today_time": 37,                "today_fail_count": 1,                "skin": 16        }}

再次查看名片,名片成功出现了加入羊群(暂时只能自己看到)

羊了个羊 快速通关(已解决名片不显示问题 9.20)


通关无效解决办法

推测是否成功通关可能与map_md5有关,因此不碰map_md5,而是修改掉map_seed(修改该值不影响游戏开始,但影响卡牌的分布,卡牌会变得更加密集)

将响应修改为:

{        "err_code": 0,        "err_msg": "",        "data": {                "map_md5": ["046ef1bab26e5b9bfe2473ded237b572", "c1132aaca34fe95d20154aa4d5bfa826"],                "map_seed": [0, 0, 0, 0]        }}

这样将会得到大量重复的卡牌:

羊了个羊 快速通关(已解决名片不显示问题 9.20)

成功通关后名片和朋友圈均显示!

DDR爱好者之家 Design By 杰米