Статья Обход плохих античитов

  • 164
  • 13
  • 21
Иногда, бывает надо проверить сервер на плохие-неты, но при проверке например на сервере Viper'a (Viper Role-Play)
автоматически выдаётся бан из за детекта util.NetworkStringToID и pcall
Обойти это "Ограничение" можно легко, и на любом сервере.
Для начало нужно хукнуть сборку и найти папку с названием, смахивающим на "AntiCheat", "ExploitBlocker", "AC",
либо ввести в поиск слова выше.

1645191059162.png

Дальше, заходя в него и в большинстве случаев можно увидить такую картину :
1645191172874.png

То-есть, что-бы задетектить человека тут отправляется net при плохом значении конварок.
Обойти это довольно просто например, поставив проверку этого нету на функцию net.Start
Screenshot_4.png

Подобную "проверку" можно ставить не только на net.Start например :

Screenshot_5.png
 
  • 162
  • 21
  • 22
Контакты для связи отсутствуют.
Можно еще было дополнить гайд тем, что некоторые системы (к примеру детект высокого пинга на забугорных серверах) берут информацию напрямую от клиента, т.е банальной подменой функции сервер уже думает что наш пинг будет равен 1

Вот пример исполнения:
Example:
local plMeta = FindMetaTable('PLAYER')
local oldFn = plMeta.Ping
local math_random = math.random

plMeta.Ping = function()
    return math_random(5, 15)
end

Такую-же махинацию можно было провернуть и с консольными переменными, так как даже бинарный модуль sourcenet получает информацию о переменной с клиента (а как еще-то?) с применением функции GetConVarString.

Ну а так гайд полезный для новичков и заслуженные 10 мешков яблок "Чемпион" он получает!
 
  • 159
  • 21
  • 59
Можно еще было дополнить гайд тем, что некоторые системы (к примеру детект высокого пинга на забугорных серверах) берут информацию напрямую от клиента, т.е банальной подменой функции сервер уже думает что наш пинг будет равен 1

Вот пример исполнения:
Example:
local plMeta = FindMetaTable('PLAYER')
local oldFn = plMeta.Ping
local math_random = math.random

plMeta.Ping = function()
    return math_random(5, 15)
end

Такую-же махинацию можно было провернуть и с консольными переменными, так как даже бинарный модуль sourcenet получает информацию о переменной с клиента (а как еще-то?) с применением функции GetConVarString.

Ну а так гайд полезный для новичков и заслуженные 10 мешков яблок "Чемпион" он получает!
Впервые о таком слышу, но это обойдется даже через cl_cmdrate +33 в консоль, да и методы эти все бесполезны когда анти чит ранится после init.lua и копирует оригинальные функции(тоесть не использует перезаписанные) и потом он дает бан проверив через jit.util.funcinfo
1645283431683.png
 
  • 162
  • 21
  • 22
Контакты для связи отсутствуют.
Впервые о таком слышу, но это обойдется даже cl_cmdrate +33, да и методы эти все бесполезны когда анти чит ранится после init.lua и копирует оригинальные функции и потом он дает бан проверив через jit.util.funcinfo
Посмотреть вложение 32466
Про пинг я проверял лично на Orbital Servers, но кодер данного австралийского проекта удалил эту проверку после того, когда я рассказал про этот обход
 
  • 162
  • 21
  • 22
Контакты для связи отсутствуют.
Впервые о таком слышу, но это обойдется даже через cl_cmdrate +33 в консоль, да и методы эти все бесполезны когда анти чит ранится после init.lua и копирует оригинальные функции(тоесть не использует перезаписанные) и потом он дает бан проверив через jit.util.funcinfo
Посмотреть вложение 32466
Русские недо-разработчики великолепных паст даже не знают что такое LuaJIT, так что про это можно забыть в русском сегменте
 
Сверху Снизу