二、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
二、C++反作弊对抗实战 (进阶篇 —— 16.如何实现游戏加速瞬移与对抗)相关推荐
- 二、C++反作弊对抗实战 (进阶篇 —— 14.利用内存加载+重定向绕过inline iat hook)
下面是成功绕过inline hook的运行效果: 一.前言 在前面的章节中讲述了inline hook.iat hook.seh/veh hook等原理以及代码实现,也在讲述inline hook时顺 ...
- 二、C++反作弊对抗实战 (进阶篇 —— 2.作弊器中常见断链隐藏DLL方法)
目前,比较常见的模块隐藏方法有抹去模块的PE头.断开进程的LDR_MODULE链或者Hook模块枚举函数等,这里介绍前面抹去PE头.断链的方法. 提示:以下是本篇文章正文内容,下面案例可供参考 一.设 ...
- 二、C++反作弊对抗实战 (进阶篇 —— 4.遍历进程模块(暴力扫描整个内存找出被断链的))
提示:以下是本篇文章正文内容,下面案例可供参考 一.前言 由于上一章节中的MsgBox已经被抹去PE头.断链隐藏了DLL,导致将无法正常遍历出当前进程的所有模块,这时候就需要用到暴力内存的方法了.因为 ...
- C++反作弊对抗实战 (目录篇)
再次强调一下,在浏览此专栏时,强烈推荐你需要有一定的C/C++基础,至少能看懂C++语法.结构体.类等基础概念,以及了解一定Win32 API开发基础,否则不建议你强行介入,不然会严重打击了你的学习热 ...
- C++反作弊对抗实战 (序言篇)
前言 本人虽从事多年的C/C++开发,写过pc端也搞单片机(目前主业),所谓技术水平这一块,只能勉强算是大家眼中的"混子" -- 就是什么都了解一点,但什么也都不敢自称" ...
- Enterprise Library Step By Step系列(十二):异常处理应用程序块——进阶篇
一.把异常信息Logging到数据库 在日志和监测应用程序块中,有朋友提意见说希望能够把异常信息Logging到数据库中,在这里介绍一下具体的实现方法. 1.创建相关的数据库环境: 我们可以用日志和监 ...
- 虚拟摄像头之 十二 v4l2loopback虚拟机摄像头移植实战(完结篇)
前言 本篇记录在 android8 的 IMX8QM 平台移植 v4l2loopback 虚拟摄像头实战过程记录;其中主旨是记录整个过程.已经期间出现的踩坑过程,后期虚拟摄像驱动还有移植到多核ARM平 ...
- JVM性能调优与实战进阶篇-上
ZGC 诞生原因 Java生态非常强大,但还不够,有些场景仍处于劣势,而ZGC的出现可以让Java语言抢占其他语言的某些特定领域市场.比如 谷歌主导的Android手机系统显示卡顿. 证券交易市场,实 ...
- 判断和循环(实战收尾篇2—猜数字游戏)
讲完循环和判断我们就可以上游戏啦!兴奋吧,激动吧,直接进入正题,来看! 在进入猜数字游戏之前,先让我们看一下模拟登录(后面用于游戏登录) 目录 1.模拟登录 2.猜数字 1.模拟登录 //模拟登录#p ...
最新文章
- C语言 找数码是否存在
- Python+selenium自动化:页面加载慢、超时加载情况下内容已经加载完毕的快速执行脚本解决方案,页面加载时间过长优化方案
- initWithFrame方法的理解(转)
- 检测单击鼠标左键并拖动的消息_3-75 通过鼠标选择文本
- AI评委引热议,阿里巴巴表示:AI不会取代工程师
- android点击出现菜单,Android 点击按钮弹出菜单
- 缺失值填充1——缺失值查看、确定值填充、参考值填充
- 关于swift中的懒加载
- 典型的SPI控制器的结构
- Centos7.3 坑爹网络配置
- 面试官十大常问面试问题总结
- python输入矩阵_python如何输入矩阵
- 基于PageRank的社交网络用户影响力
- 解决Invalid bound statement (not found): com.hengjun.mapper.UserMapper.selectByExample,
- 实战tkinter图形界面开发_Tkinter python(图形开发界面)
- Windows、Linux以及银河麒麟系统的一些操作系统知识
- linux 跨平台查询 lxr,利用LXR来生成Linux内核代码的交叉索引页面
- Linux驱动快速入门
- JAVA基础:面向对象的例外处理
- 什么是IP封锁, 如何解封?