Вопрос Проблема с FOV changer C++

Новичок
Статус
Оффлайн
Регистрация
18 Авг 2024
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Всем здравствуйте! У меня возникла проблема с FOV chager для cs2

Чит инжектиться,меню появляется но при попытке включить чекбокс "Enable fov changer" игра вылетает

Использовал хук : ImGui-DirectX-11-Kiero-Hook



main.cpp:
#include "includes.h"
using namespace CBasePlayerController;
using namespace offsets::client_dll;

extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

Present oPresent;
HWND window = NULL;
WNDPROC oWndProc;
ID3D11Device* pDevice = NULL;
ID3D11DeviceContext* pContext = NULL;
ID3D11RenderTargetView* mainRenderTargetView;


DWORD BaseAddress;
int fov = 90;
bool fovchanger = false;

void InitImGui()
{
    ImGui::CreateContext();
    ImGuiIO& io = ImGui::GetIO();
    io.ConfigFlags = ImGuiConfigFlags_NoMouseCursorChange;
    ImGui_ImplWin32_Init(window);
    ImGui_ImplDX11_Init(pDevice, pContext);
}

LRESULT __stdcall WndProc(const HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {

    if (true && ImGui_ImplWin32_WndProcHandler(hWnd, uMsg, wParam, lParam))
        return true;

    return CallWindowProc(oWndProc, hWnd, uMsg, wParam, lParam);
}

bool init = false;
HRESULT __stdcall hkPresent(IDXGISwapChain* pSwapChain, UINT SyncInterval, UINT Flags)
{
    if (!init)
    {
        if (SUCCEEDED(pSwapChain->GetDevice(__uuidof(ID3D11Device), (void**)&pDevice)))
        {
            pDevice->GetImmediateContext(&pContext);
            DXGI_SWAP_CHAIN_DESC sd;
            pSwapChain->GetDesc(&sd);
            window = sd.OutputWindow;
            ID3D11Texture2D* pBackBuffer;
            pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&pBackBuffer);
            pDevice->CreateRenderTargetView(pBackBuffer, NULL, &mainRenderTargetView);
            pBackBuffer->Release();
            oWndProc = (WNDPROC)SetWindowLongPtr(window, GWLP_WNDPROC, (LONG_PTR)WndProc);
            InitImGui();

            // Получение base address client.dll
            BaseAddress = (DWORD)GetModuleHandle(xorstr("client.dll"));

            init = true;
        }

        else
            return oPresent(pSwapChain, SyncInterval, Flags);
    }

    ImGui_ImplDX11_NewFrame();
    ImGui_ImplWin32_NewFrame();
    ImGui::NewFrame();

    ImGui::Begin("ImGui Window");


    ImGui::SliderInt("FOV", &fov, 60, 120);

    ImGui::Checkbox("Enable FOV Changer", &fovchanger);

    ImGui::End();

    if (fovchanger)
    {
        DWORD LocalPlayerControler = [I](DWORD[/I])(BaseAddress + dwLocalPlayerController);
        if (LocalPlayer)
        {
            [I](int[/I])(LocalPlayerControler + m_iDesiredFOV) = fov;
        }
    }

    ImGui::Render();

    pContext->OMSetRenderTargets(1, &mainRenderTargetView, NULL);
    ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData());
    return oPresent(pSwapChain, SyncInterval, Flags);
}

DWORD WINAPI MainThread(LPVOID lpReserved)
{
    bool init_hook = false;
    do
    {
        if (kiero::init(kiero::RenderType::D3D11) == kiero::Status::Success)
        {
            kiero::bind(8, (void**)&oPresent, hkPresent);
            init_hook = true;
        }
    } while (!init_hook);
    return TRUE;
}

BOOL WINAPI DllMain(HMODULE hMod, DWORD dwReason, LPVOID lpReserved)
{
    switch (dwReason)
    {
    case DLL_PROCESS_ATTACH:
        DisableThreadLibraryCalls(hMod);
        CreateThread(nullptr, 0, MainThread, hMod, 0, nullptr);
        break;
    case DLL_PROCESS_DETACH:
        kiero::shutdown();
        break;
    }
    return TRUE;
}
 
Начинающий
Статус
Оффлайн
Регистрация
1 Янв 2020
Сообщения
69
Реакции[?]
3
Поинты[?]
2K
Всем здравствуйте! У меня возникла проблема с FOV chager для cs2

Чит инжектиться,меню появляется но при попытке включить чекбокс "Enable fov changer" игра вылетает

Использовал хук : ImGui-DirectX-11-Kiero-Hook



main.cpp:
#include "includes.h"
using namespace CBasePlayerController;
using namespace offsets::client_dll;

extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

Present oPresent;
HWND window = NULL;
WNDPROC oWndProc;
ID3D11Device* pDevice = NULL;
ID3D11DeviceContext* pContext = NULL;
ID3D11RenderTargetView* mainRenderTargetView;


