如何计算游戏玩家在作弊吗?

问题描述 投票:-1回答:1

在问我的问题之前,我必须向您解释我的项目以及我的工作方式。我为游戏制作服务器。该服务器需要大量开发,需要80万行代码。

[一个多月后。似乎有些作弊行为正在破坏玩家的乐趣。

我不得不承认,要弄清楚如何为此辩护,对我来说有点困难。服务器所有者社区正遭受太多攻击,每个人都在尽自己最大的努力为自己辩护。

我正在为该项目使用Lua,JSON,HTML和CSS,99%是Lua。

游戏客户端可以控制什么:

客户端可以执行命令,但仅允许命令管理员。除非注入自己的文件是否发出新命令。并可以在客户端游戏中注入代码(稍后解释)。

服务器的作用:

我想,这是我们可以做些事情的地方。所有服务器都安装了大量的mod,因此所有客户端都将下载我的所有mod / client脚本以触发服务器事件。

发送命令的过程是什么:

  • 客户端可以使用聊天/命令[attribut] [attribut2]
  • 客户端可以运行客户端的控制台和:命令[attribut] [attribut2]

作弊者的表现如何?

  • 1)带有Windows可执行文件的注射器隐藏在内存中。
  • 2)他们正在加载客户端文件,以使客户端命令调用服务器触发器*。(因为是的,每个人都使用相同的脚本,所以它是已知的触发器名称,这很可怜)
  • *)为此,他们打开客户端控制台并在其中编写:“ exec c:/filename.lua”)

50%的作弊脚本被AHCI和变量替换所混淆,如下所示。

作弊是什么样的?我无法在此处发布完整的代码>正文不得超过30000个字符;您输入了208906。<>混淆<>不缩进(1 ligne)<

-A全局函数:

function IllIlllIllIlllIlllIlllIll(IllIlllIllIllIll) if (IllIlllIllIllIll==(((((919 + 636)-636)*3147)/3147)+919))end end)

-全局变量:

IllIIllIIllIII(IllIIIllIIIIllI(IlIlIlIlIlIlIlIlII,IIIIIIIIllllllllIIIIIIII))()

-全局变量:

Xxxxx5 = {}

-A全局变量:

Xxxxx5.debug = true

-局部变量:

local logged = true

需要我帮助的地方

我不想检测到注射。但是,对此我完全无法控制。我想检测其中之一:(请记住,我可以注入我的客户端lua / Json脚本来执行操作)

  • [当有人在控制台中键入:exec吗?
  • [当有人使用全局变量/函数时? (因为我让他们“ Xxxxx5.debug = true”)
  • [当有人试图检测或扫描我的触发器时?
  • 我还没想到的事情?
  • 检测是否存在函数?

我在客户端脚本中具有全局和局部功能:

local function d(e)
    local f = {}
    local h = GetGameTimer() / 200
    f.r = math.floor(math.sin(h * e + 0) * 127 + 128)
    f.g = math.floor(math.sin(h * e + 2) * 127 + 128)
    f.b = math.floor(math.sin(h * e + 4) * 127 + 128)
    return f
end


function Dt(text, x, y)
    ..stuff
end

一个好的信息是:我成功地做了一个很好的保护,但这是非常基本的。大多数作弊行为都使用相同的命令。我只是修补了shordcuts以加入它们。客户使用他们会得到踢。如果编码更好,也许是解决方案?但是,如果玩家正在聊天或控制台中,那么它将不再起作用,因此我不知道当玩家处于这种状态时它是如何工作的。 (禁用密钥)

为什么要寻求帮助?

我可以保证我开发了所有脚本,重新处理了所有下载的脚本,找到了所有其他解决方案,而没有任何帮助。我更喜欢学习钓鱼而不是要钓鱼。但是这次尝试了许多不起作用的东西。

我尝试过的方法:这些条件中没有一个起作用:

-- if (_G["Xxxxx.IsMenuOpened"] ~= nil) then
    -- while true do
    -- print = 'Xxxxx'
    -- end
-- end

-- if Xxxxx ~= nil then
    -- setfenv(Xxxxx , nil )
-- end

-- if rawget( _G, Xxxxx) ~= nil then  -- "var" n'est pas déclaré
    -- print 'Xxxxx DETECTER !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
-- end

-- if rawget( _G, Xxxx) ~= nil then  -- "var" n'est pas déclaré
    -- print 'Xxxxx DETECTER !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
-- end

-- if (_G["Xxxx.IsAnyMenuOpened"] ~= nil) then
    -- while true do
    -- print = 'Xxxxx'
    -- end
    -- print = 'xxxxx'
-- end

-- if source == '[Xxxx]' or source == 'Xxxxx' then 
    -- while true do
    -- print = 'Xxxxx'
    -- end
    -- print = 'xxxxx'
-- end

-- if (_G["Xxxxx"] ~= nil) then
    -- while true do
    -- print = 'Xxxxx'
    -- end
    -- print = 'xxxxx'
-- end

-- if Xxxxx ~= nil or Lynx8.debug = true or Lynx8.debug = false then
    -- reason2 = 'Xxxxx DETECTE'
    -- TriggerServerEvent("Drop_player" , reason2 )
-- end

-- if Xxxxx.Display() ~= nil then
    -- reason2 = 'Xxxxx DETECTE'
    -- TriggerServerEvent("Drop_player" , reason2 )
-- end
variables lua detection
1个回答
-1
投票
我拥有大部分二手作弊。因此它们都具有全局变量和功能。所以我搜索了是否有一种方法可以通过在作弊者之前使用并锁定全局变量来锁定全局变量。

http://lua-users.org/lists/lua-l/2003-08/msg00081.html

因此,注入将失败,因为使用的变量将为lockeD。

我读过这篇文章:看起来对我来说这是一个很好的解决方案。

现在我有更精确的问题,请您帮我一下:

我不知道很多事情:

$ cat z.lua

这来自粘贴的网址。这是什么?

英镑,您确认吗?在lua或Json中,有没有一种在使用前锁定变量的方法?

© www.soinside.com 2019 - 2024. All rights reserved.