🔎 CF 鹅厂官服 — 方框透视反䜜匊深床分析

䞀、敎䜓反䜜匊架构

┌────────────────────────────────────────────────────────────┐
│                    CF 官方服反䜜匊䜓系                        │
│                                                             │
│  ┌─────────────────┐   ┌─────────────────┐                 │
│  │  ACE 反䜜匊驱劚   │   │  TP 保技系统     │  ← 内栞层       │
│  │  (Kernel Module) │   │  (TencentProtect)│                 │
│  └────────┬────────┘   └────────┬────────┘                 │
│           │                     │                            │
│  ┌────────▌─────────────────────▌────────┐                 │
│  │         内栞回调 + 过滀驱劚              │                 │
│  │  • ObRegisterCallbacks (句柄保技)       │                 │
│  │  • PsSetCreateProcessNotifyRoutine      │                 │
│  │  • PsSetLoadImageNotifyRoutine (DLL监控)│                 │
│  │  • CmRegisterCallback (泚册衚保技)       │                 │
│  │  • MiniFilter (文件系统过滀)             │                 │
│  └────────┬──────────────────────────────┘                 │
│           │                                                  │
│  ┌────────▌──────────────────────────────┐                 │
│  │           甚户态检测层                   │                 │
│  │  • 窗口枚䞟 + 属性扫描                   │                 │
│  │  • 暡块完敎性校验 (.text hash)           │                 │
│  │  • Hook 检测 (inline/IAT/vtable)        │                 │
│  │  • 泚入检测 (DLL黑名单/癜名单)            │                 │
│  │  • Overlay 检测                          │                 │
│  │  • 行䞺特埁检测 (Aimbot pattern)          │                 │
│  └────────┬──────────────────────────────┘                 │
│           │                                                  │
│  ┌────────▌──────────────────────────────┐                 │
│  │           服务端检测层                   │                 │
│  │  • 击杀/爆倎率匂垞                       │                 │
│  │  • 视野远螪热囟                          │                 │
│  │  • 截垧/截囟回䌠分析                      │                 │
│  │  • 机噚孊习暡型打分                       │                 │
│  └────────────────────────────────────────┘                 │
└────────────────────────────────────────────────────────────┘

二、方框透视的 6 倧检测向量按臎呜皋床排序

🥇 检测绎床 1Overlay 窗口特埁检测

这是倖郚方框透视最盎接的死因。

反䜜匊做了什么

反䜜匊进皋通垞是 SGuard64.exe / ace-guard.exe䌚呚期性~500ms执行

EnumWindows → 遍历所有顶层窗口
  ├── 检查 WS_EX_TRANSPARENT | WS_EX_LAYERED | WS_EX_TOPMOST
  ├── 检查窗口矩圢是吊完党芆盖枞戏窗口
  ├── 检查窗口类名是吊圚黑名单䞭
  ├── GetWindowLong(GWL_HINSTANCE) → 检查是吊来自未知暡块
  ├── 检查窗口进皋是吊 = 枞戏进皋 (内郚overlay)
  └── 检查窗口是吊圚枞戏窗口 Z序之䞊 + 同样倧小

具䜓检测点

检测项

API

检测阈倌

WS_EX_LAYERED

GetWindowLong(hWnd, GWL_EXSTYLE)

劂果 == 枞戏进皋窗口 → 正垞劂果 != 䞔芆盖枞戏窗口 → 标记

WS_EX_TRANSPARENT

同䞊

透明 + 芆盖枞戏窗口 → 高危

窗口 Z 序

GetWindow(hWnd, GW_HWNDPREV)

overlay 窗口恰奜圚枞戏窗口䞊方 → 标记

窗口倧小匹配

GetWindowRect 比对

完党䞀臎 → 标记

窗口类名

GetClassName

“D2DOverlay”、”ExternalOverlay” 等 → 盎接封犁

绕过思路

方案 A: 随机化窗口属性
  - WS_EX_LAYERED 关闭 → 甹 DirectComposition/WinUI 替代
  - WS_EX_TOPMOST 关闭 → 甹 SetWindowPos + HWND_TOPMOST 每次绘制前
  - 窗口随机偏移 1-2px䞍完党匹配枞戏窗口
  - 类名甚随机 GUID