DWORD BaseAddress;
int fov = 90;
bool fovchanger = false;

void InitImGui()
{
    ImGui::CreateContext();
    ImGuiIO& io = ImGui::GetIO();
    io.ConfigFlags = ImGuiConfigFlags_NoMouseCursorChange;
    ImGui_ImplWin32_Init(window);
    ImGui_ImplDX11_Init(pDevice, pContext);
}

LRESULT __stdcall WndProc(const HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {

    if (true && ImGui_ImplWin32_WndProcHandler(hWnd, uMsg, wParam, lParam))
        return true;

    return CallWindowProc(oWndProc, hWnd, uMsg, wParam, lParam);
}

bool init = false;
HRESULT __stdcall hkPresent(IDXGISwapChain* pSwapChain, UINT SyncInterval, UINT Flags)
{
    if (!init)
    {
        if (SUCCEEDED(pSwapChain->GetDevice(__uuidof(ID3D11Device), (void**)&pDevice)))
        {
            pDevice->GetImmediateContext(&pContext);
            DXGI_SWAP_CHAIN_DESC sd;
            pSwapChain->GetDesc(&sd);
            window = sd.OutputWindow;
            ID3D11Texture2D* pBackBuffer;
            pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&pBackBuffer);
            pDevice->CreateRenderTargetView(pBackBuffer, NULL, &mainRenderTargetView);
            pBackBuffer->Release();
            oWndProc = (WNDPROC)SetWindowLongPtr(window, GWLP_WNDPROC, (LONG_PTR)WndProc);
            InitImGui();

            // Получение base address client.dll
            BaseAddress = (DWORD)GetModuleHandle(xorstr("client.dll"));

            init = true;
        }

        else
            return oPresent(pSwapChain, SyncInterval, Flags);
    }

    ImGui_ImplDX11_NewFrame();
    ImGui_ImplWin32_NewFrame();
    ImGui::NewFrame();

    ImGui::Begin("ImGui Window");


    ImGui::SliderInt("FOV", &fov, 60, 120);

    ImGui::Checkbox("Enable FOV Changer", &fovchanger);

    ImGui::End();

    if (fovchanger)
    {
        DWORD LocalPlayerControler = [I](DWORD[/I])(BaseAddress + dwLocalPlayerController);
        if (LocalPlayer)
        {
            [I](int[/I])(LocalPlayerControler + m_iDesiredFOV) = fov;
        }
    }

    ImGui::Render();

    pContext->OMSetRenderTargets(1, &mainRenderTargetView, NULL);
    ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData());
    return oPresent(pSwapChain, SyncInterval, Flags);
}

DWORD WINAPI MainThread(LPVOID lpReserved)
{
    bool init_hook = false;
    do
    {
        if (kiero::init(kiero::RenderType::D3D11) == kiero::Status::Success)
        {
            kiero::bind(8, (void**)&oPresent, hkPresent);
            init_hook = true;
        }
    } while (!init_hook);
    return TRUE;
}

BOOL WINAPI DllMain(HMODULE hMod, DWORD dwReason, LPVOID lpReserved)
{
    switch (dwReason)
    {
    case DLL_PROCESS_ATTACH:
        DisableThreadLibraryCalls(hMod);
        CreateThread(nullptr, 0, MainThread, hMod, 0, nullptr);
        break;
    case DLL_PROCESS_DETACH:
        kiero::shutdown();
        break;
    }
    return TRUE;
}
тебе надо в начале к пешке игрока прибавить и прочитать оффсет для m_pCameraServices, а к полученому уже потом m_iFov
Типо такого:

C++:
    if (config.fovchanger) {
        std::cout << "123" << std::endl;
        uintptr_t localPLayerPawn = *(uintptr_t*)(ClientBase + dwLocalPlayerPawn);
        uintptr_t cameraService = *(uintptr_t*)(localPLayerPawn + m_pCameraServices);
        uint32_t current_fov = *(uint32_t*)(cameraService + m_iFOV);
        bool isScoped = *(bool*)(localPLayerPawn + m_bIsScoped);

        if (!isScoped && current_fov != config.fovValue) {
            *(uint32_t*)(cameraService + m_iFOV) = config.fovValue;
        }
    }
 
HvH Legend
Пользователь
Статус
Оффлайн
Регистрация
23 Окт 2022
Сообщения
331
Реакции[?]
75
Поинты[?]
59K
Траст сказал - да пошёл ты нахуй.
main.cpp:
DWORD BaseAddress;
Ты по туторам дарвина делаешь чит?) :roflanEbalo:
 
Последнее редактирование:
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,379
Реакции[?]
650
Поинты[?]
10K
Траст сказал - да пошёл ты нахуй.
main.cpp:
DWORD BaseAddress;
Ты по туторам дарвина делаешь чит?) :roflanEbalo:
Ну чел рилл Дарвин, делает гайд как песочницей пользоваться как делать невидимую папку, он рилл недооцененный гений трай кодинга
 
Сверху Снизу