⼀、⼯具准备
按照《作弊教程一:配置抓包工具》教程配置Charles抓包工具。
二、修改原理
1、目前关卡数据是通过游戏资源接口返回的,因为接口有缓存,所以要先删除游戏:
2、重新进入游戏,可以发现游戏的关卡接口只返回了关卡id,再通过关卡id去请求关卡数据:
3、关卡数据是通过游戏资源接口请求的,会被缓存到本地,第二次进入游戏就不会再请求了:
4、查看游戏关卡返回的数据,可以发现一个叫blockTypeData
的字段:
研究发现该字段记录了方块类型所对应的组数,比如"13": 2
表示类型13
的方块有2组,因为一组有3个方块,所以游戏里会出现2*3=6个类型13
的方块。
以下是所有方块类型的说明:
1 | { |
根据上面的类型对照表可以发现,游戏将会出现6个萝卜,3个树桩,以及6个铃铛,如图所示:
那为什么会看到3个青草呢?由levelData
字段可知,方块一共有9+9=18个,而blockTypeData
里面只有5*3=15个方块,缺少了3个。
所以第一关会自动给最上面的3个方块添加青草,猜想是为了方便新手点击消除,所以直接写死3个青草方块。
5、接下来试试把blockTypeData
的消除次数改为0,看看会发生什么事:
可以看到方块都是空白的,没有填充图片了,除了自动添加的3个青草。
而3个相同的空白方块也是可以消除的,这就给第二关的作弊提供了思路。
6、考虑到第二关有十几个方块,如果改数量的话太麻烦,所以试试把blockTypeData
改名,让游戏读不到这个字段,方块数量就相当于为0了:
果然是可行的,那么最简单的方法就是将blockTypeData
改名。
三、修改步骤
Charles可以使用Rewrite
功能来重写接口数据,具体步骤如下:
1、点击Charles的菜单打开Rewrite
面板:
2、点击左下方的Add按钮新建一个Rewrite
配置:
3、点击上边的Add按钮添加要重写的域名和路径:
4、Host
填写cat-match-static.easygame2021.com
,Path
填写*maps*
,注意要加星号:
5、点击下边的Add按钮新建重写规则:
6、Type
选择Body
,Where
选择Response
,Match
填写blockTypeData
,Replace
填写clockTypeData
,只改动了一个字符:
7、填写完毕:
8、为了重新请求游戏资源接口,需要先删除游戏:
9、重新进入游戏,游戏接口返回的blockTypeData
都会被修改为clockTypeData
,这样就完成了只通过修改一个字符就达到作弊的功能:
10、接下来就可以在别人面前玩游戏,跟别人说只有聪明的人才能看到方块的图案了。