Вопрос Internal bhop CS2

Начинающий
Начинающий
Статус
Онлайн
Регистрация
6 Апр 2022
Сообщения
6
Реакции
0
Почему не работает данный бхоп? оффсеты вроде актуальные,но не прыгает.

C++:
Expand Collapse Copy
#include <Windows.h>
#include <cstdint>
#include <thread>

namespace Offsets
{
    constexpr std::ptrdiff_t dwLocalPlayerPawn = 0x1BDBB10;
    constexpr std::ptrdiff_t m_fFlags = 0x3F8;
    constexpr std::ptrdiff_t dwForceJump = 0x1730530;
}

class Memory
{
public:
    static uintptr_t GetClient()
    {
        static uintptr_t client = reinterpret_cast<uintptr_t>(GetModuleHandleA("client.dll"));
        return client;
    }

    template<typename T>
    static T Read(uintptr_t address)
    {
        if (!IsValidPtr(address)) return T();
        return *reinterpret_cast<T*>(address);
    }

    template<typename T>
    static void Write(uintptr_t address, T value)
    {
        if (!IsValidPtr(address)) return;

        DWORD oldProtect;
        if (VirtualProtect(reinterpret_cast<LPVOID>(address), sizeof(T), PAGE_READWRITE, &oldProtect)) {
            *reinterpret_cast<T*>(address) = value;
            VirtualProtect(reinterpret_cast<LPVOID>(address), sizeof(T), oldProtect, &oldProtect);
        }
    }

private:
    static bool IsValidPtr(uintptr_t ptr)
    {
        if (!ptr) return false;
        MEMORY_BASIC_INFORMATION mbi;
        if (!VirtualQuery(reinterpret_cast<LPCVOID>(ptr), &mbi, sizeof(mbi)))
            return false;

        return (mbi.Protect & (PAGE_READWRITE | PAGE_READONLY | PAGE_EXECUTE_READ | PAGE_EXECUTE_READWRITE));
    }
};

void BHopThread()
{
    // Ждем загрузки клиента
    int attempts = 0;
    while (!Memory::GetClient() && attempts < 30) {
        std::this_thread::sleep_for(std::chrono::seconds(1));
        attempts++;
    }

    if (!Memory::GetClient()) {
        return; // Не нашли client.dll
    }

    while (true)
    {
        std::this_thread::sleep_for(std::chrono::milliseconds(2));

        // Выход по END
        if (GetAsyncKeyState(VK_END) & 1) break;

        // BHop по SPACE
        if (GetAsyncKeyState(VK_SPACE) & 0x8000)
        {
            uintptr_t localPlayer = Memory::Read<uintptr_t>(Memory::GetClient() + Offsets::dwLocalPlayerPawn);
            if (!localPlayer) continue;

            int flags = Memory::Read<int>(localPlayer + Offsets::m_fFlags);

            // Проверяем разные возможные значения флага "на земле"
            bool onGround = (flags == 257 || flags == 263 || flags == 65665 || flags == 65667);

            if (onGround)
            {
                Memory::Write<uint32_t>(Memory::GetClient() + Offsets::dwForceJump, 65537); // Прыжок
                std::this_thread::sleep_for(std::chrono::milliseconds(5));
                Memory::Write<uint32_t>(Memory::GetClient() + Offsets::dwForceJump, 256);   // Отпускаем
            }
        }

        // Небольшая пауза чтобы не грузить процессор
        std::this_thread::sleep_for(std::chrono::milliseconds(1));
    }
}

DWORD WINAPI BHopMain(LPVOID lpParam)
{
    BHopThread();
    return 0;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID lpReserved)
{
    if (reason == DLL_PROCESS_ATTACH)
    {
        DisableThreadLibraryCalls(hModule);

        // Создаем поток правильно
        HANDLE hThread = CreateThread(nullptr, 0, BHopMain, nullptr, 0, nullptr);
        if (hThread) {
            CloseHandle(hThread);
        }
    }
    return TRUE;
}
 
Почему не работает данный бхоп? оффсеты вроде актуальные,но не прыгает.

C++:
Expand Collapse Copy
#include <Windows.h>
#include <cstdint>
#include <thread>

