Новичок
Статус
Оффлайн
Регистрация
24 Май 2023
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Не видел я на форме гайдов по этой игре, поэтому расскажу вам обо всем понемногу. Как вы знаете, Валорант использует VG (Vanguard) античит, и работает он очень даже хорошо. Можете сразу забыть о Internal читах, так как любое взаимодействие с памятью игры приводит к 100% бану. Баны же в Валоранте бывают разные, но за использование читов вам скорее всего прилетит бан по железу, сначала на 90 дней, а потом и вовсе бан навсегда. Вы подумаете, но так и External софты не работают, это почти верно. VG быстро найдет ваше приложение, которое читает память Валоранта, и забанит вас, поэтому создание wh для Валоранта невозможно без бана. Однако мы все еще можем сделать aimbot! Аимбот это наш единственный способ получить преимущество. Уже опытные пастеры думают, что можно написать драйвер, и будут почти правы, но как я уже говорил, VG - хороший античит, и вы получите бан.

Для создания Aimbota прибегают к интересным методам, например, пишут AI (ИИ) или делают так называемый pixelbot aka colorbot, который анализирует пиксели на экране. Однако, как я и говорил, если вы запустите у себя на ПК подобный софт, то рано или поздно получите бан. Тут на помощь приходит 2 ПК или мини-ПК, они же Arduino. Зачем? Что же мы будем прятать наш аимбот в так называемом Arduino host shield. Шилд позволяет вашей Arduino-плате полноценно работать с USB-устройствами как Host-устройство. То есть, через этот шилд к Arduino можно подключить компьютерную USB-клавиатуру, мышь, джойстик, веб-камеру, MIDI-устройства и т.д. Как вы поняли, мы будем эмулировать софт как мышь. Главное, чтобы поток ввода шел как бы из нашей мыши. Однако заметьте, что есть способы обнаружить фейк-мышь, и может VG это умеет, но не может с этим ничего поделать, так как платами Arduino пользуются не только читеры. Вся ваша безопасность будет зависеть от того, как вы спрячете ваш софт. Для установок с двумя ПК очень мало векторов обнаружения за пределами методов ввода с помощью мыши/клавиатуры. Скорее всего, вас забанят вручную, если вы будете палиться. (Тут вы сами должны найти подходящий вам способ, гугл в помощь).
P.S. Обычно используют Arduino Leonardo, но если захотите купить под софт, погуглите актуальность этой платы. Тем не менее, я очень подозреваю, что в скором времени начнется целенаправленная волна банов в отношении пользователей arduino hostshield.

Давайте, я расскажу про colorbot, ибо 80% читеров в Валоранте используют именно его. Работает он в 3 этапа:


