[CS 1.6]: Доделка fun плагина ломающий чит читерам

  • Автор темы Автор темы skibidist
  • Дата начала Дата начала
Сообщения
4
Реакции
1
Привет.
Доделываю свой fun amx плагин связанный с поломкой чита у читеров в cs 1.6, но есть некоторые проблемы которые не могу до конца решить.

Распишу некоторый функционал который я сделал, от лёгкого к сложному, с фото и видео чтобы было понятнее:
  1. LC и LW форсирование.​
  2. Speedhack перехватчик.​
  3. RCE.​


LC и LW форсирование.​

Этот функционал сам по себе влияет не на серверные, а на клиентские вары "cl_lc" и "cl_lw", которые в читах используются для бэктрека и имеют с ним прямое взаимодействие. Путём форсирования клиенту специальными клиентскими варами через "svc_stufftext" и другими способами которые назвать не могу, иначе его будут пытаться обойти, можно полностью отключать функциональность в самих читах (аим, кнайфбот и т.д. подобный функционал).

Приведу пример построенный на скриншотах.

Сама клиентская функция "ClientDLL_CreateMove":
clientdllcreatemove.png


Откуда происходит вызов бэктрека.

Вызов бэктрека из чита "hpp v6 by leak":
hppv6_backtrack.png


Вызов частей бэктрека.

Некоторая часть из или для бэктрека:
hppv6_backtrackcode.png


Здесь в 2-ух данных скриншотах продемонстрирован пример использования бэктрека. Полный код данного бэктрека просто изменяет netchan`увскую часть для исскуственного повышения задержки(пинга), к примеру из некоторой части уже видно что идёт проверка if (!sv_unlag->value || !cl_lw->value || !cl_lc->value) и дальнейший return. Эту часть как раз и эксплуатирует данный метод.
P.s. этих некоторых частей существует много, не только с бэктреком.


SpeedHack перехватчик.​

Этот функционал проверяет deltatime(usercmd_s::msec) и fps(CL_Move count in sec(PPS)), через формулу выкапывает AVG(среднее значение) этих двух, потом получает соотношение этих двух, потом смотрит diff(разницу), затем даёт warns(предупреждения) и на конец, решает ломать ли игроку игру с помощью обычного спидхака.

Приведу пример построенный на скриншотах.

Есть CL_Move:
123123.png


Здесь происходит сейф, и deltatime, и fps.
P.s. также и в MSG_ReadUserCmd, не только в них обоих, есть много методов.

Потом плагин производит с записанными данными махинации (AVG, соотношение и diff), вкалывает warns конкретному игроку(id, ip) и эксплуатирует клиентский "GetTickCount"/"GetTickCount64", а также другие методы. Сама эксплуатация - буст значения. Миллисекундный перехват(эксплойт клиента, особенно вкусный это нонстим) с подменой значения(бустом).

Что происходит после эксплуатации клиента спидхаком? - ломка рендеринга, логической и пакетной части.

Самое заметное:
1. Счётчик фпса на стороне клиента:
123123.png

2. Отрисовка сцены, она начинает подвисать (к сожалению скриншотом не показать).
3. Дропы, лаги, фризы и потери в сетевой части клиента(netchan).

Можете это быстро проверить путём установки CE(Cheat Engine) огромного значения спидхака, его выключением, тестированием клиента без спидхака на серверах.
P.s. это ломает клиент до перезапуска игры.


RCE.​

Этот функционал позволяет эксплуатировать саму логику чита посредством играния с сырыми указателями.

Приведу пример построенный на скриншотах.

Уязвимая функция из чита "hpp v6 by blick":
123123.png


Здесь есть массив с статичным размером памяти и вызовами небезопасных функций WinSDK (strcpy_s).

Вам достаточно сделать плагин который в public client_putinserver изменит клиентский вар "name" на длину больше чем 32 символа, уязвимая функция вызывается каждый раз в известном нам "CL_CreateMove" поэтому не имеет значения где вы будете изменять клиентский вар, в public client_connect или public client_putinserver, соответственно вы сделаете свой первый RCE против "hpp v6 by blick" (желательно с "shellcode" DEP, ASLR и SECURITY_COOKIE).

P.s. таких уязвимых функций много.


Проблемы:
1. LC и LW подмена у меня происходит через абуз ReGameDll (ReAPI), оно при первом коннекте игрока отключает так сказать "связь" клиента с лаг-компенсацией регеймдиела, при втором коннекте уже разрешает клиенту, благо рехлдс это позволяет (да, клиент коннектится два раза, а не один), таким образом я детекчу блоки и фейки от читов.
1.1. Такие махинации не сильно хороши (если откровенно - дырявые), для некоторых плагинов которые как раз фиксят 2way коннект в 1way коннект и старых серверов(HLDS) это не сработает, есть ли предложения чем это заменить вместо насильственных действий с такими плагинами и серверами?
1.2. Если клиент прыгнет на один коннект пакет ниже, то этот способ просто выводит ложные, но не пропускает, есть идеи как фиксить?

2. Speedhack перехватчик также работает ближе к нонстим истории, т.к. они дырявые.
2.1. Есть ли условный форс времени клиента через svc или другие примитивы, к примеру садисткое колдование с MSG_WriteUserCmd(в простонародии дельты) клиенту И которое будет желательно совместим с HLDS?
2.2. Есть ли формула или какой-нибудь легковесный алгоритм который пофиксит "slowmo"(с высоким фпс) на билдах чуть ниже 6xxx И желательно без зависимости от другого плагина? Ложные варнинги.
 

Вложения

  • clientdllcreatemove.png
    clientdllcreatemove.png
    3 КБ · Просмотры: 148

Кто просматривает тему

Назад
Верх