二、C++反作弊对抗实战 (进阶篇 —— 16.如何实现游戏加速瞬移与对抗)


一、实现原理

   在早期的很多游戏中,相信很多人用过变速齿轮去实现游戏内的加速瞬移功能,它的原理就是针对QueryPerformanceCounter,GetTickCount,timeGetTime这几个API函数的HOOK。这里涉及到一个时钟的概念,当它们被HOOK API后,新的计算方法如下所示:

Clock = 上次时钟 + (当前返回时间 - 上次正常时间) * 倍数系数;

   在扫雷程序中,会使用到SetTimer来设置定时器,所以我们进行HOOK后,它的计时器将放慢,示例代码如下:

// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "stdafx.h"

#include "EasyHook.h"

// timeGetTime使用到的
#include <MMSystem.h>
#pragma comment(lib, "Winmm.lib")

typedef BOOL (WINAPI *fun_QueryPerformanceCounter)( LARGE_INTEGER *lpPerformanceCount );
typedef DWORD (WINAPI *fun_GetTickCount)( VOID );
typedef DWORD (WINAPI *fun_timeGetTime)(void);
typedef UINT_PTR (WINAPI *fun_SetTimer)( HWND hWnd, UINT_PTR nIDEvent, UINT

猜你喜欢

转载自blog.csdn.net/wangningyu/article/details/123187717
今日推荐