问题标签 [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 回答
725 浏览

web-services - UTC时间Web服务,防止手游作弊

我想通过将移动设备的时钟向前设置来防止“时间作弊”。游戏需要网络连接是可以的。在查看了众多“时间网络服务”相关资源后,我有点迷失了。我只想向类似的东西提交请求www.gettime.com/utc并解析结果以在我的游戏中使用。

为此目的使用什么好的网络服务?

请注意,游戏仅在启动时请求一次 UTC 时间。看起来我应该使用 NTP 服务器,但我不确定哪个是不错的选择。由于 url 将在应用程序中进行硬编码,因此做出一个好的选择很重要。

0 投票
1 回答
727 浏览

windows - 检测机器人应用程序存在/活动(客户端)的最有效方法是什么?

检测机器人应用程序存在/活动的最有效方法是什么?

1 考虑到用户可以授予Windows (XP/7) 操作系统中反作弊系统的任何访问权限。

2 不考虑潜在的不道德或非法方法。

3 忽略用户行为检测(例如检查用户操作之间的时间或鼠标移动的平滑度或使用验证码来检测机器人或其他)。

到目前为止,我能想到:

  • 检查鼠标/键盘事件的 INJECTED 标志。

  • 扫描进程列表,检测潜在的“坏”进程。

  • 检查应用程序的完整性以避免直接注入。

  • 检查环境是否为虚拟机(以避免上述检查的误报)。

0 投票
0 回答
129 浏览

security - 启发式检测地理位置欺骗

我想防止在我的应用程序(Android 和 iPhone)上进行位置欺骗。我知道一旦设备植根,我就无法防止 GPS 欺骗。

所以我正在实施服务器端验证。假设我列出了用户的最后 10 个元组(位置、时间)。

检测用户是否在欺骗 GPS 的最有效算法是什么?

另外,我宁愿假阴性也不愿假阳性。

0 投票
2 回答
1084 浏览

encryption - 如何在随机生成关卡的游戏中进行每日挑战?

我目前正在制作一个随机制作关卡的游戏,但我有兴趣让每个人在每日挑战部分都玩相同的关卡,比如 Spelunky。

起初我考虑让客户根据他们的日期来决定种子,但日期可能会被本地欺骗。

我可以访问 parse.com 免费帐户,因此我可以在云中执行代码并期望返回结果。因此,我考虑根据当前日期向云代码询问哈希值,但这可能会被欺骗以播放不同的级别,同时向服务器发送该级别的分数而不是每日分数。

然后我想在服务器上加密日期并在客户端解密它,但是如果我使用对称加密,这可能会出现问题。所以......也许使用非对称加密?

我在这里错过了一个更简单的解决方案吗?这感觉就像我让自己过于复杂,但我不确定。这类问题有普遍接受的解决方案吗?谷歌搜索了一段时间后,我没有找到任何东西。

PS:我正在使用unity3d,以防万一。

0 投票
1 回答
4385 浏览

memory - 如何检测是否有另一个进程正在读取我的应用程序的内存

是否有可能检测到另一个进程是否正在读取我的应用程序的内存?如果是这样,你能给我一些关于如何做到这一点的例子吗?(C++ 中的示例会很棒)

谢谢你

0 投票
5 回答
18339 浏览

android - 如何防止 Rooted Android 手机安装我的应用程序?

在此上下文中的目的是防止在排行榜中报告虚假的高分(我的应用是游戏)。这发生在 Flappy Birds - 请参阅此链接 - http://www.androidpit.com/forum/589832/flappy-bird-high-score-cheat-set-your-own-high-score

由于 root 用户可以用他的手机做任何他想做的事情,我想其他的解决方法都不会起作用,唯一的解决方案是阻止 root 用户安装应用程序。我对吗?有没有办法做到这一点?

PS:我的游戏并不总是需要互联网连接,因此当它发生在另一台服务器上时报告分数是不可行的。只有当互联网连接可用时,才会向排行榜报告高分。

0 投票
2 回答
1599 浏览

c# - 如何避免作弊引擎在运行时查看我的字符串

我在玩 CheatEngine,发现它可以在客户端应用程序中查看我的所有字符串。我想知道我应该怎么做才能让作弊引擎在运行时看不到我的字符串。我尝试了所有我知道的方法,但只要我有一个字符串,CheatEngine 就可以查看它。我想防止这种情况发生,或者至少 CheatEngine 将加密字符串可视化。

0 投票
1 回答
155 浏览

c++ - 我可以使用 ASM 阻止程序吗?

我尝试了几天来阻止我的游戏的作弊程序,我与几位编码人员交谈,其中一位说我可以使用 ASM 来阻止它。该程序隐藏得很好,我在内存中找不到它,我无法检测到它的扫描过程,所以也许这可能是解决方案?谁能给我一个例子,我如何检测和阻止使用 c++ 和 ASM 的程序?

这是我目前使用内存转储检测和阻止作弊的方法:

0 投票
2 回答
881 浏览

c++ - 通过代码生成防止作弊

这种反作弊技术是否适用于使用私人服务器(公开未知的可执行文件)的多人游戏:

当客户端启动游戏时,它将每天自动更新(使用启动器)。服务器也会自行更新。除非有真正的补丁,否则更新仅包括游戏对象内存布局、网络代码和着色器的更改。这是使用自动生成和随机化 (C++) 类的自动化系统完成的。也许它还可以将假对象添加到层次结构中,以使识别对象更加困难。

通过这种方式,我希望能够比破解者更快地更新游戏,并将逆向工程、更新和发布/更新新的作弊。

这会奏效还是黑客可以以某种方式绕过这种机制?他们会每天做这项工作,还是可以在某个时候将其自动化?我可以做些什么来改进这个系统?

从长远来看,随机化内存布局似乎没有帮助,因为通过在可执行文件中执行函数调用并从该代码中提取指针偏移量,可以或多或少地轻松提取布局。所以为了有效地防止这种情况,调用结构和代码本身也需要随机化。

有没有好的方法来做到这一点?这对自动破解有效吗?

0 投票
0 回答
878 浏览

javascript - 如何防止 JavaScript 游戏作弊?

首先,我知道没有 100% 确定的解决方案,而且这个问题被问过不止一次。

这些帖子是我最喜欢的第一第二,但它们太旧了,没有足够的有效解决方案。

我正在用 JavaScript、HTML5 和 CSS3 创建一个社交游戏,并使用画布。出于安全原因,我想知道如何检测用户是否正在使用他的调试器工具。为了防止用户试图更改某些值、速度等。但我可以用 PHP 处理大部分这些东西。

我的游戏是实时游戏。

这是一些反作弊想法的非详尽列表:

  • 每次他在服务器端获得积分时检查值,看看它是否一致。
  • 加密每个值,然后在服务器端解密。
  • 每个值都有一个不同的哈希值,并在每次用户加载游戏时使其随机化。
  • 缩小和编码我的整个脚本文件。
  • 检测用户是否正在使用调试器并检查他是否在游戏期间调整了窗口大小(但他可以在加载游戏之前打开他的调试器......)。
  • 使页面提交完整的游戏重播并检查不一致之处。
  • 对于对服务器的每个请求,发送脚本并将其与原始脚本进行比较,以防用户对其进行了修改。
  • 将缩小的脚本放在我的 html 页面中,对于每个请求,发回原始脚本以替换实际脚本。
  • 在客户端放置一个计时器,在需要时在服务器端发送时间以检查值是否一致(为此,您可以计算分数是否与您设置的最小时间匹配,例如:时间为 47 秒,分数是 1000,对于 40 秒和 50 秒之间的游戏,分数不能超过 1500,所以在这种情况下一切都很好)。

当然还有更多的解决方案要列出。

对于每个解决方案,他都可以访问他的调试器工具。没有适当的方法可以完全阻止使用调试器工具。因此,没有办法 100% 阻止用户不作弊。

至少您可以通过将所有这些解决方案组合在一起来实现几乎反作弊。即使您没有完整的工作系统,也只有一小部分用户会作弊,并且您可以确定您会找到有关如何在游戏中作弊的教程,因此您将能够找到解决方案它发生的时间。