这游戏挺有意思的,群里大伙玩了一晚上,不过有俩地方有待完善:
0x01 加密问题
虽然脚本被加密混淆了,但是可以很轻松通过
encrypt2 = encrypt;
encrypt = function(text){
console.log(text);
// 这里想干什么都行,比如把原本的分数替换为 233
return encrypt2("233" + text.substr(3,));
}
实现打印加密前的明文内容,进行修改也可以。
0x02 变量问题
脚本内的变量全都是全局变量,可以直接被外部修改,例如
setInterval(function() {
_date1 = new Date();
_gameTimeNum = 20;
}, 100);
就可以实现暂停时间,加密混淆形同虚设。
实验:排行榜第一名那个嘉然 ID 就是我(狗头
0x03 修复方法
- 使用局部变量
避免直接公开加密方法 貌似没啥用
建议直接用 Swoole 一类的玩意起个 WebSocket 服务器,然后点击事件发送给服务器验证,通过判断点击时间间隔验证操作是否合法,以及是否有出现故意拖慢时间的操作,实现真 · 服务端反作弊(狗头
这游戏挺有意思的,群里大伙玩了一晚上,不过有俩地方有待完善:
0x01 加密问题
虽然脚本被加密混淆了,但是可以很轻松通过
实现打印加密前的明文内容,进行修改也可以。
0x02 变量问题
脚本内的变量全都是全局变量,可以直接被外部修改,例如
就可以实现暂停时间,加密混淆形同虚设。
实验:排行榜第一名那个嘉然 ID 就是我(狗头
0x03 修复方法
避免直接公开加密方法貌似没啥用建议直接用 Swoole 一类的玩意起个 WebSocket 服务器,然后点击事件发送给服务器验证,通过判断点击时间间隔验证操作是否合法,以及是否有出现故意拖慢时间的操作,实现真 · 服务端反作弊(狗头