Привет.
Доделываю свой fun amx плагин связанный с поломкой чита у читеров в cs 1.6, но есть некоторые проблемы которые не могу до конца решить.
Распишу некоторый функционал который я сделал, от лёгкого к сложному, с фото и видео чтобы было понятнее:
Этот функционал сам по себе влияет не на серверные, а на клиентские вары "cl_lc" и "cl_lw", которые в читах используются для бэктрека и имеют с ним прямое взаимодействие. Путём форсирования клиенту специальными клиентскими варами через "svc_stufftext" и другими способами которые назвать не могу, иначе его будут пытаться обойти, можно полностью отключать функциональность в самих читах (аим, кнайфбот и т.д. подобный функционал).
Приведу пример построенный на скриншотах.
Сама клиентская функция "ClientDLL_CreateMove":
Откуда происходит вызов бэктрека.
Вызов бэктрека из чита "hpp v6 by leak":
Вызов частей бэктрека.
Некоторая часть из или для бэктрека:
Здесь в 2-ух данных скриншотах продемонстрирован пример использования бэктрека. Полный код данного бэктрека просто изменяет netchan`увскую часть для исскуственного повышения задержки(пинга), к примеру из некоторой части уже видно что идёт проверка
P.s. этих некоторых частей существует много, не только с бэктреком.
Этот функционал проверяет deltatime(
Приведу пример построенный на скриншотах.
Есть CL_Move:
Здесь происходит сейф, и deltatime, и fps.
P.s. также и в MSG_ReadUserCmd, не только в них обоих, есть много методов.
Потом плагин производит с записанными данными махинации (AVG, соотношение и diff), вкалывает warns конкретному игроку(id, ip) и эксплуатирует клиентский "GetTickCount"/"GetTickCount64", а также другие методы. Сама эксплуатация - буст значения. Миллисекундный перехват(эксплойт клиента, особенно вкусный это нонстим) с подменой значения(бустом).
Что происходит после эксплуатации клиента спидхаком? - ломка рендеринга, логической и пакетной части.
Самое заметное:
1. Счётчик фпса на стороне клиента:
2. Отрисовка сцены, она начинает подвисать (к сожалению скриншотом не показать).
3. Дропы, лаги, фризы и потери в сетевой части клиента(netchan).
Можете это быстро проверить путём установки CE(Cheat Engine) огромного значения спидхака, его выключением, тестированием клиента без спидхака на серверах.
P.s. это ломает клиент до перезапуска игры.
Этот функционал позволяет эксплуатировать саму логику чита посредством играния с сырыми указателями.
Приведу пример построенный на скриншотах.
Уязвимая функция из чита "hpp v6 by blick":
Здесь есть массив с статичным размером памяти и вызовами небезопасных функций WinSDK (strcpy_s).
Вам достаточно сделать плагин который в
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 И желательно без зависимости от другого плагина? Ложные варнинги.
Доделываю свой fun amx плагин связанный с поломкой чита у читеров в cs 1.6, но есть некоторые проблемы которые не могу до конца решить.
Распишу некоторый функционал который я сделал, от лёгкого к сложному, с фото и видео чтобы было понятнее:
- LC и LW форсирование.
- Speedhack перехватчик.
- RCE.
LC и LW форсирование.
Этот функционал сам по себе влияет не на серверные, а на клиентские вары "cl_lc" и "cl_lw", которые в читах используются для бэктрека и имеют с ним прямое взаимодействие. Путём форсирования клиенту специальными клиентскими варами через "svc_stufftext" и другими способами которые назвать не могу, иначе его будут пытаться обойти, можно полностью отключать функциональность в самих читах (аим, кнайфбот и т.д. подобный функционал).Приведу пример построенный на скриншотах.
Сама клиентская функция "ClientDLL_CreateMove":
Откуда происходит вызов бэктрека.
Вызов бэктрека из чита "hpp v6 by leak":
Вызов частей бэктрека.
Некоторая часть из или для бэктрека:
Здесь в 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:
Здесь происходит сейф, и deltatime, и fps.
P.s. также и в MSG_ReadUserCmd, не только в них обоих, есть много методов.
Потом плагин производит с записанными данными махинации (AVG, соотношение и diff), вкалывает warns конкретному игроку(id, ip) и эксплуатирует клиентский "GetTickCount"/"GetTickCount64", а также другие методы. Сама эксплуатация - буст значения. Миллисекундный перехват(эксплойт клиента, особенно вкусный это нонстим) с подменой значения(бустом).
Что происходит после эксплуатации клиента спидхаком? - ломка рендеринга, логической и пакетной части.
Самое заметное:
1. Счётчик фпса на стороне клиента:
2. Отрисовка сцены, она начинает подвисать (к сожалению скриншотом не показать).
3. Дропы, лаги, фризы и потери в сетевой части клиента(netchan).
Можете это быстро проверить путём установки CE(Cheat Engine) огромного значения спидхака, его выключением, тестированием клиента без спидхака на серверах.
P.s. это ломает клиент до перезапуска игры.
RCE.
Этот функционал позволяет эксплуатировать саму логику чита посредством играния с сырыми указателями.Приведу пример построенный на скриншотах.
Уязвимая функция из чита "hpp v6 by blick":
Здесь есть массив с статичным размером памяти и вызовами небезопасных функций 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 И желательно без зависимости от другого плагина? Ложные варнинги.