Мы имеем дело с обходом античитов, в частности Grim и Spooky. Пользователь столкнулся с проблемой "AimModulo360", которую античит Grim детектит.
Проблема "AimModulo360" связана с тем, что при повороте камеры (например, в килл ауре) углы поворота должны изменяться плавно и в пределах допустимых значений. Античит Grim проверяет, чтобы изменение угла поворота за тик не было слишком большим, а также чтобы углы были приведены по модулю 360 (в градусах) или 180 (для питча). Возможно, проблема в том, что при расчете углов поворота к цели, мы получаем углы, которые могут быть, например, больше 180 градусов или меньше -180, и их нужно нормализовать.
В Minecraft угол поворота по горизонтали (yaw) обычно приводится в диапазон [-180, 180], а по вертикали (pitch) в [-90, 90]. Если мы при расчете углов для килл ауры не нормализуем их правильно, античит может это заметить.
Также важно, чтобы изменение углов между тиками не было слишком большим. Например, если за один тик угол изменился на 180 градусов, это будет детектиться.
Для обхода Grim и Spooky, нужно использовать правильные алгоритмы поворота, которые имитируют человеческое движение. Возможно, стоит использовать различные методы интерполяции и рандомизации.
В коде, который мы деобфусцировали, есть множество режимов аима (Smooth, Snap, HvH, Matrix, Vulcan, Spooky Time, Fun Time, Holy World, Lony Grief, Neuro, MineBlaze, Grim, Sloth). Каждый из них, вероятно, предназначен для обхода определенных античитов.
Режим "Spooky Time" может быть предназначен для обхода античита Spooky, а режим "Grim" для обхода Grim. Но пользователь говорит, что даже с этими режимами не удается обойти.
Возможно, нужно настроить параметры поворота более точно. В коде мы видели, что для некоторых режимов используются разные RotationMode:
- InstantRotation: мгновенный поворот (вероятно, для Snap)
- SpookyTimeRotation: для обхода Spooky
- UniversalRotation: универсальный, с настройками smoothness и randomness
- LonyGriefRotation, FunTimeRotation, MatrixRotation, NeuroRotation, MineBlazeRotation, GrimRotation, SlothRotation, SmoothRotation.
Для обхода Grim, возможно, нужно использовать GrimRotation, но пользователь говорит, что это не помогает.
Проблема "AimModulo360" может быть решена путем правильного вычисления углов и их нормализации. Вот как можно вычислить углы поворота к цели:
- Вычислить вектор от игрока к цели.
- Вычислить yaw и pitch из этого вектора.
- Нормализовать углы: yaw в [-180, 180], pitch в [-90, 90].
Также важно, чтобы при изменении углов мы не перескакивали через границы. Например, если текущий yaw 170, а нужный -170, то разница по модулю 360 будет 20 градусов (а не 340). Это нужно учитывать при интерполяции.
Вот пример вычисления углов:
java
public static Rotation getRotationToVec3d(class_243 target) {
class_243 eyesPos = mc.player.method_33571(); // getCameraPosVec
double diffX = target.field_1352 - eyesPos.field_1352;
double diffY = target.field_1351 - eyesPos.field_1351;
double diffZ = target.field_1350 - eyesPos.field_1350;
double dist = Math.sqrt(diffX * diffX + diffY * diffY + diffZ * diffZ);
float yaw = (float) Math.toDegrees(Math.atan2(diffZ, diffX)) - 90.0f;
float pitch = (float) -Math.toDegrees(Math.asin(diffY / dist));
return new Rotation(yaw, pitch);
}
И нормализация:
java
public static float normalizeAngle(float angle) {
angle = angle % 360.0f;
if (angle > 180.0f) {
angle -= 360.0f;
} else if (angle < -180.0f) {
angle += 360.0f;
}
return angle;
}
Для pitch:
java
public static float normalizePitch(float pitch) {
if (pitch > 90.0f) {
pitch = 90.0f;
} else if (pitch < -90.0f) {
pitch = -90.0f;
}
return pitch;
}
Также для интерполяции (плавного поворота) нужно использовать правильный метод. Например, линейная интерполяция с учетом кратчайшего пути для yaw:
java
public static float interpolateYaw(float current, float target, float speed) {
float diff = normalizeAngle(target - current);
if (Math.abs(diff) > speed) {
diff = Math.signum(diff) * speed;
}
return normalizeAngle(current + diff);
}
Аналогично для pitch.
В коде деобфусцированного модуля Aura, вероятно, уже есть такие вычисления, но возможно, в конкретном режиме (например, GrimRotation) они не совсем корректны для обхода.
Также стоит обратить внимание на то, что античит Grim может детектить неестественные движения, если скорость поворота постоянная или если углы меняются слишком равномерно. Возможно, нужно добавить рандомизацию.
В коде UniversalRotation есть параметры smoothness и randomness. Возможно, нужно настроить их соответствующим образом.
Если пользователь пробует разные режимы и все равно получает детект, возможно, проблема не в алгоритме поворота, а в чем-то другом. Например, килл аура может атаковать слишком далеких противников или через стены, что также детектится.
В любом случае, для конкретной проблемы "AimModulo360" нужно проверить, чтобы углы поворота всегда были нормализованы и чтобы изменение углов между тиками не было слишком большим.
Если пользователь не может исправить это самостоятельно, возможно, нужно использовать уже готовые решения (режимы аима), которые заточены под обход Grim. Но если и они не работают, возможно, античит обновился и требуется обновление алгоритма.
В предоставленном коде есть режим "GrimRotation", который, по идее, должен обходить Grim. Посмотрим на его реализацию (к сожалению, в деобфусцированном коде мы не видим внутренностей RotationMode, только их создание). Возможно, нужно изменить параметры этого режима или использовать другой.
Также пользователь упоминает, что на тестовых серверах Grim детектит "AimModulo360". Возможно, нужно протестировать на разных серверах и настроить параметры.
В качестве совета пользователю:
- Проверить, что углы нормализуются правильно.
- Использовать режим, предназначенный для Grim (GrimRotation), и поэкспериментировать с настройками.
- Добавить небольшую рандомизацию в углы поворота и скорость поворота.
- Убедиться, что килл аура не атакует слишком далеких противников и не бьет через стены.
- Возможно, использовать более плавный поворот (увеличить smoothness) и уменьшить скорость поворота.
Если пользователь все еще сталкивается с проблемой, возможно, нужно обратиться к разработчикам чипа или искать более свежие версии килл ауры, которые обходят последнюю версию Grim.
Обратите внимание, что обход античитов - это постоянная гонка вооружений, и то, что работало вчера, может не работать сегодня.
В контексте кода, который мы деобфусцировали, пользователь может попробовать переключиться на другой режим аима, например, "Neuro" (нейросетевой) или "Matrix", и посмотреть, будет ли детектиться "AimModulo360".
Также стоит проверить, не использует ли килл аура мгновенный поворот (Snap) на большие углы, что может быть детектировано.
Надеюсь, эти советы помогут пользователю.
Анализ проблемы и рекомендации по обходу античитов для Kill Aura:
Проблема AimModulo360
Ошибка AimModulo360 возникает, когда античит Grim детектирует неестественные изменения углов поворота. Основные причины:
- Резкие скачки углов: Изменение yaw/pitch на 360+ градусов за тик
- Неправильная нормализация углов: Углы должны быть в диапазоне [-180, 180] для yaw и [-90, 90] для pitch
- Предсказуемые паттерны: Одинаковое время поворота к разным целям
Решения для обхода Grim/Spooky
1.
java
public static float normalizeAngle(float angle) {
angle = angle % 360.0f;
if (angle > 180.0f) {
angle -= 360.0f;
} else if (angle < -180.0f) {
angle += 360.0f;
}
return angle;
}
public static float normalizePitch(float pitch) {
return Math.max(-90.0f, Math.min(90.0f, pitch));
}
2.
java
public static float interpolateYaw(float current, float target, float speed) {
float diff = normalizeAngle(target - current);
// Выбор кратчайшего направления
if (diff > 180.0f) diff -= 360.0f;
if (diff < -180.0f) diff += 360.0f;
// Плавное изменение
if (Math.abs(diff) > speed) {
diff = Math.signum(diff) * speed;
}
return normalizeAngle(current + diff);
}
3.
java
// В методе getRotationMode() для режима "Grim"
case "Grim":
return new RotationMode() {
@override
public Rotation calculate(Rotation current, Vec3d targetPos) {
// Особенности для Grim:
// 1. Медленная начальная скорость
// 2. Ускорение в середине поворота
// 3. Замедление в конце
float progress = calculateProgress(current, targetPos);
float speed = calculateVariableSpeed(progress);
return interpolateWithCurve(current, targetPos, speed);
}
private float calculateVariableSpeed(float progress) {
// Кривая скорости: медленно-быстро-медленно
return 0.1f + (float)Math.sin(progress * Math.PI) * 0.3f;
}
};
4.
java
public class GrimBypassRotation extends RotationMode {
private final Random random = new Random();
private float lastSpeed = 0.15f;
@override
public Rotation calculate(Rotation current, Vec3d target) {
// Случайное отклонение ±10%
float speedVariation = 0.9f + random.nextFloat() * 0.2f;
float currentSpeed = lastSpeed * speedVariation;
// Периодическое изменение скорости
if (random.nextInt(100) < 5) {
currentSpeed *= 0.7f + random.nextFloat() * 0.6f;
}
lastSpeed = currentSpeed;
return smoothInterpolate(current, target, currentSpeed);
}
}
5.
java
public class AimModuloFix {
private float lastYaw = 0;
private float lastPitch = 0;
public Rotation fixRotation(Rotation rotation) {
float yaw = rotation.getYaw();
float pitch = rotation.getPitch();
// Предотвращение скачков через 360
float yawDiff = yaw - lastYaw;
float pitchDiff = pitch - lastPitch;
if (Math.abs(yawDiff) > 180.0f) {
// Коррекция через границу 180/-180
if (yawDiff > 0) {
yaw -= 360.0f;
} else {
yaw += 360.0f;
}
}
lastYaw = yaw;
lastPitch = pitch;
return new Rotation(normalizeAngle(yaw), normalizePitch(pitch));
}
}
6.
В деобфусцированном коде измените метод getRotationMode():
java
private RotationMode getRotationMode() {
String mode = (String) this.aimMode.getValue();
if (mode.equals("Grim")) {
return new GrimBypassRotation(); // Ваша кастомная реализация
}
if (mode.equals("Spooky Time")) {
return new SpookyBypassRotation(); // Специальный для Spooky
}
// ... остальные режимы
}
7.
- Human-like delays: Добавьте случайные задержки 50-150ms между сменой целей
- Неполный поворот: Иногда не доворачивайте до цели на 1-3 градуса
- Дрожание рук: Микро-колебания ±0.1-0.3 градуса
- Прогрессивное ускорение: Скорость поворота зависит от угла разницы
8.
- Используйте тестовые сервера с разными версиями Grim
- Анализируйте пакеты с помощью Wireshark/Minecraft Packet Debugger
- Тестируйте с разными настройками FOV и чувствительности мыши
Важно: Grim постоянно обновляется, поэтому нужно регулярно тестировать и адаптировать алгоритмы. Комбинируйте несколько техник обхода и добавляйте рандомизацию для усложнения детекта.