Вопрос Screenshot blocker для csgo

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
25 Янв 2020
Сообщения
41
Реакции
1
нужна помощь, для инуи нужен dll который будет блокировать отправку скриншота моего пк, чтото в дипсике поепланил, вышел какойто код я скомпилировал его под x64, process hacker 2 не инжектит в csgo ( должен выйти мессаджбокс а его нет ) чд ваще мб гдето можно код подправить

Код:
Expand Collapse Copy
// dllmain.cpp
#include "pch.h"  // Добавлен precompiled header
#include <windows.h>
#include <TlHelp32.h>
#include <Psapi.h>
#include <string>
#include <algorithm>  // Добавлено для std::transform
#include <atlstr.h>  // Для CString (опционально)

#pragma comment(lib, "user32.lib")
#pragma comment(lib, "psapi.lib")

// Глобальные переменные
HHOOK g_hHook = NULL;
HWND g_hCsgoWindow = NULL;
HMODULE g_hModule = NULL;

bool IsRealCsgoProcess(DWORD pid) {
    HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid);
    if (!hProcess) return false;

    WCHAR szProcessPath[MAX_PATH] = { 0 };
    if (GetModuleFileNameExW(hProcess, NULL, szProcessPath, MAX_PATH)) {
        std::wstring path(szProcessPath);
        CloseHandle(hProcess);

        // Приводим к нижнему регистру для сравнения
        std::transform(path.begin(), path.end(), path.begin(), ::towlower);
        return (path.find(L"\\csgo\\csgo.exe") != std::wstring::npos ||
            path.find(L"\\steamapps\\common\\counter-strike global offensive\\csgo\\csgo.exe") != std::wstring::npos);
    }
    CloseHandle(hProcess);
    return false;
}

DWORD GetCsgoProcessId() {
    PROCESSENTRY32 pe;
    pe.dwSize = sizeof(PROCESSENTRY32);

    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hSnapshot == INVALID_HANDLE_VALUE) return 0;

    DWORD pid = 0;
    if (Process32First(hSnapshot, &pe)) {
        do {
            if (_wcsicmp(pe.szExeFile, L"csgo.exe") == 0) {
                if (IsRealCsgoProcess(pe.th32ProcessID)) {
                    pid = pe.th32ProcessID;
                    break;
                }
            }
        } while (Process32Next(hSnapshot, &pe));
    }
    CloseHandle(hSnapshot);
    return pid;
}

HWND FindCsgoMainWindow(DWORD pid) {
    struct WindowData {
        DWORD pid;
        HWND hwnd;
    } windowData = { pid, NULL };

    EnumWindows([](HWND hwnd, LPARAM lParam) -> BOOL {
        WindowData* data = reinterpret_cast<WindowData*>(lParam);
        DWORD windowPid;
        GetWindowThreadProcessId(hwnd, &windowPid);

        if (windowPid == data->pid && IsWindowVisible(hwnd)) {
            char className[256];
            GetClassNameA(hwnd, className, sizeof(className));

            if (strcmp(className, "Valve001") == 0) {
                data->hwnd = hwnd;
                return FALSE;
            }
        }
        return TRUE;
        }, reinterpret_cast<LPARAM>(&windowData));

    return windowData.hwnd;
}

LRESULT CALLBACK CallWndProc(int nCode, WPARAM wParam, LPARAM lParam) {
    if (nCode >= HC_ACTION) {
        CWPSTRUCT* pMsg = reinterpret_cast<CWPSTRUCT*>(lParam);

        if ((pMsg->message == WM_PRINT || pMsg->message == WM_PRINTCLIENT) &&
            pMsg->hwnd == g_hCsgoWindow) {
            return 0;
        }
    }
    return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}

void InstallHook() {
    DWORD pid = GetCsgoProcessId();
    if (!pid) {
        OutputDebugStringA("[CSGO Screenshot Blocker] Failed to find CS:GO process");
        return;
    }

    g_hCsgoWindow = FindCsgoMainWindow(pid);
    if (!g_hCsgoWindow) {
        OutputDebugStringA("[CSGO Screenshot Blocker] Failed to find CS:GO window");
        return;
    }

    DWORD threadId = GetWindowThreadProcessId(g_hCsgoWindow, nullptr);
    if (threadId) {
        g_hHook = SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, g_hModule, threadId);
        if (g_hHook) {
            OutputDebugStringA("[CSGO Screenshot Blocker] Hook installed successfully");
        }
        else {
            OutputDebugStringA("[CSGO Screenshot Blocker] Failed to install hook");
        }
    }
}

void RemoveHook() {
    if (g_hHook) {
        UnhookWindowsHookEx(g_hHook);
        g_hHook = NULL;
        OutputDebugStringA("[CSGO Screenshot Blocker] Hook removed");
    }
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
    switch (ul_reason_for_call) {
    case DLL_PROCESS_ATTACH:
        g_hModule = hModule;
        DisableThreadLibraryCalls(hModule);
        InstallHook();
        break;

    case DLL_PROCESS_DETACH:
        RemoveHook();
        break;
    }
    return TRUE;
}


если ктото сможет помочь буду очень рад (если ктот может за 4 доллара сделать из него норм код который будет инжектится напишите в тг @celybs)
 
Если админ не получит скриншот, или получит просто черный экран или что-либо другое - ты отправишься моментально в бан.
Так-же INUI детектит инжектирование дллки, либо писать байпасс и реверсить их помойный АЧ, либо использовать внешний рендеринг не относящийся к экрану. (Условный вебрадар на локалхосте с телефона к примеру)

Но судя по использованию дипсика, бро я тебя умоляю не делай ничего, вбанишься потом будешь на югейме темы новые создавать и спуфферы искать.
 
Назад
Сверху Снизу