[RE | CS2| как инжектить чит CS2 без "-insecure"?

w99zzl1

Участник
Автор темы
164
18
Здравствуйте! Скачал библиотеку ImGui, написал там самое простейшее говняное ВХ, собрал в dll, но при попытке заинжектить его - черный экран или вылет. Я знаю, что ImGui уже "не работает" для таких целей, просто это единственный способ учиться писать читы который я нашел. Вот вопрос, если я захочу начать писать читы на продажу, как мне сделать так, чтобы оно могло инжектить? Какие библиотеки использовать и как там написать то же ВХ? Получается, нужно просто скрыть инжект? Надеюсь понятно объяснил)
 

w99zzl1

Участник
Автор темы
164
18
Мануалмап инжекть, кинь код
Получается, вот:


C++:
#include "includes.h"
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;

bool inMenu = false;
bool WallHack = 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();
            init = true;
        }

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

    if (GetAsyncKeyState(VK_INSERT) & 1)
        inMenu = !inMenu;

    if (inMenu)
    {

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

        ImGui::Begin("ImGui Window");
        ImGui::Checkbox("WallHack", &WallHack);
        ImGui::End();

        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;
}
Касаемо инжекта, использую ExLoader, добавив свой "мод"

Это main.cpp с ImGui-DirectX-11-Kiero-Hook-master

Ах да, вх я удалил, было лень обновлять офсеты) но я думаю не страшно...

Как я понимаю, ImGui никто не использует в нормальных читах, так как VAC попросту детектит его. А что тогда используют?
 

random__sorry

Новичок
12
3
Получается, вот:


C++:
#include "includes.h"
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;

bool inMenu = false;
bool WallHack = 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();
            init = true;
        }

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

    if (GetAsyncKeyState(VK_INSERT) & 1)
        inMenu = !inMenu;

    if (inMenu)
    {

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

        ImGui::Begin("ImGui Window");
        ImGui::Checkbox("WallHack", &WallHack);
        ImGui::End();

        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;
}
Касаемо инжекта, использую ExLoader, добавив свой "мод"

Это main.cpp с ImGui-DirectX-11-Kiero-Hook-master

Ах да, вх я удалил, было лень обновлять офсеты) но я думаю не страшно...

Как я понимаю, ImGui никто не использует в нормальных читах, так как VAC попросту детектит его. А что тогда используют?
так менюшки пишут на имгуи как его никто не использует
 

w99zzl1

Участник
Автор темы
164
18
так менюшки пишут на имгуи как его никто не использует
Я слышал, что используют другие библиоетки, так как имгуи детектится, а вот какие - не знаю. Вот я написал менюшку на имгуи, он инжектится только с параметром запуска -insecure который отключает ВАК. Но тогда нет смысла от чита
 

01EG

Известный
Проверенный
793
454
Я слышал, что используют другие библиоетки, так как имгуи детектится, а вот какие - не знаю. Вот я написал менюшку на имгуи, он инжектится только с параметром запуска -insecure который отключает ВАК. Но тогда нет смысла от чита
а каким хуем менюшки стали детектися, я чот этого не понимаю там же визуал ток
 

w99zzl1

Участник
Автор темы
164
18
а каким хуем менюшки стали детектися, я чот этого не понимаю там же визуал ток
Ну просто как еще назвать, инжект такой менюшки вызыввет черный экран либо вылет, помогает только отключение ВАК (через инсекьюре). Как я понимаю, это защита от внедрения, которая даже не в матче, а в общем. Т.е вак видит внерение в игру

Или не вак а что это. Просто не дает запуститс
 

01EG

Известный
Проверенный
793
454
Ну просто как еще назвать, инжект такой менюшки вызыввет черный экран либо вылет, помогает только отключение ВАК (через инсекьюре). Как я понимаю, это защита от внедрения, которая даже не в матче, а в общем. Т.е вак видит внерение в игру

Или не вак а что это. Просто не дает запуститс
просто менюшка никак не трогает память самой кс-ки с чего бы это ваку доебываться к ней? это как оверлей дискорда...
 

Поздняков

Участник
14
58
просто менюшка никак не трогает память самой кс-ки с чего бы это ваку доебываться к ней? это как оверлей дискорда...
имгуи детектиться любым современным античитом

Как я понимаю, ImGui никто не использует в нормальных читах, так как VAC попросту детектит его. А что тогда используют?
античит детектит последовательность байт имгуи, так скажем, сигнатуру. также проверяет загружен ли в процесс imgui.dll,

берешь имгуи, полностью меняешь его сигнатуру, в этом случае тот же eac/vac не задетектит

Получается, вот:


C++:
#include "includes.h"
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;

bool inMenu = false;
bool WallHack = 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();
            init = true;
        }

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

    if (GetAsyncKeyState(VK_INSERT) & 1)
        inMenu = !inMenu;

    if (inMenu)
    {

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

        ImGui::Begin("ImGui Window");
        ImGui::Checkbox("WallHack", &WallHack);
        ImGui::End();

        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;
}
Касаемо инжекта, использую ExLoader, добавив свой "мод"

Это main.cpp с ImGui-DirectX-11-Kiero-Hook-master

Ах да, вх я удалил, было лень обновлять офсеты) но я думаю не страшно...

Как я понимаю, ImGui никто не использует в нормальных читах, так как VAC попросту детектит его. А что тогда используют?
на будущее, если будешь делать вх, используй worldtoscreen
 
Последнее редактирование:
  • Нравится
Реакции: w99zzl1