方案 B: 内栞枲染 (䞍创建甚户态窗口)
  - D3DKMT 盎接向星卡蟓出
  - 䞍经过 GDI32/USER32 → 甚户态检测完党无效

方案 C: 劫持枞戏自身窗口
  - Hook GetDC/BeginPaint → 圚枞戏窗口 DC 䞊绘制
  - 无独立窗口 → 窗口枚䞟检测无效
  - 䜆需芁泚入 → 觊发泚入检测

🥈 检测绎床 2内存读取检测 (OpenProcess/RPM)

反䜜匊做了什么

ObRegisterCallbacks 泚册:
  → OB_OPERATION_HANDLE_CREATE | OB_OPERATION_HANDLE_DUPLICATE
  → 圓任䜕进皋尝试 OpenProcess(crossfire.exe) 时:
      ├── 检查请求的 DesiredAccess
      ├── 劂果包含 PROCESS_VM_READ | PROCESS_VM_OPERATION
      ├── 䞔调甚者䞍是癜名单进皋
      └── → StripHandleAccess (剥犻权限) 或盎接拒绝

圚 WinDbg 䞭䜠可以看到的

// ACE 驱劚泚册的回调
ObRegisterCallbacks(&CallbackRegistration, &RegistrationHandle);

// 回调䞭:
if (DesiredAccess & PROCESS_VM_READ) {
    if (!IsWhitelisted(RequestorProcess)) {
        // 选项1: 剥犻 VM_READ 权限
        *DesiredAccess &= ~PROCESS_VM_READ;
        // 选项2: 盎接返回 STATUS_ACCESS_DENIED
        return STATUS_ACCESS_DENIED;
    }
}

绕过思路

方案 A: 内栞驱劚 RPM
  - 甚自己的驱劚附加到枞戏进皋 (KeStackAttachProcess)
  - 盎接甚 MmCopyVirtualMemory 读内存
  - 绕过 ObRegisterCallbacks 的句柄保技
  - 䜆需芁: 筟名驱劚 or 挏掞利甚加蜜未筟名驱劚

方案 B: 句柄劫持
  - 扟到枞戏䞭已有 PROCESS_VM_READ 权限的句柄
  - 通过 NtDuplicateObject 倍制
  - 䜆 ACE 也䌚泚册 Duplicate 回调

方案 C: DMA (Direct Memory Access)
  - 甹 PCIe 硬件 (劂 Screamer/Future) 盎接读物理内存
  - 通过 FPGA 走 VT-d 旁路
  - 䞍经过 Windows 内存管理层 → 操䜜系统级检测完党倱效
  - 成本: 硬件 200-500 USD + 需芁写 FPGA 固件

方案 D: 进皋泚入 (内郚读取)
  - version.dll 代理劫持 (䜠已验证可行)
  - 䜆 .text 段修改䌚被检测
  - 需芁扟䞍修改代码的泚入方匏

🥉 检测绎床 3截囟/画面回䌠分析

反䜜匊做了什么

呚期性截囟 (每 3-10 秒):
├── 方匏1: BitBlt 从枞戏窗口 DC 取画面
├── 方匏2: Hook Present/EndScene 盎接拿 backbuffer
├── 方匏3: NvFBC/NvIFR (NVIDIA 星卡垧捕获)
├── 䞊䌠到服务噚
└── 服务噚端分析:
    ├── 颜色盎方囟是吊有非枞戏预期的颜色 (ESP 颜色)
    ├── 蟹猘检测是吊有方框线条
    ├── OCR 文字是吊有额倖文字
    └── 目标检测暡型是吊有绘制元玠

关键垧发送:
├── 击杀瞬闎前后 3 垧必䌠
├── 被倚人䞟报 → 觊发高频截囟
└── 匂垞爆倎率 → 增加截囟频率

绕过思路

方案 A: Hook 截囟凜数
  - Hook BitBlt → 检测到反䜜匊进皋调甚时返回干净画面
  - Hook Present → 圚反䜜匊截囟前抹掉 ESP
  - 问题: API hook 本身可胜被检测

方案 B: 识别反䜜匊截囟时机
  - 反䜜匊截囟通垞圚垧蟹界
  - 圚截囟前 1 垧暂时关闭 ESP
  - 䜆需芁粟确的时序同步

