нужна помощь, для инуи нужен dll который будет блокировать отправку скриншота моего пк, чтото в дипсике поепланил, вышел какойто код я скомпилировал его под x64, process hacker 2 не инжектит в csgo ( должен выйти мессаджбокс а его нет ) чд ваще мб гдето можно код подправить
если ктото сможет помочь буду очень рад (если ктот может за 4 доллара сделать из него норм код который будет инжектится напишите в тг @celybs)
Код:
// 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)