namespace Offsets
{
    constexpr std::ptrdiff_t dwLocalPlayerPawn = 0x1BDBB10;
    constexpr std::ptrdiff_t m_fFlags = 0x3F8;
    constexpr std::ptrdiff_t dwForceJump = 0x1730530;
}

class Memory
{
public:
    static uintptr_t GetClient()
    {
        static uintptr_t client = reinterpret_cast<uintptr_t>(GetModuleHandleA("client.dll"));
        return client;
    }

    template<typename T>
    static T Read(uintptr_t address)
    {
        if (!IsValidPtr(address)) return T();
        return *reinterpret_cast<T*>(address);
    }

    template<typename T>
    static void Write(uintptr_t address, T value)
    {
        if (!IsValidPtr(address)) return;

        DWORD oldProtect;
        if (VirtualProtect(reinterpret_cast<LPVOID>(address), sizeof(T), PAGE_READWRITE, &oldProtect)) {
            *reinterpret_cast<T*>(address) = value;
            VirtualProtect(reinterpret_cast<LPVOID>(address), sizeof(T), oldProtect, &oldProtect);
        }
    }

private:
    static bool IsValidPtr(uintptr_t ptr)
    {
        if (!ptr) return false;
        MEMORY_BASIC_INFORMATION mbi;
        if (!VirtualQuery(reinterpret_cast<LPCVOID>(ptr), &mbi, sizeof(mbi)))
            return false;

        return (mbi.Protect & (PAGE_READWRITE | PAGE_READONLY | PAGE_EXECUTE_READ | PAGE_EXECUTE_READWRITE));
    }
};

void BHopThread()
{
    // Ждем загрузки клиента
    int attempts = 0;
    while (!Memory::GetClient() && attempts < 30) {
        std::this_thread::sleep_for(std::chrono::seconds(1));
        attempts++;
    }

    if (!Memory::GetClient()) {
        return; // Не нашли client.dll
    }

    while (true)
    {
        std::this_thread::sleep_for(std::chrono::milliseconds(2));

        // Выход по END
        if (GetAsyncKeyState(VK_END) & 1) break;

        // BHop по SPACE
        if (GetAsyncKeyState(VK_SPACE) & 0x8000)
        {
            uintptr_t localPlayer = Memory::Read<uintptr_t>(Memory::GetClient() + Offsets::dwLocalPlayerPawn);
            if (!localPlayer) continue;

            int flags = Memory::Read<int>(localPlayer + Offsets::m_fFlags);

            // Проверяем разные возможные значения флага "на земле"
            bool onGround = (flags == 257 || flags == 263 || flags == 65665 || flags == 65667);

            if (onGround)
            {
                Memory::Write<uint32_t>(Memory::GetClient() + Offsets::dwForceJump, 65537); // Прыжок
                std::this_thread::sleep_for(std::chrono::milliseconds(5));
                Memory::Write<uint32_t>(Memory::GetClient() + Offsets::dwForceJump, 256);   // Отпускаем
            }
        }

        // Небольшая пауза чтобы не грузить процессор
        std::this_thread::sleep_for(std::chrono::milliseconds(1));
    }
}

DWORD WINAPI BHopMain(LPVOID lpParam)
{
    BHopThread();
    return 0;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID lpReserved)
{
    if (reason == DLL_PROCESS_ATTACH)
    {
        DisableThreadLibraryCalls(hModule);

        // Создаем поток правильно
        HANDLE hThread = CreateThread(nullptr, 0, BHopMain, nullptr, 0, nullptr);
        if (hThread) {
            CloseHandle(hThread);
        }
    }
    return TRUE;
}
с новой обновой они все сместили теперь нужно искать другие способы для екстернал читов, интернал та же проблема
 
Почему не работает данный бхоп? оффсеты вроде актуальные,но не прыгает.

C++:
Expand Collapse Copy
#include <Windows.h>
#include <cstdint>
#include <thread>

namespace Offsets
{
    constexpr std::ptrdiff_t dwLocalPlayerPawn = 0x1BDBB10;
    constexpr std::ptrdiff_t m_fFlags = 0x3F8;
    constexpr std::ptrdiff_t dwForceJump = 0x1730530;
}

