问题标签 [anti-cheat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
86 浏览

javascript - 用于服务器端验证的 JavaScript 事务日志

在编写客户端 (js) 的游戏中,其中有多人游戏元素,例如排行榜。将用户操作记录到带有时间戳的事务日志以验证提交数据的完整性的最佳方式是什么,以及如何验证此日志中的操作?

是否有必要这样做,或者编写一个向服务器提交分数并混淆代码的哈希函数就足以防止这种作弊?

编辑 - 游戏说明:

在这个游戏中,你在一张 50 格长的地图上行走。在每个图块上,您都会遇到敌人/城镇/事件(寻找硬币等)每次到达地图的尽头时,都会加载一个难度稍高的新地图。这个难度与玩家和他从城镇购买的物品一起被保存(在 MYSQL 数据库上使用 PHP)。这些物品的功率整数取决于它们的统计数据(dmg/hp/防御等)。物品的功率被求和并被保存。

功率、阶段(难度)和用户名是前 10 名玩家的排行榜中显示的内容,按最高功率排序。

0 投票
1 回答
119 浏览

node.js - 根据玩家位置从服务器发送数据

我有 2D 多人浏览器游戏。游戏包含类似蛇的玩家和充满不同颜色块网格的世界。

目前我从服务器发送这些数据:

  • if new player spawn - 关于他的所有方块和玩家的数据以及关于其他人的新生成的玩家的数据
  • 如果有人改变他的移动 - 关于他的轨迹、位置和方向的数据给每个人
  • 如果某些块的颜色发生了变化 - 向所有人提供有关它的数据

所以我不发送冗余数据,而是将所有数据发送给每个人。修改客户端的骗子可以看到一切!所以我需要根据他们的视口向客户发送数据。


对于类似蛇的玩家,我可能会检查玩家的最小值和最大值、X 和 Y。

如果玩家 A 靠近玩家 B,服务器将向客户端 A 发送关于玩家 B 的数据。如果玩家 A 离玩家 B 太远,服务器将从客户端 A 中移除玩家 B。只有当玩家 A 时,服务器才会发送关于玩家 B 更改的数据靠近。


主要问题

但我不确定我应该如何发送有关块的数据。恐怕我会发送太多冗余数据。

当玩家生成时,我将向他发送有关他附近块的数据。另外,当他附近的方块颜色发生变化时,我会发送给他。

如果玩家将向左移动,我将向他发送有关左侧块的数据。但我应该多久做一次?每次他行驶一个街区距离时,我应该给他发送新街区吗?

如果玩家决定去他已经去过的地方怎么办?我应该再次向他发送冗余数据吗?或者我可以检查那里的块是否发生了变化。但是我怎么能记得那个玩家已经看过一些方块呢?我可能不记得玩家看到的所有方块(方块数量太大)。这对性能不利。

我怎样才能保护我的游戏免受缩放作弊器的影响并且不降低性能?

0 投票
0 回答
52 浏览

python - 在 python 中抑制按键的程序是如何工作的?

我正在尝试使程序中的流程自动化,但遇到了一个小问题。使用此代码:

我收到一条错误消息

计算机程序如何知道输入的来源?为什么这种按键技术可以在这么多地方工作,但在某些应用程序中,因为他们已经实现了一些“反伪点击”修复,所以不起作用?

我已经解决了我的问题,我想知道一家公司如何阻止鼠标点击程序!我不想知道如何在程序中输入鼠标点击,我已经知道了:)

0 投票
1 回答
3908 浏览

android - 检测Android上安装的GameGuardian/防止GameGuard修改值

再会。我正在尝试找到一种方法来检测安装在 Android 操作系统上的游戏守护者 apk。谷歌没有给出任何答案,所以我来到了这里。问题是 Game Guardian 在首次启动时安装了不同的 apk,并带有一些随机包名称。有人对如何保护应用程序不被 Game Guardian 修改有任何建议吗?

谢谢

0 投票
1 回答
259 浏览

c# - 如何使用反作弊访问游戏的MainModule?

大约一个月前,我为自己编写了一个 python 脚本来自动记录正在运行的程序及其相关信息,并使用 C# 程序来获取这些信息。

我今天下载了一个游戏,当我运行它时,我得到一个System.ComponentModel.Win32Exception错误对话框。

我打开 Visual Studio 来调试我得到错误的地方。当我尝试访问时出现错误Process.MainModule

