首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CheatEngine的速度黑客是如何工作的?

CheatEngine的速度黑客是如何工作的?
EN

Stack Overflow用户
提问于 2013-07-07 22:15:25
回答 3查看 73.2K关注 0票数 33

Cheat Engine有一个叫做速度黑客的功能,它基本上可以减慢或提高游戏的速度。实际上,不仅仅是游戏,如果有一个带有时钟滴答的软件,它也可以加快速度。这是如何工作的呢?我可能会想象有一些内在的时钟,这些事情在上面运行,但不确定这些事情是如何在低水平上发生的。

虽然这个功能在我尝试的大多数游戏上都有效,但在许多游戏上也失败了,例如NFS最想要的游戏。为什么?这些游戏有没有不同的运行机制,或者只是一些反作弊的机制?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-07 01:59:07

三年后,我想我知道的足够回答我自己的问题了。:)

计算机程序通常使用称为系统调用的预定义函数与内核通信。每个操作系统都有一组不同的调用,但它们通常执行类似的操作,如分配内存、读写文件或处理进程。根据this page的说法,在Windows NT内核中有大约480+系统调用。

对于处理硬件的任何目的,程序通常求助于系统调用,因为这是操作系统最擅长的,而其中一件事恰好是知道时间。电脑游戏通常需要渲染60帧/秒,为了实现这一点,他们需要每隔16.6ms调用一次渲染函数。在Windows上,"GetTickCount()(https://msdn.microsoft.com/en-us/library/windows/desktop/ms724408(v=vs.85%29.aspx)“通常用于返回自窗口启动以来经过的毫秒数(”如果自上次滴答计数以来没有经过的毫秒数大于16ms,则渲染一个新帧,否则继续。“)。

一般而言,SpeedHacking的工作方式是将代码注入正在运行的进程中,并修改计时函数以返回加速/减速的“滴答”,从而修改程序的运行速度。

虽然,我不能确定CE是如何做到这一点的(源代码很难理解),但是另一个程序员在Linux上做了一个类似的事情(video)。在source code中,您可以看到作者如何为此修改了一个类似的Linux系统调用("gettimeofday()")。

代码语言:javascript
运行
复制
go gettimeofday_orig;

int val;
gettimeofday_orig=(go)dlsym(RTLD_NEXT,"gettimeofday");

if (!timezero)
{
    timezero = new timeval;
    val = gettimeofday_orig(timezero,tz);
    (*tv) = (*timezero);
    return val;
}

我不确定它是如何被检测到的,但我会同意@Harold的想法,即游戏可能会发现DLL被注入。

票数 19
EN

Stack Overflow用户

发布于 2014-07-18 18:02:05

作弊引擎 Speedhack:

  • 在一个非常高优先级的线程中运行应用程序
  • 使用定时休眠来加速游戏
  • 当一个函数被调用时,它将被赋予一个模拟的计时器来加速

作弊引擎 Speedhack:

当作弊引擎速度dll被注入到程序中时,它会修改为您在作弊引擎面板中选择的速度。

  • 设置当前time

  • returned时间= basetime+((currenttime-basetime)*speed

的基本参考

检测:

  • 这两种方法都很容易检测,只需每隔几秒钟发送一次数据包即可被服务器验证
  • 游戏可能会检测到被注入的dll

来源: http://wiki.cheatengine.org/index.php?title=Cheat_Engine:Internals#Speedhack

票数 20
EN

Stack Overflow用户

发布于 2015-10-17 04:18:52

我认为它在一些应用程序(主要是游戏)中不起作用的原因是,一些游戏将游戏中的时钟与每秒的帧数联系起来。因此,如果你试图加速它,你的游戏将会变慢或崩溃。

来源: http://hackerbot.net/tutorials/353-speed-up-hack-slow-down-cheat

就我个人而言,我只遇到过很少的游戏不会对speedhack做出反应。即使它们与FPS捆绑在一起,你仍然可以在某种程度上加速它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17512906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档