R3注入反截图

编写Dll 设置F2键开关反截图

cpp 复制代码
#include "pch.h"
#include <windows.h>

#ifndef WDA_NONE
#define WDA_NONE 0x00000000
#endif
#ifndef WDA_EXCLUDEFROMCAPTURE
#define WDA_EXCLUDEFROMCAPTURE 0x00000011
#endif

HWND g_hWnd = nullptr;
bool g_bAntiCapture = false;   // 当前是否开启反截图

BOOL CALLBACK EnumWndProc(HWND hWnd, LPARAM)
{
    DWORD pid = 0;
    GetWindowThreadProcessId(hWnd, &pid);

    if (pid == GetCurrentProcessId() && IsWindowVisible(hWnd))
    {
        g_hWnd = hWnd;
        return FALSE;
    }
    return TRUE;
}

DWORD WINAPI AntiCaptureThread(LPVOID)
{
    // 等窗口创建
    for (int i = 0; i < 50 && !g_hWnd; i++)
    {
        EnumWindows(EnumWndProc, 0);
        Sleep(100);
    }

    if (!g_hWnd)
    {
        MessageBoxW(NULL, L"未找到目标窗口", L"提示", MB_OK | MB_ICONWARNING);
        return 0;
    }

    bool lastKeyDown = false;

    while (true)
    {
        SHORT keyState = GetAsyncKeyState(VK_F2);
        bool keyDown = (keyState & 0x8000) != 0;

        // F2 从"未按下"到"按下"的瞬间
        if (keyDown && !lastKeyDown)
        {
            g_bAntiCapture = !g_bAntiCapture;

            if (g_bAntiCapture)
            {
                if (SetWindowDisplayAffinity(g_hWnd, WDA_EXCLUDEFROMCAPTURE))
                {
                    MessageBoxW(NULL, L"反截图已开启", L"提示", MB_OK);
                }
                else
                {
                    MessageBoxW(NULL, L"反截图开启失败", L"错误", MB_OK | MB_ICONERROR);
                }
            }
            else
            {
                SetWindowDisplayAffinity(g_hWnd, WDA_NONE);
                MessageBoxW(NULL, L"反截图已关闭", L"提示", MB_OK);
            }
        }

        lastKeyDown = keyDown;
        Sleep(50); // 降低 CPU 占用
    }

    return 0;
}

BOOL APIENTRY DllMain(HMODULE hModule,DWORD reason,LPVOID)
{
    if (reason == DLL_PROCESS_ATTACH)
    {
        DisableThreadLibraryCalls(hModule);
        HANDLE h = CreateThread(nullptr, 0, AntiCaptureThread, nullptr, 0, nullptr);
        if (h) CloseHandle(h);
    }
    return TRUE;
}

编译dll

注入到测试进程中

按下F2键就能开关反截图功能了

相关推荐
丘山望岳12 小时前
C++模板特化:类型与常量的灵活掌控
c语言·开发语言·c++
晚风叙码12 小时前
从0吃透C++入门|第一个程序、命名空间与缺省函数基础
开发语言·c++
j_xxx404_12 小时前
Linux线程:核心机制与优雅的 C++ 封装实践|附源码
linux·运维·服务器·开发语言·c++·人工智能·ai
W230357657312 小时前
手写 muduo 库:基于 Reactor 模型打造高性能网络通信框架
c++·reactor·tcp·muduo库
Zhang~Ling12 小时前
C++ 模板进阶:非类型参数、特化与分离编译深度解析
开发语言·c++
Oj92q85H512 小时前
如何在Dev-C++中使用TDM-GCC编译项目
linux·开发语言·c++
小poop12 小时前
STL 入门 + 三道高频面试题
c++
j_xxx404_12 小时前
Linux线程控制:从用户态控制到内核级克隆全链路解析
linux·运维·服务器·开发语言·c++·ai
喵星人工作室12 小时前
C++火影忍者1.1版本
开发语言·c++·游戏
插件开发12 小时前
在VS2019编辑器环境中使用c++打造window服务程序基础框架详细步骤
c++·编辑器·服务程序