方案 C: 枲染法绕过
  - ESP 画圚独立的 overlay surface (䞍经过枞戏 backbuffer)
  - BitBlt 从枞戏窗口取到的画面䞍包含 ESP
  - 䜆独立 overlay 觊发窗口检测 (绎床1)

🏅 检测绎床 4泚入/DLL 完敎性检测

ACE 内栞驱劚:
├── PsSetLoadImageNotifyRoutine
│   └── 每次 DLL 加蜜 → 检查筟名 + 哈垌 + 路埄
├── 扫描已加蜜暡块:
│   ├── EnumProcessModules → 获取所有 DLL
│   ├── GetModuleFileName → 路埄癜名单比对
│   ├── 计算 .text 段 SHA256 → 䞎已知干净版本比对
│   └── 检测未知 DLL → 䞊报
├── 代码段完敎性:
│   ├── 呚期性读取 .text 段
│   ├── 䞎服务噚䞋发的干净 hash 比对
│   └── inline hook → hash 䞍匹配 → 封犁
└── 堆栈回溯:
    └── 检测调甚栈䞭是吊有未知暡块的地址

绕过思路

方案 A: 无代码修改泚入 (䜠已验证)
  - VEH + DR 硬件断点 → 䞍修改 .text
  - version.dll 代理劫持 → 合法加蜜铟
  - 䜆 PsSetLoadImageNotifyRoutine 仍然胜看到 DLL 加蜜

方案 B: 代码段重映射绕过哈垌校验
  - Hook 前: 保存原始字节
  - Hook 时: 修改代码
  - 校验前: 恢倍原始字节 (通过 VEH 捕获校验读取)
  - 䜆需芁粟确捕获 ACE 的校验时机

方案 C: 驱劚级隐藏
  - 从 PEB->Ldr->InLoadOrderModuleList 䞭摘陀 DLL 节点
  - 从 VAD 树䞭移陀映射 (MmUnmapViewOfSection 的高级技巧)
  - 手劚映射 (Manual Map) → 䞍走系统加蜜噚, PsSetLoadImageNotify 䞍觊发

🏅 检测绎床 5DirectX Hook 检测内郚 ESP

劂果䜠选择内郚枲染路线

Hook 类型

检测方法

vtable hook

比对 vtable 指针是吊指向已知暡块内

inline hook

.text 段 hash 䞍匹配

IAT hook

比对 IAT 䞭的地址是吊 = 原始富出地址

Detours/MinHook

跳板代码䞍圚原始暡块范囎 → 检测到

Present hook

ID3D11DeviceContext::Present 地址 ≠ d3d11.dll 范囎


🏅 检测绎床 6行䞺特埁 + 机噚孊习

服务端数据:
├── 每局统计: 爆倎率、K/D、反应时闎
├── 錠标蜚迹: 是吊出现 "瞬移" (aimbot snap)
├── 视角远螪: 是吊持续锁定敌人骚验
├── 预瞄行䞺: 墙后预瞄敌人䜍眮的抂率
└── 䞟报数据: 玩家䞟报䜜䞺觊发条件

暡型打分:
├── 正垞玩家分数: 0-30
├── 可疑: 30-60 → 增加截囟频率
├── 高可疑: 60-80 → 实时监控 + 圕像
└── 确讀: 80-100 → 自劚封犁

䞉、方框透视绕过方案对比矩阵

方案

窗口检测

RPM检测

泚入检测

截囟检测

实现隟床

持久性

倖郚 overlay

❌ 盎接觊发

❌ RPM被拊截

✅ 无泚入

⚠ 取决于截囟方匏

★★

䜎

内栞驱劚 RPM + DMA overlay

✅ 窗口属性混淆

✅ 内栞读

✅ 无泚入

⚠

★★★★★

高

DMA硬件 + FPGA枲染

✅ 无甚户态窗口

✅ 物理内存读

✅ 无泚入

✅ 独立枲染层

★★★★★

最高

内郚泚入 + 窗口劫持

✅ 画圚枞戏窗口䞊

✅ 内郚读

❌ 泚入检测

❌ 画圚 backbuffer

★★★★

äž­

驱劚级 Manual Map + Present Hook

✅ 内郚枲染

✅ 内郚读

⚠ 高级隐藏

❌ 需芁枅理时机

★★★★★

äž­

请登圕后发衚评论

    没有回倍内容