⼀、⼯具准备
按照《作弊教程一:配置抓包工具》教程配置Charles抓包工具。
二、修改原理
1、目前关卡数据是通过游戏资源接口返回的,因为接口有缓存,所以要先删除游戏:
2、重新进入游戏,可以发现游戏的关卡接口只返回了关卡id,再通过关卡id去请求关卡数据:
3、关卡数据是通过游戏资源接口请求的,会被缓存到本地,第二次进入游戏就不会再请求了:
4、根据前面的作弊教程《作弊教程三:皇帝的新羊》可知,blockTypeData
返回了方块图案对应的组数,如果将数量改为0后,方块就全部变成空白的。那么反过来的话,如果将其中某个图案的值改得很大,那所有方块基本都会被这个图案填充。
游戏的逻辑是将所有图案放在一个数组里打乱,再按顺序从数组里取图案,假如一局游戏有300个方块,我将其中一个图案改成300万个,游戏就会将存有300万个元素的数组打乱,前300个元素是相同的概率非常大,不成功的概率几乎只有万分之一。
可能有人会说,这样是有概率会失败的,确实有很小的概率会失败,但这个概率比原版游戏的通关概率大多了。如果300万个不够,那就改成3000万个。
5、由方块类型对照表可知,青草的类型为1:
1 | { |
那么只要将blockTypeData
里青草的数量改掉就行。
三、修改步骤
Charles可以使用Rewrite
功能来重写接口数据,具体步骤如下:
1、点击Charles的菜单打开Rewrite
面板:
2、点击左下方的Add按钮新建一个Rewrite
配置:
3、点击上边的Add按钮添加要重写的网址,Host
填写cat-match-static.easygame2021.com
,Path
填写*maps*
,注意要加星号:
4、点击下边的Add按钮新建重写规则,Type
选择Body
,Where
选择Response
,Match
填写"1":\d+
,勾选上Regex
,Replace
填写"1":1000000
:
这里出现的\d+
是正则表达式,表示任意数字,所以要勾选Regex
。
5、为了重新请求游戏资源接口,需要先删除游戏:
6、重新进入游戏,青草的个数由原来的7
变成了1000000
,这样就完成了只通过修改一个数字就达到作弊的功能:
7、可以看到方块都变成了青草: