5

所以我正在用 JavaScript 编写一个游戏,最大的问题是任何玩它的人可能对 JS 有相当了解的人都可以打开我的源代码,弄清楚它是如何工作的,然后将 agame.score = 100000000000000;插入控制台。但是,似乎除了混淆脚本之外,将所有内容包装在匿名函数中也可以解决问题。

(function() {
    game_start = function() {
        //etc
    }
    //etc
 })();

当我尝试从 Chrome 控制台运行任何代码时,它会出现undefined. 这是想要的结果,但是有没有办法绕过我的方法让它变得无用?甚至是防止从控制台运行的更好方法?

4

2 回答 2

4

没有办法确保这个人不会作弊。即使有严重混淆的代码(我说的是类似的东西H5b(b){if(b.pd()&&b.Ca&&b.gKa){var a=b.ra(RT.Nwa)),您仍然可以观察 UI 更改或网络请求并从那里进行跟踪。

有些人使用 AJAX 调用来验证分数,例如每次分数增加/减少时,应用程序都会对后端进行 AJAX 调用,并且您也在后端跟踪分数。当用户提交最终分数时,您将其与后端分数进行核对,如果不同,您将知道该人在作弊。

但是,这不会阻止人们编写一个脚本来进行这些 ajax 调用,并且这样可以使它的分数有效。

tl;dr:不,没有办法确保用户端代码不被泄露。

于 2012-09-19T00:17:32.790 回答
2

抱歉,当游戏在他的机器上运行时,没有办法真正防止用户作弊。任何在用户机器上运行的代码都可以被用户操作。当你想让作弊变得不可能时,你必须在服务器上实现所有游戏逻辑,不要发送任何玩家不应该知道的信息,不要接受任何不允许玩家发出的命令做。

于 2012-09-19T00:09:40.187 回答