!Весь код, который я дам, не предназначен для читерства. Используйте его только в обучающих (себя) целях, например, на видео в YouTube!

  1. screengrab Для захвата изображения можете использовать:
  • bitblt
  • dx11
  • nvidia (только для видеокарт Nvidia)
    capture_screen:
    void capture_screen() {
        int width = GetSystemMetrics(SM_CXSCREEN);
        int height = GetSystemMetrics(SM_CYSCREEN);
    
        HDC hDC = GetDC(NULL);
        HDC hCaptureDC = CreateCompatibleDC(hDC);
        HBITMAP hCaptureBitmap = CreateCompatibleBitmap(hDC, width, height);
        SelectObject(hCaptureDC, hCaptureBitmap);
        BitBlt(hCaptureDC, 0, 0, width, height, hDC, 0, 0, SRCCOPY);
    
        BITMAPINFO bmi = { 0 };
        bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader);
        bmi.bmiHeader.biWidth = width;
        bmi.bmiHeader.biHeight = -height;
        bmi.bmiHeader.biPlanes = 1;
        bmi.bmiHeader.biBitCount = 32;
    
        std::vector<BYTE> pixels(4 * width * height);
        GetDIBits(hCaptureDC, hCaptureBitmap, 0, height, pixels.data(), &bmi, DIB_RGB_COLORS);
    
        modify_bitmap(pixels, width, height);
    
        ReleaseDC(NULL, hDC);
        ReleaseDC(NULL, hCaptureDC);
        DeleteDC(hCaptureDC);
        DeleteObject(hCaptureBitmap);
    
        save_image("screenshot.png", pixels, width, height);
    }
  1. color filter От того, как вы будете фильтровать цвета на экране, зависит точность вашего аимбота. Я же делаю это с сохранением изображения, чтобы вы могли использовать их для лучшего понимания.

    методы для цвета:
    void modify_bitmap(std::vector<BYTE>& pixels, int width, int height) {
        for (int i = 0; i < height * width * 4; i += 4) {
            BYTE blue = pixels[i];
            BYTE green = pixels[i + 1];
            BYTE red = pixels[i + 2];
    
            if (red >= 153 && red <= 255 &&
                green >= 55 && green <= 127 &&
                blue >= 172 && blue <= 255) {
                // Pixel is within the pink range, set it to magenta (255, 0, 255)
                pixels[i] = 255;
                pixels[i + 1] = 0;
                pixels[i + 2] = 255;
            }
            else {
                // Pixel is outside the pink range, set it to black
                pixels[i] = 0;
                pixels[i + 1] = 0;
                pixels[i + 2] = 0;
            }
        }
    }
    
    std::vector<cv::Point> find_magenta_pixels(const std::string& imagePath) {
        cv::Mat image = cv::imread(imagePath, cv::IMREAD_COLOR);
    
        cv::Scalar magentaLower(240, 0, 240);
        cv::Scalar magentaUpper(255, 10, 255);
    
        cv::Mat mask;
        cv::inRange(image, magentaLower, magentaUpper, mask);
    
        std::vector<std::vector<cv::Point>> contours;
        cv::findContours(mask, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);
    
        std::vector<cv::Point> magentaPixels;
        for (const auto& contour : contours) {
            for (const auto& point : contour) {
                magentaPixels.push_back(point);
            }
        }
    
        return magentaPixels;
    }
    
    void save_image(const std::string& filename, const std::vector<BYTE>& pixels, int width, int height) {
        cv::Mat image(height, width, CV_8UC4, const_cast<BYTE*>(pixels.data()));
        cv::imwrite(filename, image);
    }
  2. mouse simulator От этого зависит безопасность. Чем больше движения похожи на движения человека, тем меньше шанс получить бан.

    MoveMouse:
    int getPt(int n1, int n2, float perc)
    {
        return n1 + static_cast<int>((n2 - n1) * perc);
    }
    
    int getRnd(int min, int max) {
        return (rand() % (max - min)) + min;
    }
    
    void MoveGaussian(int targetX, int targetY) {
        POINT pInicial;
        POINT pLastMove = { 0, 0 };
        POINT pMedio1;
        POINT pMedio2;
        POINT pFinal;
    
        // Получение текущих координат мыши
        GetCursorPos(&pInicial);
    
        pFinal.x = targetX;
        pFinal.y = targetY;
    
        if ((pFinal.x >= pInicial.x && pFinal.y >= pInicial.y) || (pFinal.x <= pInicial.x && pFinal.y <= pInicial.y))
        {
            pMedio1.x = pInicial.x + ((pFinal.x - pInicial.x) / getRnd(4, 8));
            pMedio1.y = pInicial.y + ((pFinal.y - pInicial.y) / getRnd(4, 8));
    
            pMedio2.x = pInicial.x + ((pFinal.x - pInicial.x) / getRnd(3, 6));
            pMedio2.y = pInicial.y + ((pFinal.y - pInicial.y) / getRnd(3, 6));
        }
        else if ((pFinal.x >= pInicial.x && pFinal.y <= pInicial.y) || (pFinal.x <= pInicial.x && pFinal.y >= pInicial.y))
        {
            pMedio1.x = pInicial.x + ((pFinal.x - pInicial.x) / getRnd(4, 8));
            pMedio1.y = pInicial.y - ((pInicial.y - pFinal.y) / getRnd(4, 8));
    
            pMedio2.x = pInicial.x + ((pFinal.x - pInicial.x) / getRnd(3, 5));
            pMedio2.y = pInicial.y - ((pInicial.y - pFinal.y) / getRnd(3, 5));
        }
        POINT total = { 0,0 };
    
        for (float i = 0; i < 1.01; i += 0.01)
        {
            int xa = getPt(pInicial.x, pMedio1.x, i);
            int ya = getPt(pInicial.y, pMedio1.y, i);
            int xb = getPt(pMedio1.x, pMedio2.x, i);
            int yb = getPt(pMedio1.y, pMedio2.y, i);
            int xc = getPt(pMedio2.x, pFinal.x, i);
            int yc = getPt(pMedio2.y, pFinal.y, i);
    
            int x = getPt(getPt(xa, xb, i), getPt(xb, xc, i), i);
            int y = getPt(getPt(ya, yb, i), getPt(yb, yc, i), i);
    
            POINT move = { x - pInicial.x, y - pInicial.y };
    
            // Перемещение мыши на указанные координаты
            SetCursorPos(pInicial.x + move.x, pInicial.y + move.y);
    
            // Пауза для плавного перемещения (в миллисекундах)
            Sleep(10);
        }
    
        // Окончательное перемещение мыши на заданные координаты
        SetCursorPos(pFinal.x, pFinal.y);
    }
include и main:
#include <Windows.h>
#include <iostream>
#include <vector>
#include <cmath>

#include <opencv2/opencv.hpp>

