Files
anit-cheat/Anti-Cheat_Driver/anit_screen_grap.cpp
T
2026-06-23 13:16:44 +08:00

37 lines
1.3 KiB
C++

#include "anit_screen_grap.h"
#include "utils.h"
#include "kernel_function.h"
namespace anit_screen_grap
{
auto GreProtectSpriteContent(HWND hWnd, UINT Flags) -> BOOL
{
typedef BOOL(__fastcall* fn_GreProtectSpriteContent)(LPVOID, HWND, INT, UINT);
static fn_GreProtectSpriteContent _GreProtectSpriteContent = nullptr;
if (!_GreProtectSpriteContent) {
auto version = utils::GetVersion();
if (version.dwBuildNumber == 7601 || version.dwBuildNumber == 7600)
{
auto ker_win32k_base = kernel_function::GetKernelModule("win32k.sys");
auto func_offset = utils::FindSectionsCode(ker_win32k_base, "\xE8\x00\x00\x00\x00\x8B\xF8\x85\xC0\x75\x26\x85\xF6", "x????xxxxxxxx", ".text");
_GreProtectSpriteContent = (fn_GreProtectSpriteContent)((*(long*)(func_offset + 1)) + (func_offset + 5));
}
else
{
auto ker_win32kfull_base = kernel_function::GetKernelModule("win32kfull.sys");
auto func_offset = utils::FindSectionsCode(ker_win32kfull_base, "\xE8\x00\x00\x00\x00\x8B\x00\x85\xC0\x75\x0E\x85\x00\x74\x00\x33\xD2", "x????x?xxxxx?x?xx", ".text");
_GreProtectSpriteContent = (fn_GreProtectSpriteContent)((*(long*)(func_offset + 1)) + (func_offset + 5));
}
}
if (!_GreProtectSpriteContent)
return FALSE;
auto suc = _GreProtectSpriteContent(NULL, hWnd, TRUE, Flags);
return suc;
}
}