当我在编写该程序时遇到错误时,我在 Internet 上搜索答案并将 C# 程序设为 64 位以访问 64 位进程并请求管理员权限以访问以管理员身份运行的进程。我能找到的关于 MainModule 错误的所有问题都与这两个问题有关。

该游戏使用的是 Easy Anti Cheat,我想这可能会阻止我访问该过程。

我也曾经WMI尝试至少获取文件路径,以便我可以从FileVersionInfo.GetVersionInfo函数中获取一些信息,但 wmi 也没有返回文件路径或命令行。

psutil在 python 中使用来获取命令行,因为如果不使用 WMI,我无法从 C# 中获取它,所以我尝试从那里获取一些信息,但是在我尝试做的任何事情上都会出错,我什至无法得到文件名,而我可以从 C# 中得到它。

C#代码的相关部分是

有没有办法至少可以获取 exe 路径,这样我就可以使用 FileVersionInfo 而不会触发反作弊程序并可能被禁止?即使是 Windows 10 任务管理器也没有显示命令行(但是当我右键单击游戏并选择打开文件路径时它会打开文件夹)。

0 投票
1 回答
190 浏览

javascript - 如何在考虑服务器负载的同时制作多人 javascript 游戏作弊证明

为了学习更多和新技术,我开始制作一个小游戏。我们的想法是不断扩展它并添加新事物。这对我来说是一种很好的方式来试验和尝试新技术,同时也有一些东西可以玩。

现在我有一个很好的基础站。它完全构建在 Vue.js 中。然而,现在一切都在客户端处理。将来我想使用 websockets 把它变成一个多人游戏。我知道让客户处理所有事情并不理想,因为作弊很容易做到。我想知道应对这种情况的最佳方法是什么。我的游戏有点像太空侵略者。很多敌人产生,你必须射击他们。

最初,我想将所有游戏逻辑都放在服务器上,然后让客户端按照服务器的指示渲染事物。但是,如果负载很高,结果会如何呢?如果有 10000 名玩家同时在玩,这意味着每秒向服务器发送大量请求。我认为这会严重影响游戏的性能。

在这方面有哪些最佳实践?我希望尽可能避免作弊,同时牢记高负载和运行良好的游戏。我读过一些游戏只是使用某种形式的混淆来计算分数,但由于我的很简单,所以混淆它似乎并不能真正起作用。我已经包含了当前游戏的屏幕截图,让您了解我在说什么。

你是船,敌人是黄点,在顶部产卵。当他们撞到最后一排时,您将失去生命。当你输掉 3 时,游戏结束。我的问题是,随着许多游戏同时运行,跟踪所有这些敌人将变得非常困难,因为会有很多。

亲切的问候。

0 投票
1 回答
167 浏览

reactjs - ReactJS Show alert when user leaves the current browser tab

I would like to lock users on the page. The users can go on other tabs or desktop at least when they click on other tab of browser I would like to show them alert dialog which say "Are you sure?"

0 投票
0 回答
67 浏览

anti-cheat - 防止安卓游戏作弊

假设我们开发了一个向服务器提交高分的安卓(谷歌商店)游戏。我们如何防止(或至少在某种程度上保护)玩家使用诸如作弊引擎之类的软件来更改结果然后将其发送到服务器?

0 投票
1 回答
959 浏览

android - 如何防止安卓应用中的自动点击作弊?

我构建了一个 android 应用程序,用户使用秒表试图让它在 1 秒内停止。还有第二种游戏模式,用户尝试尽可能快地启动和停止秒表并获得最短的时间。您可以安装几个自动点击器应用程序,它们将启动和停止秒表,精确间隔 1 秒,并在几毫秒内双击屏幕。

我的问题是通过这种方法防止作弊的最佳方法是什么?是否有为此设计的库?谢谢你的帮助!

0 投票
1 回答
564 浏览

anti-cheat - 如何检查用户是否运行反作弊?

我想知道反作弊如何检查客户端是否真的运行了反作弊?我的意思是,为什么不能只是有人对 csgo 进行逆向工程,并更改 vac 的代码,使其不会检测到黑客攻击?vac 向服务器发送什么以确保它正在运行?就像它向服务器发送 tcp 消息一样,难道不能有人创建发送这些 tcp 消息的假 vac 吗?如何确保客户使用我的反作弊?