Прежде чем задать свой вопрос, я должен объяснить вам мой проект и то, как я работаю. Я делаю сервер для игры. Этот сервер требует большой разработки, 800 тыс. Строк кода.
После более чем одного месяца. Похоже, что некоторые игроки используют чит для уничтожения удовольствия игрока.
Я должен признать, что мне немного трудно понять, как защитить себя от этого. Сообщество владельцев серверов слишком сильно атаковано, и каждый пытается защитить себя, как может.
Я работаю на Lua, JSON, HTML и CSS для этого проекта, 99% Lua.
Что контролирует игровой клиент:
Клиент может выполнять команды, но команды разрешены только администратору. За исключением случаев, если для инъекции его собственного файла сделайте новую команду. И может внедрить код внутри клиентской игры (объясните после).
Что делает сервер:
Я думаю, здесь мы можем что-то сделать. На всех серверах установлены тонны модов, поэтому все клиенты загружают все мои скрипты мод / клиент для запуска событий моих серверов.
Как происходит отправка команды:
- клиент может использовать чат / команду [attribut] [attribut2]
- клиент может запустить консоль клиента и: команду [attribut] [attribut2]
Как мошенники это делают?
- 1) Инжектор скрыт в памяти с исполняемым файлом Windows.
- 2) Они загружают файл клиента, чтобы заставить команды клиентов вызывать триггеры сервера *. (потому что, да, плохо, что все используют одни и те же сценарии, поэтому известны имена триггеров)
- *) Для этого они открывают консоль клиента и пишут внутри: "exec c: /filename.lua")
50% чит-скриптов обфусцированы AHCI и заменой переменных, как показано ниже.
Как выглядит чит? Я не могу опубликовать полный код здесь>Тело ограничено до 30000 символов;вы ввели 208906. <> обфусцированный <> без отступа (1 строка) <</p>
-A глобальная функция:
function IllIlllIllIlllIlllIlllIll(IllIlllIllIllIll) if (IllIlllIllIllIll==(((((919 + 636)-636)*3147)/3147)+919))end end)
-A глобальная переменная:
IllIIllIIllIII(IllIIIllIIIIllI(IlIlIlIlIlIlIlIlII,IIIIIIIIllllllllIIIIIIII))()
- глобальная переменная:
Xxxxx5 = {}
- глобальная переменная:
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
Хорошая информация: мне удается сделать хорошую защиту, но она оченьосновные .... Большинство читов используют те же команды, чтобы противостоять. Я просто залатал шордкоты, чтобы получить к ним доступ. Клиент получает удар, если он их использует. Может быть, это решение, если лучше закодировано? Но если игрок находится в чате или на консоли, он больше не работает, поэтому я не понимаю, как он работает, когда игрок находится в этом состоянии. (Ключ отключен)
Почему я прошу помощи?
Я могу заверить, что я разработал все свои скрипты, переработал все свои скачанные скрипты, нашел все другие решения,без посторонней помощи. Я предпочитаю учиться ловить рыбу, чем просить рыбу. Но на этот раз перепробовал много вещей, которые не работают.
Что я пробовал: ни одно из этих условий не сработало:
-- 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