用c ++从内存地址获取ptr

2 c++ signature

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

http://ampaste.net/mb42243

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

http://ampaste.net/m2a8f8887

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

喜欢...

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

Bil*_*eal 5

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

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

希望有帮助:)

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