gpt4 book ai didi

low-level - CheatEngine 的速度破解是如何工作的?

转载 作者:行者123 更新时间:2023-12-01 17:14:02 28 4
gpt4 key购买 nike

Cheat Engine带有一个称为速度破解的功能,它基本上可以减慢或提高游戏速度。其实不光是游戏,如果有一款带时钟的软件也可以加快速度。这是如何运作的?我可能会想象有一些内部时钟在运行这些东西,但不确定这些东西是如何在低级别上发生的。

虽然此功能在我尝试过的大多数游戏中都有效,但在许多游戏中也失败了,例如《NFS Most Wanted》。为什么?这些游戏运行是否有任何不同的机制,或者只是一些反作弊?

最佳答案

三年后,我想我已经有足够的知识来回答我自己的问题了。 :)

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

对于任何与硬件打交道的目的,程序通常都会诉诸系统调用,因为这是操作系统最擅长的,而其中之一恰好就是了解时间。电脑游戏通常需要渲染 60 帧/秒,为了实现这一点,他们需要每 16.6ms 调用一次渲染函数。在 Windows 上,“GetTickCount() ”通常用于返回自 Windows 启动以来经过的毫秒数(“如果自上次滴答计数以来经过的毫秒数超过 16ms,则渲染一个新的框架,否则继续。”)。

一般来说,SpeedHacking 的工作原理是向正在运行的进程注入(inject)代码,并破解计时函数以返回加速/减速的“刻度”,从而修改程序的运行速度。

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

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 被注入(inject)。

关于low-level - CheatEngine 的速度破解是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17512906/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com