gpt4 book ai didi

anti-cheat - 如何防止我们的(多人)游戏中作弊?

转载 作者:行者123 更新时间:2023-12-02 03:38:39 24 4
gpt4 key购买 nike

如果您正在编写游戏,您应该考虑作弊者以及如何防止他们作弊。

我认为不仅是 MMO 多人游戏,还包括单人游戏或“自制”p2p mp 游戏。

当游戏完全基于服务器-客户端架构时,我认为工作几乎完成,但也存在墙黑客或其他东西。

我制作了自己的 p2p 游戏,一段时间后作弊者出现了。他们只是使用 Cheat Engine 并尝试过速度黑客和内存黑客的脚本小子。

大多数 speedhacks Hook gettickcount。我通过以下简单的技巧来解决 Speedhackers 的问题。我只是跟踪 time()-GetTickCount() 值,如果差异发生变化,那就是作弊。

可以通过在某处保留散列副本并始终移动它并始终通过随机值对其进行重新散列来解决内存损坏问题。不匹配会导致崩溃。

要彻底解决 Cheat Engine ,只需检查:

if (OpenFileMapping(FILE_MAP_READ,false,'CEHYPERSCANSETTINGS')!=0)
{
// Cheat Engine runs.
}

(这是一个 friend 告诉我的,我还没有测试过。)

这些技巧解决了大多数作弊者的问题。但当然还有更多作弊技巧。我打开这个维基,来讨论更多其他作弊技术以及避免它们的方法。

最佳答案

我认为您不应该采取任何措施来阻止单人游戏中的作弊行为。您的用户购买了游戏,如果他们愿意,他们应该能够作弊,只要他们不与其他人玩游戏。

以下是我所做的一些事情。这些主要是针对锦标赛游戏的反作弊系统,其中金钱处于危险之中,并且对用户系统的一定程度的入侵被认为是可以接受的。我在休闲游戏上做这些事情时会很小心,因为如果你的游戏不稳定,就有可能导致系统出现问题。

1) 在可能的情况下,“永远不要信任客户”是您要遵守的最安全的原则。在服务器上执行所有操作,并且仅向客户端提供在任何给定时间呈现他应该能够在屏幕上看到的内容所需的尽可能多的知识。即,如果客户端不知道隐藏在墙后的玩家的位置,则墙黑客不会给用户带来任何好处。对于高速 Action 游戏来说,这可能非常困难 - 特别是现在实时阴影等已成为常态,即使玩家的 body 可见,用户也可能需要能够看到阴影 - 但它应该始终是在您的选项顶部。在点对点游戏中也极其困难,但有一些方法可以限制同伴之间的知识。只有当性能变得令人望而却步,或者超出您的时间/金钱预算时,才应考虑以下项目。

2) 打开所有其他进程,并 Hook 它们的 WriteProcessMemory 函数,以便它们无法写入游戏进程中的内存。正确完成这一步骤将阻止 90% 的所有作弊行为和 Cheat Engine 。

3) 做同样的事情, Hook 各种鼠标和键盘模拟功能。这将阻止许多瞄准机器人和其他类型的自动化机器人。

4) Hook 到游戏进程中的 VirtualProtectEx/VirtualAllocEx/etc 函数,并监视哪些模块正在更改保护级别或分配新的内存块。当您的游戏进行大量分配时,您必须巧妙地处理这一点,以防止 CPU 过于密集,但这是可以做到的。

5) Hook LoadLibrary 函数并监视正在动态加载的任何 DLL,以防止 DLL 注入(inject)。

6) 在游戏连接上使用一些轻量级多态编码。

7) 使用一些反调试技术来防止调试器附加到您的进程。 Google 反调试,你应该能够找到很多东西。

8) 使用自定义专有 PE 打包程序来防止对您的游戏进行有用的反汇编。

9) 连接到处理透明度和 Alpha 混合的 OpenGL 或 Direct3D 函数和方法。

10) 如果使用着色器,请对着色器和着色器常量值进行校验和。

11) 对玩家角色使用额外的遮挡剔除技术,以防止当玩家角色的视线被其他几何体阻挡时,他们无法被渲染。它可能对你的表现有帮助,也可能没有帮助,但它可以防止许多黑客攻击。

关于anti-cheat - 如何防止我们的(多人)游戏中作弊?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/960499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com