int main() {
    int width = GetSystemMetrics(SM_CXSCREEN);
    int height = GetSystemMetrics(SM_CYSCREEN);
    int centerX = width / 2;
    int centerY = height / 2;
    while (true)
    {
        Sleep(4000);
        capture_screen();
        std::vector<cv::Point> magentaPixels = find_magenta_pixels("screenshot.png");

        int closestX = centerX;
        int closestY = centerY;
        double closestDistance = std::numeric_limits<double>::max();

        for (const auto& point : magentaPixels) {
            int x = point.x;
            int y = point.y;
            double distance = std::sqrt(std::pow(x - centerX, 2) + std::pow(y - centerY, 2));
            if (distance < closestDistance) {
                closestDistance = distance;
                closestX = x;
                closestY = y;
            }
        }

        MoveGaussian(closestX, closestY);
        std::cout << closestX << " | " << closestY << "\n";
    }

    return 0;
}
Я использую OpenCV библиотеку. Её нужно ставить отдельно, думаю, вы справитесь. Это не так уж и сложно.
диапазон цветов в валоранте:
bool isEnemy(unsigned short red, unsigned short green, unsigned short blue)
{
    if (ColorIndex < 1) { // Red
        if (red >= 220 && red <= 255 &&
            green >= 25 && green <= 71 &&
            blue >= 25 && blue <= 69)
            return true;       
    }
    else if (ColorIndex == 1) { //purple
        if (red >= 153 && red <= 255 &&
            green >= 55 && green <= 127 &&
            blue >= 172 && blue <= 255)
            return true;
    }
    else if (ColorIndex >= 2) { // yellow
        if (red >= 250 && red <= 255 &&
            green >= 250 && green <= 255 &&
            blue >= 27 && blue <= 104)
            return true;
    }
    return false;
}
Пожалуйста, авторизуйтесь для просмотра ссылки.
- То, как должен выглядеть фильтр цветов. Хз почему, но фото не могу вставить.

Про такие функции, как aimbot, trigger и rcs, я не буду рассказывать. Можете придумать способы реализации сами, а можете найти в интернете. Учтите, что работать они должны именно через найденные пиксели!

Плюсы:

  • Простота
  • Безопасность (Относительно)
Минусы:
  • Точность
  • Скорость
Ну, на этом все. Можете писать в комментариях, что добавить или что улучшить в гайде и может быть, я не поленюсь. :roflanBuldiga:
 
Начинающий
Статус
Оффлайн
Регистрация
14 Апр 2021
Сообщения
147
Реакции[?]
14
Поинты[?]
2K
Nice thread, but its bullshit you can make visual too and ud. You need boot before vanguard, for example using HYPERVISOR.
 
I Want to Die in New Orleans
Участник
Статус
Оффлайн
Регистрация
10 Окт 2020
Сообщения
514
Реакции[?]
495
Поинты[?]
84K
ну и нахуя нам паста от chatgpt которая для аима в валоранте мувает блять курсор через Get/SetCursorPos xD
юзать CreateCompatibleBitmap для захвата экрана в цикле это тоже ужас (зачем, если есть куда более лучшие методы, такие как захват через DirectX), больше 15 фпса в можешь не ожидать

короче тред бесполезный мусор который рассказывает о каком-то бреде и 90% расписывает ChatGPT

ну впрочем тебя тут винить можно только за то что ты без каких либо знаний решил создать подобный тред в надежде на ChatGPT)

upd: думаю от тебя в этом треде максимум примерно 30%
 
Последнее редактирование:
эксперт в майнкрафт апи
Read Only
Статус
Оффлайн
Регистрация
25 Янв 2023
Сообщения
676
Реакции[?]
284
Поинты[?]
22K
диапазон цветов в валоранте:
bool isEnemy(unsigned short red, unsigned short green, unsigned short blue)
{
    if (ColorIndex < 1) { // Red
        if (red >= 220 && red <= 255 &&
            green >= 25 && green <= 71 &&
            blue >= 25 && blue <= 69)
            return true;     
    }
    else if (ColorIndex == 1) { //purple
        if (red >= 153 && red <= 255 &&
            green >= 55 && green <= 127 &&
            blue >= 172 && blue <= 255)
            return true;
    }
    else if (ColorIndex >= 2) { // yellow
        if (red >= 250 && red <= 255 &&
            green >= 250 && green <= 255 &&
            blue >= 27 && blue <= 104)
            return true;
    }
    return false;
}
Valorant чит's от А до Я (massive skill issue)
 
t.me/shepard
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2019
Сообщения
296
Реакции[?]
94
Поинты[?]
22K
Просто приобретите у меня инвайт в зу красс, где есть великолепный аимбот и колорбот на валорант :da:
 
Сверху Снизу