Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Гайд Arduino: Хватит дрочить на SendInput. Сделай себе иммунный HID-Aimbot на Modern C++

$$$ eac gang $$$
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
31 Май 2024
Сообщения
552
Реакции
105
В данной статье рассматривается практическая реализация эмуляции мыши на базе микроконтроллеров Arduino с чипом ATmega32u4. Цель - создание аппаратного HID-устройства, неотличимого для операционной системы от обычной мыши. Этот метод позволяет обходить античиты, анализирующие программные вызовы WinAPI.
Для эмуляции HID-устройства необходим микроконтроллер с поддержкой USB в режиме устройства. Чипы на базе ATmega32u4 (Leonardo, Pro Micro, Micro) имеют встроенный USB-контроллер, позволяющий эмулировать любой HID-класс.

! Чипы ATmega328p (Arduino UNO, Nano) не подходят из-за отсутствия нативной USB-HID поддержки. !

С выбором платы разобрались, перейдём к прошивке.

Имейте ввиду, метод описанный в статье не обходит FACEIT, Vanguard, EAC. Но при и этом прекрасно справляется с другими античитами.
Для большей безопасности настоятельно рекомендую спуффать плату вручную или через ранее опубликованный мною спуффер на форуме.
Прошивка выполняет две задачи:
  1. Прием команд по Serial интерфейсу
  2. Эмуляция движений мыши через HID
Для прошивки/спуффинга платы вам понадобиться Arduino IDE, скачать ее можно по ссылке:
Пожалуйста, авторизуйтесь для просмотра ссылки.


Пример стандартной прошивки с перемещением курсора и нажатием клавиш на мышке:
Firmware:
Expand Collapse Copy
#include <HID.h>

const unsigned long SERIAL_BAUD = 115200;
const int MAX_MOVE = 50;
const int MIN_MOVE = -50;

bool enable_randomization = true;

void setup() {
    Serial.begin(SERIAL_BAUD);
    Mouse.begin();
    
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);
}

void loop() {
    if (Serial.available() > 0) {
        int delta_x = Serial.parseInt();
        int delta_y = Serial.parseInt();
        int button = Serial.parseInt();
        
        while (Serial.available() && Serial.read() != '\n');
        
        delta_x = constrain(delta_x, MIN_MOVE, MAX_MOVE);
        delta_y = constrain(delta_y, MIN_MOVE, MAX_MOVE);
        
        if (enable_randomization && (delta_x != 0 || delta_y != 0)) {
            delta_x += random(-1, 2);
            delta_y += random(-1, 2);
            delay(random(1, 3));
        }
        
        if (delta_x != 0 || delta_y != 0) {
            Mouse.move(delta_x, delta_y, 0);
        }
        
        switch(button) {
            case 1:
                Mouse.click(MOUSE_LEFT);
                break;
            case 2:
                Mouse.click(MOUSE_RIGHT);
                break;
            case 3:
                Mouse.click(MOUSE_MIDDLE);
                break;
        }
    }
    
    delay(1);
}

В нашем случае данные на плату передаются в текстовом формате:
<dx> <dy> <button>\n

Пример:
Код:
Expand Collapse Copy
"10 -5 1\n"   // движение (10, -5) и левый клик
"0 0 2\n"     // правый клик без движения
"-30 15 0\n"  // движение без клика

Всё что вам нужно это передавать данные через Serial в нужном формате и получать результат, подстроить код вашего проекта под данную прошивку(либо же написать собственную) проблемы нет.

Лично я использовал Arduino в таких играх как: Stalcraft: X, Apex Legends, Valorant(до детектов), CS2(FastCUP, still ud).
Представленный метод обеспечивает надежный обход программных античитов за счет переноса логики эмуляции ввода на аппаратный уровень. Основные преимущества:
  1. Отсутствие вызовов WinAPI, доступных для перехвата
  2. Неотличимость от обычной мыши для драйверной подсистемы Windows
  3. Простота реализации и отладки

Я мог бы так-же упомянуть в данной статье доп. приколы по типу USB Host Shield и прочего мусора который можно подключить к Arduino, но исходя из моего опыта использования от этой херни буквально нет никакого толка(особенно в текущее время).

Заранее предвижу комментарии и отвечу сразу:

Да, Arduino как способ эмуляции мыши устарела, но всё ещё работоспособна с некоторыми античитами, к покупке платы на Arduino я рекомендую только для первичного ознакомления с Hardware устройствами в сфере читов. Я настоятельно рекомендую использовать MAKCU. Как только эта плата появиться под рукой обязательно распишу подробный гайд на неё.
 
Назад
Сверху Снизу