【发布时间】:2018-12-21 05:42:49
【问题描述】:
我打算制作一个基于网络的游戏(使用 three.js 和 socket.io),我主要关心的一个问题是防止作弊。
我知道制作安全游戏的基础知识,即:
- 永远不要相信客户端,客户端仅用于渲染和输入捕获
- 将您的游戏逻辑放在服务器端
- 最好的反作弊是人类
知道,我不知道如何保护的漏洞正是那些与客户端有关且服务器无法检查的漏洞。例如,作为攻击者,我可以:
- 修改渲染器或着色器以使墙壁不可见(wallhack)
- 修改摄像头的位置,即在变量中
- 注入将为我输入的代码 (aimbot)
在经典游戏(可执行文件)中,存在可以检测非法操作的程序。通常,反作弊程序会检查程序集并检查是否没有注入 dll。
也许有专门用于此任务的混淆器(即使这意味着性能下降)?
我还没有完成所有的研究,但我希望你们中的一些人已经遇到过这个问题,并且可以通过定位我的研究来节省我很多时间。
非常感谢
【问题讨论】:
-
这更像是一个一般性的讨论,而不是一个可以回答的问题。 (What topics can I ask about here? 题外话第 5 项)。您可能会在 Game Dev Stack Exchange 上找到更好的答案和有价值的对话。
-
适当的标志只给了我 5 个其他 Stack 站点,并且不包括 Game Dev。在这里留下评论,以防版主需要更多关于为什么标志没有被正确分类的信息。
-
JS 不会编译为机器码,据我所知,不能进行内联汇编,所以最好的反作弊方法是将所有内容存储在服务器上。 JS 可以很容易地“被黑”。您可以在服务器上检查玩家角度是否不像在瞄准机器人上那样“机器人”,或者构建自己的 OverWatch 系统,例如 Valve :)
标签: security web three.js game-engine anti-cheat