Начинающий
- Статус
- Оффлайн
- Регистрация
- 19 Окт 2025
- Сообщения
- 96
- Реакции
- 4
Народ, кто ковырялся в античите FunTime, нужна адекватная точка зрения, а то уже не понимаю, это я тупой или они реально накрутили какую-то Franken-систему поверх старого говнокода.
Речь про FunTime (MC-сервер, их кастомный античит на движке плагинов, но часть логики явно вынесена в отдельный модуль/серверную часть). Я сел поковырять их проверки на движение/комбат, потому что поведение античита иногда вообще нелогичное: один и тот же скрипт/клиент ведёт себя по-разному на разных сессиях.
Что именно делал: лез в трафик между клиентом и сервером через сниффер, отслеживал, как сервер реагирует на пачки `position / look / attack` пакетов. Пытался понять, где именно срабатывает античит: сервер сначала просто флагает (резкие “откаты” назад), потом добавляет “резиновость” движения, и только после нескольких одинаковых паттернов уже кикает/банит. По ощущениям, у них несколько уровней проверок, и они не всегда срабатывают в одном и том же порядке.
Что заметил по поведению:
- На чистом клиенте одни и те же действия (спринт + стрейф + прыжки) иногда вообще не триггерят античит, а иногда ловишь микро-откат в одно и то же место. Такое ощущение, будто часть проверок идёт по старому модулю, часть по новому, и какой из них сработает — зависит от нагрузки или очереди обработки.
- Прогонял записанный дамп (одинаковая последовательность пакетов) через реиграв: один раз сервер просто игнорит, второй раз уже флагует как подозрительное движение. Либо у них какой-то stateful-анализ с накоплением статистики, либо реально работают два разных обработчика параллельно.
- По логике очень похоже, что старые проверки (условный “legacy-античит” в плагинах) всё ещё живут на сервере, а сверху навешан новый модуль, который тоже лезет в те же данные. В итоге на одни и те же действия реакция идёт то от старого блока, то от нового. Такое чувство, что FunTime выкатывали обнову античита поэтапно, часть проверок дописали, а старое не до конца выпилили, и теперь оно в некоторых сценариях пересекается.
Что уже пробовал:
менял паттерны движения/комбата, пытался подвести под “границу” срабатывания — порог триггера одной и той же последовательности пакетов плавает. Игрался с задержками между пакетами (искусственный ping и jitter): при ровном пинге иногда вообще тишина, при лёгком рандомном джиттере триггер получается воспроизводить стабильнее. Плюс смотрел, не завязан ли античит на время сессии / количество действий — есть ощущение, что система “прогревается” и начинает агрессивнее реагировать ближе к середине игры.
Для дебага движения на своей стороне набросал такой черновой код (условно логер движения, чтобы потом сравнивать с моментами, когда сервер начинает “кусаться”):
Смысл в том, чтобы логировать то, как выглядит движение “глазами сервера” (позиция + время), считать фактическую скорость и искать аномальные скачки, а потом сравнивать эти моменты с тем, когда FunTime начинает откатывать/лагать/кикать.
Собственно вопросы к тем, кто плотно ковырял FunTime и их античит:
1. У них реально гибридный античит (старый + новый модуль), или я просто не туда смотрю?
2. Есть ли подтверждённая инфа, что часть проверок до сих пор держится на старых плагинах/конфиге, а сверху докручен отдельный “античит-сервис”?
3. Замечали нестабильное поведение: один и тот же клиент/паттерн то спокойно проходит, то ловит флаг без каких-либо изменений?
4. Куда логичнее копать дальше: в сторону анализа серверных тиков и очередей обработки пакетов или в сторону какого-то накопительного профиля игрока (античит, который “усиливает” проверки по ходу сессии)?
Если кто-то уже делал реверс именно FunTime и может хотя бы в общих чертах описать архитектуру их античита (без слива всего подчистую), буду благодарен за любые наводки. Сейчас это выглядит как типичный кейс “новый античит натянули поверх старого, а поведение стало непредсказуемым”.
Логи/дампы движений могу закинуть в ЛС, если кто-то реально хочет поразбираться, а не просто написать “играй без софта”.
Речь про FunTime (MC-сервер, их кастомный античит на движке плагинов, но часть логики явно вынесена в отдельный модуль/серверную часть). Я сел поковырять их проверки на движение/комбат, потому что поведение античита иногда вообще нелогичное: один и тот же скрипт/клиент ведёт себя по-разному на разных сессиях.
Что именно делал: лез в трафик между клиентом и сервером через сниффер, отслеживал, как сервер реагирует на пачки `position / look / attack` пакетов. Пытался понять, где именно срабатывает античит: сервер сначала просто флагает (резкие “откаты” назад), потом добавляет “резиновость” движения, и только после нескольких одинаковых паттернов уже кикает/банит. По ощущениям, у них несколько уровней проверок, и они не всегда срабатывают в одном и том же порядке.
Что заметил по поведению:
- На чистом клиенте одни и те же действия (спринт + стрейф + прыжки) иногда вообще не триггерят античит, а иногда ловишь микро-откат в одно и то же место. Такое ощущение, будто часть проверок идёт по старому модулю, часть по новому, и какой из них сработает — зависит от нагрузки или очереди обработки.
- Прогонял записанный дамп (одинаковая последовательность пакетов) через реиграв: один раз сервер просто игнорит, второй раз уже флагует как подозрительное движение. Либо у них какой-то stateful-анализ с накоплением статистики, либо реально работают два разных обработчика параллельно.
- По логике очень похоже, что старые проверки (условный “legacy-античит” в плагинах) всё ещё живут на сервере, а сверху навешан новый модуль, который тоже лезет в те же данные. В итоге на одни и те же действия реакция идёт то от старого блока, то от нового. Такое чувство, что FunTime выкатывали обнову античита поэтапно, часть проверок дописали, а старое не до конца выпилили, и теперь оно в некоторых сценариях пересекается.
Что уже пробовал:
менял паттерны движения/комбата, пытался подвести под “границу” срабатывания — порог триггера одной и той же последовательности пакетов плавает. Игрался с задержками между пакетами (искусственный ping и jitter): при ровном пинге иногда вообще тишина, при лёгком рандомном джиттере триггер получается воспроизводить стабильнее. Плюс смотрел, не завязан ли античит на время сессии / количество действий — есть ощущение, что система “прогревается” и начинает агрессивнее реагировать ближе к середине игры.
Для дебага движения на своей стороне набросал такой черновой код (условно логер движения, чтобы потом сравнивать с моментами, когда сервер начинает “кусаться”):
Код:
struct Vec3 {
double x, y, z;
};
struct MoveSample {
Vec3 pos;
double serverTime;
double speed;
};
std::vector<MoveSample> g_samples;
void log_move(const Vec3& prev, const Vec3& cur, double serverTime) {
double dx = cur.x - prev.x;
double dy = cur.y - prev.y;
double dz = cur.z - prev.z;
double dist = std::sqrt(dx * dx + dy * dy + dz * dz);
double dt = std::max(0.0001, serverTime - (g_samples.empty() ? serverTime : g_samples.back().serverTime));
MoveSample s;
s.pos = cur;
s.serverTime = serverTime;
s.speed = dist / dt;
g_samples.push_back(s);
}
// Деобфусцированный код для поиска "подозрительных" скачков скорости относительно предыдущих значений
std::vector<MoveSample> find_suspicious(double maxLegitSpeed, double spikeFactor) {
std::vector<MoveSample> out;
for (size_t i = 1; i < g_samples.size(); ++i) {
double v_prev = g_samples[i - 1].speed;
double v_cur = g_samples[i].speed;
if (v_cur > maxLegitSpeed && v_prev > 0.0 && (v_cur / v_prev) > spikeFactor) {
out.push_back(g_samples[i]);
}
}
return out;
}
Смысл в том, чтобы логировать то, как выглядит движение “глазами сервера” (позиция + время), считать фактическую скорость и искать аномальные скачки, а потом сравнивать эти моменты с тем, когда FunTime начинает откатывать/лагать/кикать.
Собственно вопросы к тем, кто плотно ковырял FunTime и их античит:
1. У них реально гибридный античит (старый + новый модуль), или я просто не туда смотрю?
2. Есть ли подтверждённая инфа, что часть проверок до сих пор держится на старых плагинах/конфиге, а сверху докручен отдельный “античит-сервис”?
3. Замечали нестабильное поведение: один и тот же клиент/паттерн то спокойно проходит, то ловит флаг без каких-либо изменений?
4. Куда логичнее копать дальше: в сторону анализа серверных тиков и очередей обработки пакетов или в сторону какого-то накопительного профиля игрока (античит, который “усиливает” проверки по ходу сессии)?
Если кто-то уже делал реверс именно FunTime и может хотя бы в общих чертах описать архитектуру их античита (без слива всего подчистую), буду благодарен за любые наводки. Сейчас это выглядит как типичный кейс “новый античит натянули поверх старого, а поведение стало непредсказуемым”.
Логи/дампы движений могу закинуть в ЛС, если кто-то реально хочет поразбираться, а не просто написать “играй без софта”.
