gpt4 book ai didi

c++ - 使用C++从内存地址获取ptr

转载 作者:搜寻专家 更新时间:2023-10-31 00:48:46 24 4
gpt4 key购买 nike

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

http://ampaste.net/mb42243

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

http://ampaste.net/m2a8f8887

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

喜欢...

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

最佳答案

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

假设您在 Windows 上,您将需要(编辑:您不需要 A 和 B 在所有情况下,但您通常需要它们)A. 成为管理员,B. 接受 SeDebugPrivilege对于您的过程,C,open a handle to the process , 然后 D. 使用 ReadProcessMemory/WriteProcessMemory做你想做的。

希望对您有所帮助:)

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

关于c++ - 使用C++从内存地址获取ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2338505/

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