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

Вопрос Valorant — Архитектура пиксельного аима и триггера на OpenCV

Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
606
Реакции
16
Влетаем в техничку по Valorant: разбор архитектуры пиксельного аима и триггербота на базе OpenCV.

Нашел любопытный концепт реализации внешнего софта, где автор (кодер из неигровой индустрии) решил попрактиковаться в обходе античитов через разделение логики и инпута. Схема классическая, но с парой интересных моментов по части обработки кадров.

Архитектура детекта и обработки

  1. Захват экрана: Юзается WinAPI и BitBlt. Метод старый как мир, для Валоранта — решение спорное из-за производительности и детектов оверлеев, но как база для экспериментов сойдет.
  2. Обработка через OpenCV:
    • Выделение ROI (область интереса) в центре экрана.
    • Фильтрация цветов в BGR пространстве с заданным допуском (tolerance).
    • Морфологические операции для очистки маски: поиск контуров (findContours), закрытие дырок в масках и фильтрация шумов.
    • Детект пушек через шаблонное соответствие (cv::matchTemplate) на разных скейлах.
  3. Логика триггера: Хеуристика попадания в перекрестие реализована через PixelData::is_in_cross().

Инпут и Named Pipes

Самое интересное здесь — разделение на два процесса для мимикрии под системный софт:

  1. Клиент (lghub.exe): Маскируется под софт Logitech. Занимается захватом, анализом картинки и принятием решения о выстреле или доводке.
  2. Сервер (server.exe): Принимает команды от клиента через именованный канал (Named Pipe) по адресу \\.\pipe\pipe18**20.
  3. Пакеты: Компактные 7-байтовые структуры данных.

Технический стек инпута:
Код:
Expand Collapse Copy
Cursor movement: INPUT_MOUSE + MOUSEEVENTF_MOVE
Left click: INPUT_MOUSE + MOUSEEVENTF_LEFTDOWN / UP
API: SendInput

Автор юзает SendInput, что в реалиях Vanguard — верная смерть для аккаунта. Античит прекрасно видит флаг LLMHF_INJECTED и анализирует стек вызовов. Чтобы это жило, нужно либо переходить на драйвер (KMDF), либо использовать железо вроде KMBox или Arduino с хост-шилдом.

В целом, разделение через пайпы — это здравая мысль для модульности, но использование BitBlt и SendInput делает проект чисто учебным. Для серьезного мейна придется переписывать захват на что-то более шустрое и чистить инпут от флагов синтетики.

Кто-нибудь пробовал прокидывать данные через пайпы в драйверный инжектор, или флагает по хендлам канала?
 
Назад
Сверху Снизу