Skip to content

IICSC/Defense

Repository files navigation

C++ 防破解检测库

一个轻量级的 Windows 反调试 / 反抓包检测库,采用中文类名与 API,便于国内项目直接集成。

功能列表

检测项 说明
调试器进程检测 扫描 x64dbgOllyDbgIDACheat Engine 等常见调试器进程
抓包进程检测 扫描 WiresharkFiddlerCharlesBurp Suite 等常见抓包工具
自定义进程检测 传入自定义进程黑名单进行匹配
调试标志检测 调用 IsDebuggerPresent
PEB 标志检测 直接读取 PEB.BeingDebugged,可绕过部分 API Hook
调试端口检测 通过 NtQueryInformationProcess 查询 ProcessDebugPort
硬件断点检测 读取线程 Dr0~Dr3Dr7 调试寄存器
综合检测 调用以上所有检测,任一命中即返回 true

文件结构

.
├── Defense.h          # 头文件
├── Defense.cpp        # 实现文件
├── demo/
│   └── main.cpp       # 演示程序
├── build.bat          # MSVC 一键构建(x86 + x64)
├── build_x86.bat      # MSVC x86 构建
├── build_x64.bat      # MSVC x64 构建
├── build_mingw.bat    # MinGW-w64 构建
├── README.md
└── .gitignore

环境要求

  • Windows 7 或更高版本
  • 以下任一工具链:
    • MSVC:Visual Studio 2017+,安装“使用 C++ 的桌面开发”工作负荷
    • MinGW-w64:g++ 支持 -m32 / -m64

构建方式

MSVC(推荐)

在项目根目录打开命令提示符,执行:

build.bat

脚本会自动查找最新安装的 Visual Studio,依次构建 x86 与 x64 版本:

  • build\x86\Defense_x86.lib + build\x86\Demo_x86.exe
  • build\x64\Defense_x64.lib + build\x64\Demo_x64.exe

单独构建某一架构:

build_x86.bat
build_x64.bat

MinGW-w64

build_mingw.bat

输出产物:

  • build\x86\libDefense_x86.a + build\x86\Demo_x86.exe
  • build\x64\libDefense_x64.a + build\x64\Demo_x64.exe

API 使用示例

#include "Defense.h"
#include <iostream>

int main() {
    if (防破解::综合检测()) {
        std::cout << "检测到调试或抓包环境" << std::endl;
        // 可在此执行反制逻辑,如退出、上报等
    } else {
        std::cout << "环境安全" << std::endl;
    }
    return 0;
}

单独使用某一项:

if (防破解::检测调试器进程()) { /* ... */ }
if (防破解::检测硬件断点())  { /* ... */ }

std::vector<std::string> 黑名单 = { "notepad.exe", "calc.exe" };
if (防破解::检测指定进程(黑名单)) { /* ... */ }

验证方法

  1. 正常环境:运行 build\x64\Demo_x64.exe,所有项应显示“未检测到”。
  2. 调试器环境:用 x64dbg / WinDbg 打开 Demo,调试相关项应显示“检测到”。
  3. 抓包工具环境:启动 Wireshark / Fiddler 后运行 Demo,抓包项应显示“检测到”。
  4. 硬件断点:在调试器中对 main 函数设置硬件断点,检测硬件断点 项应显示“检测到”。

注意事项

  • 本库仅用于合法的安全防护、软件保护、反作弊研究等场景。
  • 反调试技术可被绕过,建议作为多层防护的一部分,不要单独依赖。
  • 某些安全软件可能将进程扫描行为视为可疑,请根据实际场景评估使用。

免责声明

本项目仅供学习研究使用,请勿用于非法目的。使用本项目造成的任何后果由使用者自行承担。

Releases

Packages

Contributors

Languages