Malimali 发表于 2015-1-20 22:50:09

游戏变速模型 原理

今天一个朋友问我一些游戏的变速器是怎么做的,我第一反应就是驱动,所以回答他的是WinIO中的驱动级系统变速。但经过测试发现变速器只改变指定进程的速度,其他进程包括时间都没有发生改变。看了一下变速器的文件目录,有个叫HOOK.dll的文件,所以立马就想到了APIHOOK。平时写程序比如线程休眠5秒Sleep(5000),那么我们只要APIHOOK掉Sleep函数,把传入的5000改成我们想要的值就达到了变速的效果。

    接下来我上网查了一些和时间相关的API,如SetTimer,TimeSetEvent,timeGetTime,QueryPerformanceCounter,GetTickTime,随便找了个加速为主流 的游戏,经测试,游戏在时间的计算上用到了其中的一个API,所以我们要做的就很简单的,注入一个DLL进入游戏后对API进行HOOK,把相关数据修改后并返回。很顺利的,一个加速 就写好了。

    什么游戏就不说了,本来就是以研究为主,现在我将他简单化,模拟了一个游戏中放技能时的施法条。通过APIHOOK技术将施法速度提升至原来的20倍。当然为了方便,我把APIHOOK直接一起写进了程序内,和DLL注入后APIHOOK的效果是一样的。

    贴上模型图:

大家下载下来测试下就很明显了,原先5秒读条足足快了20倍。

    该技术适用的场合:网游都是通过客户端和服务端交互,如果相关的数据处理全在服务端上,那么APIHOOK的结果是本地可以看到效果,但技能却放不出去,因为服务器判断失败。所以当这些数据都在本地进行处理的时候,HOOK掉时间相关的函数进行游戏变速是再好不过的。

    因此我很不厚道的拿XNF开了刀,测试效果W美。这里就不发了,开这贴是以技术为主,看懂了的朋友随便上游戏调试下,确定哪个API,然后做相关的处理就解决了。




蛋定 发表于 2015-1-21 17:23:13

怎么写加速某进程呢?求写法

aumkb 发表于 2015-1-24 17:18:21

前排支持下

myydy 发表于 2015-4-15 13:21:54

正静,淡定,安静,都别吵了……

失心疯〆 发表于 2015-5-5 12:32:43

我飘过一下 赚一个海币

hjwgjd 发表于 2015-5-9 11:35:03

回复一下 证明我来过

a395944065 发表于 2015-5-29 13:41:02

赚海币~~~~~~~~~~~

a395944065 发表于 2015-5-29 13:41:19

再赚一个海币

-━╋う誮卷 发表于 2015-6-6 22:54:08

硬实厉害啊

难寻。1982 发表于 2016-7-4 21:40:15

{:mad:}学习了
页: [1] 2
查看完整版本: 游戏变速模型 原理