-
Автор темы
- #1
Не видел я на форме гайдов по этой игре, поэтому расскажу вам обо всем понемногу. Как вы знаете, Валорант использует 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!
Я использую OpenCV библиотеку. Её нужно ставить отдельно, думаю, вы справитесь. Это не так уж и сложно.
Про такие функции, как aimbot, trigger и rcs, я не буду рассказывать. Можете придумать способы реализации сами, а можете найти в интернете. Учтите, что работать они должны именно через найденные пиксели!
Плюсы:
Для создания 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!
- 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); }
- 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); }
- 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;
}
диапазон цветов в валоранте:
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, я не буду рассказывать. Можете придумать способы реализации сами, а можете найти в интернете. Учтите, что работать они должны именно через найденные пиксели!
Плюсы:
- Простота
- Безопасность (Относительно)
- Точность
- Скорость