class Memory
{
public:
    static uintptr_t GetClient()
    {
        static uintptr_t client = reinterpret_cast<uintptr_t>(GetModuleHandleA("client.dll"));
        return client;
    }

    template<typename T>
    static T Read(uintptr_t address)
    {
        if (!IsValidPtr(address)) return T();
        return *reinterpret_cast<T*>(address);
    }

    template<typename T>
    static void Write(uintptr_t address, T value)
    {
        if (!IsValidPtr(address)) return;

        DWORD oldProtect;
        if (VirtualProtect(reinterpret_cast<LPVOID>(address), sizeof(T), PAGE_READWRITE, &oldProtect)) {
            *reinterpret_cast<T*>(address) = value;
            VirtualProtect(reinterpret_cast<LPVOID>(address), sizeof(T), oldProtect, &oldProtect);
        }
    }

private:
    static bool IsValidPtr(uintptr_t ptr)
    {
        if (!ptr) return false;
        MEMORY_BASIC_INFORMATION mbi;
        if (!VirtualQuery(reinterpret_cast<LPCVOID>(ptr), &mbi, sizeof(mbi)))
            return false;

        return (mbi.Protect & (PAGE_READWRITE | PAGE_READONLY | PAGE_EXECUTE_READ | PAGE_EXECUTE_READWRITE));
    }
};

void BHopThread()
{
    // Ждем загрузки клиента
    int attempts = 0;
    while (!Memory::GetClient() && attempts < 30) {
        std::this_thread::sleep_for(std::chrono::seconds(1));
        attempts++;
    }

    if (!Memory::GetClient()) {
        return; // Не нашли client.dll
    }

    while (true)
    {
        std::this_thread::sleep_for(std::chrono::milliseconds(2));

        // Выход по END
        if (GetAsyncKeyState(VK_END) & 1) break;

        // BHop по SPACE
        if (GetAsyncKeyState(VK_SPACE) & 0x8000)
        {
            uintptr_t localPlayer = Memory::Read<uintptr_t>(Memory::GetClient() + Offsets::dwLocalPlayerPawn);
            if (!localPlayer) continue;

            int flags = Memory::Read<int>(localPlayer + Offsets::m_fFlags);

            // Проверяем разные возможные значения флага "на земле"
            bool onGround = (flags == 257 || flags == 263 || flags == 65665 || flags == 65667);

            if (onGround)
            {
                Memory::Write<uint32_t>(Memory::GetClient() + Offsets::dwForceJump, 65537); // Прыжок
                std::this_thread::sleep_for(std::chrono::milliseconds(5));
                Memory::Write<uint32_t>(Memory::GetClient() + Offsets::dwForceJump, 256);   // Отпускаем
            }
        }

        // Небольшая пауза чтобы не грузить процессор
        std::this_thread::sleep_for(std::chrono::milliseconds(1));
    }
}

DWORD WINAPI BHopMain(LPVOID lpParam)
{
    BHopThread();
    return 0;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID lpReserved)
{
    if (reason == DLL_PROCESS_ATTACH)
    {
        DisableThreadLibraryCalls(hModule);

        // Создаем поток правильно
        HANDLE hThread = CreateThread(nullptr, 0, BHopMain, nullptr, 0, nullptr);
        if (hThread) {
            CloseHandle(hThread);
        }
    }
    return TRUE;
}
там оч много сместили всего
Я уже решил проблему и сделал,вопрос лишь в том какой инжектор лучше использовать,чтобы не моментально отлетать
face injector?
 
Через Createmove все делать и все.
extremeinjector и прыгай как умалишённый
1760699235029.png
 
А че ваще в чем разница Createmove и мемори? типо с первым детектить будет реже?
крейтмув идеально в тик вызывается и ты можешь нормально сделать нажатие пробела через usercmd, посмотри как в той же асфуксии сделано
 
но это же детект...
бан вгетаешь из-за использования дерьма который меняет состояние кнопки/вьюванглс (из-за проверки целостности данных команд клиента - сервер)
 
Назад
Сверху Снизу