C# 在程序进程C中查找计时器#

C# 在程序进程C中查找计时器#,c#,C#,我一直在使用作弊引擎读取程序的内存。我找到了计时器,但无法将其转换为可读时间。这是4字节,任何我尝试的东西都会让我胡言乱语 1509949440=9:00 2030043136=12:06 16777215=0:00 2868903936=17:12 2801795072=16:42 C#中的任何等式或函数都可以用来将这些长数字转换回分:秒格式?这与编程语言无关。这只是数学。让我们将列表按顺序排列,并以十六进制数字显示数字,任何内容都应该非常明显: Time Decimal

我一直在使用作弊引擎读取程序的内存。我找到了计时器,但无法将其转换为可读时间。这是4字节,任何我尝试的东西都会让我胡言乱语

1509949440=9:00

2030043136=12:06

16777215=0:00

2868903936=17:12

2801795072=16:42


C#中的任何等式或函数都可以用来将这些长数字转换回分:秒格式?

这与编程语言无关。这只是数学。让我们将列表按顺序排列,并以十六进制数字显示数字,任何内容都应该非常明显:

Time      Decimal       Hex
---------------------------------
00:00       16777215    00FF FFFF
09:00     1509949440    5A00 0000
12:06     2030043136    7900 0000
16:42     2801795072    A700 0000
17:12     2868903936    AB00 0000
以下是一些不同之处:

From     To       Time Diff     Hex Diff    Hex Diff / Minute
-------------------------------------------------------------
17:12    16:42    0:30          400 0000    22 2222
12:06    09:00    3:06         1F00 0000    2A AAAA
09:00    00:00    9:00         5900 0001    2A 314D
17:12    09:00    8:12         5100 0000    2A 2576
从数字上可以看出,每分钟的差异是不稳定的。这可以通过以下事实来解释:数字内部的分辨率(内存中的分辨率)高于UI中的分辨率(时间戳)


所以,也许你只需要玩一点游戏,在内存中应用一些值,看看你的期望是否匹配(例如1677721600应该匹配10:00左右的时间)。

不知怎的,我在做了大量猜测后找到了答案

uint oddTimer = 1509949440;
double trueTimer = (oddTimer / 256^3) * 0.1;
return (uint)Math.Ceiling((double)trueTimer);
这里是9点


编辑:另外,当从内存中提取oddTimer时,我必须记住将其设置为ulong,因为给定的数字量可能会破坏正常的int32。

我认为这可能只是一个编程问题,而不是真正局限于特定的语言。