- Статус
- Оффлайн
- Регистрация
- 13 Фев 2026
- Сообщения
- 606
- Реакции
- 16
Влетаем в техничку по Valorant: разбор архитектуры пиксельного аима и триггербота на базе OpenCV.
Нашел любопытный концепт реализации внешнего софта, где автор (кодер из неигровой индустрии) решил попрактиковаться в обходе античитов через разделение логики и инпута. Схема классическая, но с парой интересных моментов по части обработки кадров.
Архитектура детекта и обработки
Инпут и Named Pipes
Самое интересное здесь — разделение на два процесса для мимикрии под системный софт:
Технический стек инпута:
В целом, разделение через пайпы — это здравая мысль для модульности, но использование BitBlt и SendInput делает проект чисто учебным. Для серьезного мейна придется переписывать захват на что-то более шустрое и чистить инпут от флагов синтетики.
Кто-нибудь пробовал прокидывать данные через пайпы в драйверный инжектор, или флагает по хендлам канала?
Нашел любопытный концепт реализации внешнего софта, где автор (кодер из неигровой индустрии) решил попрактиковаться в обходе античитов через разделение логики и инпута. Схема классическая, но с парой интересных моментов по части обработки кадров.
Архитектура детекта и обработки
- Захват экрана: Юзается WinAPI и BitBlt. Метод старый как мир, для Валоранта — решение спорное из-за производительности и детектов оверлеев, но как база для экспериментов сойдет.
- Обработка через OpenCV:
- Выделение ROI (область интереса) в центре экрана.
- Фильтрация цветов в BGR пространстве с заданным допуском (tolerance).
- Морфологические операции для очистки маски: поиск контуров (findContours), закрытие дырок в масках и фильтрация шумов.
- Детект пушек через шаблонное соответствие (cv::matchTemplate) на разных скейлах.
- Логика триггера: Хеуристика попадания в перекрестие реализована через PixelData::is_in_cross().
Инпут и Named Pipes
Самое интересное здесь — разделение на два процесса для мимикрии под системный софт:
- Клиент (lghub.exe): Маскируется под софт Logitech. Занимается захватом, анализом картинки и принятием решения о выстреле или доводке.
- Сервер (server.exe): Принимает команды от клиента через именованный канал (Named Pipe) по адресу \\.\pipe\pipe18**20.
- Пакеты: Компактные 7-байтовые структуры данных.
Технический стек инпута:
Код:
Cursor movement: INPUT_MOUSE + MOUSEEVENTF_MOVE
Left click: INPUT_MOUSE + MOUSEEVENTF_LEFTDOWN / UP
API: SendInput
Автор юзает SendInput, что в реалиях Vanguard — верная смерть для аккаунта. Античит прекрасно видит флаг LLMHF_INJECTED и анализирует стек вызовов. Чтобы это жило, нужно либо переходить на драйвер (KMDF), либо использовать железо вроде KMBox или Arduino с хост-шилдом.
В целом, разделение через пайпы — это здравая мысль для модульности, но использование BitBlt и SendInput делает проект чисто учебным. Для серьезного мейна придется переписывать захват на что-то более шустрое и чистить инпут от флагов синтетики.
Кто-нибудь пробовал прокидывать данные через пайпы в драйверный инжектор, или флагает по хендлам канала?