[分享] 如何破解网页小游戏 A Dark Room
声明:作者不赞成诸如此类投机取巧,通过修改游戏程序来达到目的的行为
本篇文章只作为心得体会分享
某日,某人在机房颓废的时候看到了这样一个网页小游戏。
然后某人就本能地点下了“生火”。
某人:”这个读条好慢阿。“
然后某人又很自然的跟着剧情去 “伐木”。
某人:”这个读条更慢了阿(恼)。“
鲁迅曾说过,时间不是用来看读条上的。
所以某人为了秉承鲁迅先生的志向,决定看看有没有什么方法破解掉读条。
由于某人之前学过写一点 HTML,所以就本能的打开了 F12。
可以看到,这个“添柴”的按钮是属于一个叫 stokeButton 的元素,目前他所引用的 class 是 button。
当按下“添柴”按钮之后,
class 又附加上了一个 disabled。
disabled
英 [dɪs'eɪbld] 美 [dɪs'eɪbld]
adj. 关闭的
所以,我们只要删除这个 disabled 标签,我们就可以在读条结束之前再一次点击按钮了!
某人:”但是这还是很麻烦阿(恼)。“
于是我看了以下这个元素的事件触发器,
可以看到,当点击按钮的时候,他会触发 Button.js 里的一个 function。
某人将这一段 function 截取了下来。
1 var el = $('<div>')
2 .attr('id', typeof(options.id) != 'undefined' ? options.id : "BTN_" + Engine.getGuid())
3 .addClass('button')
4 .text(typeof(options.text) != 'undefined' ? options.text : "button")
5 .click(function() {
6 if(!$(this).hasClass('disabled')) {
7 Button.cooldown($(this));
8 $(this).data("handler")($(this));
9 }
10 })
11 .data("handler", typeof options.click == 'function' ? options.click : function() { Engine.log("click"); })
13 .data("remaining", 0)
14 .data("cooldown", typeof options.cooldown == 'number' ? options.cooldown : 0);
15 el.append($("<div>").addClass('cooldown'));
可以看到,在第 5 行,当点击时会触发一次判断。
当这个元素没有标签 disabled 时,就触发一次冷却。
当触发冷却后,理所应当的按钮就被加上 disabled 标签了。
所以我们可以把这一句给注释掉,这样他不就触发不了 cooldown 了吗?
1 var el = $('<div>')
2 .attr('id', typeof(options.id) != 'undefined' ? options.id : "BTN_" + Engine.getGuid())
3 .addClass('button')
4 .text(typeof(options.text) != 'undefined' ? options.text : "button")
5 .click(function() {
6 if(!$(this).hasClass('disabled')) {
7 // Button.cooldown($(this));
8 $(this).data("handler")($(this));
9 }
10 })
11 .data("handler", typeof options.click == 'function' ? options.click : function() { Engine.log("click"); })
13 .data("remaining", 0)
14 .data("cooldown", typeof options.cooldown == 'number' ? options.cooldown : 0);
15 el.append($("<div>").addClass('cooldown'));
这之后,
有效!
我们完成了破解掉这个游戏的第一个关卡。
那么我们现在不妨换一个思路。
触发 cooldown 和添加 disabled 之间必然存在一步。
我们找到那一步改掉,也可以直接干掉冷却时间。
在一个叫做 setDisabled 里的函数,有一句
btn.addClass('disabled');
同样的语句在 Button.js 里存在两处。
如果我们把这两句注释掉的话...
好耶!
虽然和上面的效果不大一样,但是还是做到了取消冷却。
把冷却时间干掉以后,如果配合连点器,那么我们会得到惊人的产出。
我不玩了我电脑要炸了
连载中
Updated on 2021-03-07