2

我试图从全局指针获取游戏的引擎版本,但我对此相当陌生。这是我发现的一个非常小的例子......

http://ampaste.net/mb42243

这是我想要得到的反汇编,指针(gpszVersionString)是突出显示的行(第5行)

http://ampaste.net/m2a8f8887

所以我需要找出的基本上是使用我找到的示例方法来获取它,我是否需要基本上签出函数的第一部分并找到该行的偏移量?

喜欢...

内存签名 - /x56/x8B/x35/x74/xD5/x29/x10/x68/x00/xA8/x38/x10 那么到达那条线的偏移量?(不知道如何找到偏移量)

4

1 回答 1

5

你不能直接这样做。进程地址空间对于您的进程是完全唯一的——0xDEADBEEF可以在一个进程中指向“Dog”,而在另一个进程中0xDEADBEEF可以指向“Cat”。您必须进行允许您访问另一个进程的地址空间的操作系统调用,即使那样您也必须猜测。很多时候,每次运行应用程序时,该位置都会有所不同——您通常无法预测所有情况下进程的运行时布局。

假设您在 Windows 上,您将需要(编辑:在所有情况下您都不需要 A 和 B,但您通常需要它们)A. 成为管理员,B. 为您的进程获取SeDebugPrivilege ,C,打开一个处理进程,然后 D. 使用ReadProcessMemory / WriteProcessMemory做你想做的事。

希望有帮助:)

编辑 2:看起来您正在查看从反汇编程序中获取的地址。如果是这种情况,那么您不能使用该地址的值——图像可以在运行时重新基于,并且那里的值将完全不同。特别是在支持地址空间布局随机化的最新版本的 Windows 上。

于 2010-02-25T23:51:39.130 回答