变速齿轮,游戏加速的实现

news/2025/2/6 5:55:35/

这是本人几年前做游戏浏览器加速的时候的部分代码,当时查了很多资料,很多资料和代码都不全或者有问题经过差不多两周的时间才解决了这个问题,搞微软的东西就是这样,又不是很牛逼的东西又搞的累得半死

1,用dll注入到要控制的进程

2,利用MinHook(这个库可以在CSDN上找到)这个库hook住三个时间API,分别是GetTickCount,timeGetTime,QueryPerformanceCounter

部分主要代码如下(忽略掉了注入的代码)

其中m_s_iSpeedTimes是加速的倍速

MH_Initialize();
MH_CreateHook(&GetTickCount, &NewGetTickCount2,   reinterpret_cast<LPVOID*>(&s_oldGetTickCount));  
MH_EnableHook(&GetTickCount);  MH_CreateHook(&timeGetTime, &NewTimeGetTime2,   reinterpret_cast<LPVOID*>(&s_oldTimeGetTime));  
MH_EnableHook(&timeGetTime);  MH_CreateHook(&QueryPerformanceCounter, &NewQueryPerformanceCounter,   reinterpret_cast<LPVOID*>(&s_oldQueryPerformanceCounter));  
MH_EnableHook(&QueryPerformanceCounter);  DWORD WINAPI CBrowser::NewTimeGetTime2(void)  
{  static DWORD fake = 0;  static DWORD last_real = 0;  DWORD now = (*s_oldTimeGetTime)();  DWORD result;  if(last_real == 0)  {  result = fake = last_real = now;  }  else  {  result = fake + m_s_iSpeedTimes * (now - last_real);   fake = result;  last_real = now;  }  return result;  
}  DWORD WINAPI CBrowser::NewGetTickCount2(void)  
{  static DWORD fake = 0;  static DWORD last_real = 0;  DWORD now = (*s_oldGetTickCount)();  DWORD result;  if(last_real == 0)  {  result = fake = last_real = now;  }  else  {  result = fake + m_s_iSpeedTimes * (now - last_real);   fake = result;  last_real = now;  }  return result;  
}  BOOL WINAPI CBrowser::NewQueryPerformanceCounter(__out LARGE_INTEGER *lpPerformanceCount)  
{  BOOL ret = (*s_oldQueryPerformanceCounter)(lpPerformanceCount);  if(!ret) return ret;  static LARGE_INTEGER fake = {0};  static LARGE_INTEGER last_real = {0};  LARGE_INTEGER now = *lpPerformanceCount;  if(last_real.QuadPart == 0)  {  fake = last_real = now;  }  else  {  lpPerformanceCount->QuadPart = fake.QuadPart + m_s_iSpeedTimes * (now.QuadPart - last_real.QuadPart);   fake = *lpPerformanceCount;  last_real = now;  }  return ret;  
} 



http://www.ppmy.cn/news/191322.html

相关文章

变速外挂案例及原理分析

众所周知&#xff0c;游戏在运行中需要以帧为单位播放画面&#xff0c;而计算每帧动画播放所需时间&#xff0c;则需要调用C库函数来获取系统时间。如&#xff1a; // 获取当前精确时间 gettimeofday; // 获取系统时间 clock_gettime; 这类外挂的实现原理就是通过修改获取…

变速齿轮修改服务器时间,可改变游戏速度!游戏变速齿轮安装使用说明

游戏变速齿轮是一款可以改变游戏速度的程序&#xff0c;不仅仅是游戏&#xff0c;还支持视频播放、Flash、网页等任何时间相关的程序&#xff0c;程序的使用非常简单&#xff0c;操作非常便捷&#xff0c;推荐使用。有需要的小伙伴欢迎来西西下载。 软件简介&#xff1a; 游戏变…

深入游戏变速底层原理以及内核变速的实现

前言 当你接触了一款叫做“变速齿轮”的软件&#xff0c;你可以玩上一整个星期。因为它实在是太酷炫了&#xff0c;无论网页&#xff08;Flash、HTML5&#xff09;、还是小软件&#xff0c;又或者是单机游戏&#xff0c;他总能给你惊喜&#xff0c;唯独网游不能&#xff01;那…

Android 录音增益调节

需求&#xff1a; 项目搭载了带麦的USB摄像头&#xff0c;用于视频通话功能&#xff0c;人对着摄像头说话的距离评估在5米&#xff0c;而不像手机可以拿在手上近距离的对着MIC说话&#xff0c;所以&#xff0c;在测试中觉得摄像头采集的声音很小&#xff0c;需要增大录音音量。…

计算机xp系统怎么录音,WinXP自带的录音机软件如何开启并使用

电脑录音的方法很多&#xff0c;但是大多方法都需要下载一个软件&#xff0c;而且很多软件使用起来复杂&#xff0c;还有一些需要注册才能使用&#xff0c;有没有不需要下载软件的方法呢?当然有!WinXP系统自带了录音软件&#xff0c;虽然功能不多&#xff0c;但是操作简单&…

ubuntu java 录音卡_Ubuntu 13.10 录音有特别大噪音解决办法

现在物理机跑Ubuntu&#xff0c;平常的QQ只能在虚拟机里跑了&#xff1b;起初和别人QQ语音&#xff0c;别人能听到很大的噪音&#xff0c;以为是虚拟机的回音&#xff0c;属于正常现象&#xff0c;结果我用虚拟机里边的录音工具和Ubuntu里的录音工具测试一下&#xff0c;发现原…

java声卡录音_win10下程序无法录音或使用麦克风

操作系统名称 Microsoft Windows 10 专业 版本 10.0.17134 版本 17134 简言之&#xff0c;win10采用类似移动操作系统的设备权限管理方式&#xff0c;对麦克风、摄像头、定位等涉及用户隐私的设备进行针对不同app的访问权限管理。如果理解了这一点&#xff0c;下面的内容…

用计算机录音,如何使用电脑中的录音功能

导语&#xff1a;有时候用电脑想要录制下难忘的一颗却不知道要怎么操作&#xff1f;别急&#xff0c;接下来小编将告诉你有关于如何使用电脑中的录音功能的技巧方法&#xff0c;欢迎大家收藏&#xff01; 如何使用电脑中的录音功能 一、调试声音控制 1、首先打开音量控制版(工具…