使用变量地址读取另一个进程的内存

问题描述 投票:0回答:3

我想读取进程A的内存,但是当进程A被释放时。我已经运行了A,它显示了某个变量的地址,我关闭了它。

我已经运行了 B,其中输入了 A 变量的地址。它会导致错误“访问冲突...”。

我使用 Borland C++ builder 和 Windows 7。

进程关闭时有什么方法可以查看内存吗?也许一些工具可以帮助我。你能给我在内存释放后通过绝对地址读取内存的工具名称吗?
也许应该是某种检漏仪?

c++ multithreading c++builder access-violation ram
3个回答
2
投票

关闭后不知道,但是运行时可以使用

ReadProcessMemory()
CreateRemoteThread


2
投票

在大多数系统上,单独的进程存在于完全独立的虚拟地址空间中。 您在一个进程中看到的指针在另一个进程中完全没有意义。

因此,如果你想这样做,你必须显式地共享内存;我不是 Windows 专家,但我相信

CreateSharedMemory()
可能正是您所需要的。


0
投票

您可以使用类似 ->

的工具

http://www.rohitab.com/apimonitor

您需要中断系统范围的调用 https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-exitprocess 等,然后您将获得该内存当您需要时,即可使用上述程序。

从那里你应该已经准备好继续调试(以及有问题的内存地址,只需在断点命中时设置一个监视即可。)

© www.soinside.com 2019 - 2024. All rights reserved.