一、实现原理

  在早期的很多游戏中,相信很多人用过变速齿轮去实现游戏内的加速瞬移功能,它的原理就是针对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.如何实现游戏加速瞬移与对抗)相关推荐

  1. 二、C++反作弊对抗实战 (进阶篇 —— 14.利用内存加载+重定向绕过inline iat hook)

    下面是成功绕过inline hook的运行效果: 一.前言 在前面的章节中讲述了inline hook.iat hook.seh/veh hook等原理以及代码实现,也在讲述inline hook时顺 ...

  2. 二、C++反作弊对抗实战 (进阶篇 —— 2.作弊器中常见断链隐藏DLL方法)

    目前,比较常见的模块隐藏方法有抹去模块的PE头.断开进程的LDR_MODULE链或者Hook模块枚举函数等,这里介绍前面抹去PE头.断链的方法. 提示:以下是本篇文章正文内容,下面案例可供参考 一.设 ...

  3. 二、C++反作弊对抗实战 (进阶篇 —— 4.遍历进程模块(暴力扫描整个内存找出被断链的))

    提示:以下是本篇文章正文内容,下面案例可供参考 一.前言 由于上一章节中的MsgBox已经被抹去PE头.断链隐藏了DLL,导致将无法正常遍历出当前进程的所有模块,这时候就需要用到暴力内存的方法了.因为 ...

  4. C++反作弊对抗实战 (目录篇)

    再次强调一下,在浏览此专栏时,强烈推荐你需要有一定的C/C++基础,至少能看懂C++语法.结构体.类等基础概念,以及了解一定Win32 API开发基础,否则不建议你强行介入,不然会严重打击了你的学习热 ...

  5. C++反作弊对抗实战 (序言篇)

    前言 本人虽从事多年的C/C++开发,写过pc端也搞单片机(目前主业),所谓技术水平这一块,只能勉强算是大家眼中的"混子" -- 就是什么都了解一点,但什么也都不敢自称" ...

  6. Enterprise Library Step By Step系列(十二):异常处理应用程序块——进阶篇

    一.把异常信息Logging到数据库 在日志和监测应用程序块中,有朋友提意见说希望能够把异常信息Logging到数据库中,在这里介绍一下具体的实现方法. 1.创建相关的数据库环境: 我们可以用日志和监 ...

  7. 虚拟摄像头之 十二 v4l2loopback虚拟机摄像头移植实战(完结篇)

    前言 本篇记录在 android8 的 IMX8QM 平台移植 v4l2loopback 虚拟摄像头实战过程记录;其中主旨是记录整个过程.已经期间出现的踩坑过程,后期虚拟摄像驱动还有移植到多核ARM平 ...

  8. JVM性能调优与实战进阶篇-上

    ZGC 诞生原因 Java生态非常强大,但还不够,有些场景仍处于劣势,而ZGC的出现可以让Java语言抢占其他语言的某些特定领域市场.比如 谷歌主导的Android手机系统显示卡顿. 证券交易市场,实 ...

  9. 判断和循环(实战收尾篇2—猜数字游戏)

    讲完循环和判断我们就可以上游戏啦!兴奋吧,激动吧,直接进入正题,来看! 在进入猜数字游戏之前,先让我们看一下模拟登录(后面用于游戏登录) 目录 1.模拟登录 2.猜数字 1.模拟登录 //模拟登录#p ...

最新文章

  1. C语言 找数码是否存在
  2. Python+selenium自动化:页面加载慢、超时加载情况下内容已经加载完毕的快速执行脚本解决方案,页面加载时间过长优化方案
  3. initWithFrame方法的理解(转)
  4. 检测单击鼠标左键并拖动的消息_3-75 通过鼠标选择文本
  5. AI评委引热议,阿里巴巴表示:AI不会取代工程师
  6. android点击出现菜单,Android 点击按钮弹出菜单
  7. 缺失值填充1——缺失值查看、确定值填充、参考值填充
  8. 关于swift中的懒加载
  9. 典型的SPI控制器的结构
  10. Centos7.3 坑爹网络配置
  11. 面试官十大常问面试问题总结
  12. python输入矩阵_python如何输入矩阵
  13. 基于PageRank的社交网络用户影响力
  14. 解决Invalid bound statement (not found): com.hengjun.mapper.UserMapper.selectByExample,
  15. 实战tkinter图形界面开发_Tkinter python(图形开发界面)
  16. Windows、Linux以及银河麒麟系统的一些操作系统知识
  17. linux 跨平台查询 lxr,利用LXR来生成Linux内核代码的交叉索引页面
  18. Linux驱动快速入门
  19. JAVA基础:面向对象的例外处理
  20. 什么是IP封锁, 如何解封?

热门文章

  1. 2022电工(高级)练习题及答案
  2. ios电子书语音阅读
  3. Nwafu-OJ-1425 Problem V C语言实习题四——7.输出杨辉三角形
  4. 安装pgsql数据库
  5. ios与mac的时间问题,修改闹钟时间,24小时制
  6. 通达信波段王指标公式主图_通达信波段MACD主图指标公式
  7. maven的pom.xml文件中导入c3p0连接池,在运行时报错
  8. 企业内部培训——华微软件的培训制度
  9. 仿微信、QQ聊天页面软键盘遮挡聊天对话的解决办法
  10. 软件性能/压力测试是什么意思?