Skip to content

关于反作弊 #15

Description

@kasuganosoras

这游戏挺有意思的,群里大伙玩了一晚上,不过有俩地方有待完善:

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 修复方法

  1. 使用局部变量
  2. 避免直接公开加密方法 貌似没啥用

建议直接用 Swoole 一类的玩意起个 WebSocket 服务器,然后点击事件发送给服务器验证,通过判断点击时间间隔验证操作是否合法,以及是否有出现故意拖慢时间的操作,实现真 · 服务端反作弊(狗头

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions