在问我的问题之前,我必须向您解释我的项目以及我的工作方式。我为游戏制作服务器。该服务器需要大量开发,需要80万行代码。
[一个多月后。似乎有些作弊行为正在破坏玩家的乐趣。
我不得不承认,要弄清楚如何为此辩护,对我来说有点困难。服务器所有者社区正遭受太多攻击,每个人都在尽自己最大的努力为自己辩护。
我正在为该项目使用Lua,JSON,HTML和CSS,99%是Lua。
游戏客户端可以控制什么:
客户端可以执行命令,但仅允许命令管理员。除非注入自己的文件是否发出新命令。并可以在客户端游戏中注入代码(稍后解释)。
服务器的作用:
我想,这是我们可以做些事情的地方。所有服务器都安装了大量的mod,因此所有客户端都将下载我的所有mod / client脚本以触发服务器事件。
发送命令的过程是什么:
作弊者的表现如何?
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脚本来执行操作)
我在客户端脚本中具有全局和局部功能:
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
http://lua-users.org/lists/lua-l/2003-08/msg00081.html
因此,注入将失败,因为使用的变量将为lockeD。
我读过这篇文章:看起来对我来说这是一个很好的解决方案。
现在我有更精确的问题,请您帮我一下:
我不知道很多事情:
$ cat z.lua
这来自粘贴的网址。这是什么?英镑,您确认吗?在lua或Json中,有没有一种在使用前锁定变量的方法?