一、实现原理
在早期的很多游戏中,相信很多人用过变速齿轮去实现游戏内的加速瞬移功能,它的原理就是针对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_time
本文介绍了游戏加速瞬移的实现原理,主要涉及对QueryPerformanceCounter等API的HOOK,以及在扫雷中的应用示例。同时,提出了对抗方法,包括自我检测代码段是否被HOOK,并利用游戏机制和服务端定时器检测异常移动,防止瞬移作弊。
订阅专栏 解锁全文
5660

被折叠的 条评论
为什么被折叠?



