我试图从全局指针获取游戏的引擎版本,但我对此相当新。这是我发现的一个非常小的例子......
这是我想要得到的反汇编,指针(gpszVersionString)是突出显示的行(第5行)
所以我需要找到的是基本上使用我发现的示例方法来获取它,我是否需要基本上输出函数的第一部分并找到该行的偏移量?
...一样
内存签名 - / x56 / x8B / x35 / x74 / xD5 / x29 / x10 / x68 / x00 / xA8 / x38 / x10 那么到达那条线的偏移量? (不知道如何找到偏移量)
答案 0 :(得分:5)
你不能直接这样做。流程地址空间对您的流程来说是完全独特的 - 0xDEADBEEF
可以在一个流程中指向“Dog”,而0xDEADBEEF
可以指向另一个流程中的“Cat”。您必须进行操作系统调用,以允许您访问另一个进程的地址空间,即使这样您也必须猜测。很多时候,每次运行应用程序的位置都不同 - 通常无法预测进程的运行时布局在所有情况下都会是什么。
假设你在Windows上,你需要(编辑:在所有情况下你都不需要A和B,但你通常需要它们)A。是管理员,B。取SeDebugPrivilege您的流程C,open a handle to the process,然后是D.使用ReadProcessMemory / WriteProcessMemory做您想做的事。
希望有所帮助:)
编辑2:看起来你正在查看从反汇编程序中获取的地址。如果是这种情况,则不能使用该地址的值 - 图像可以在运行时重新基础,并且值将完全不同。特别是在最新版本的Windows上支持地址空间布局随机化。