我想读取进程A的内存,但是当进程A被释放时。我已经运行了A,它显示了某个变量的地址,我关闭了它。
我已经运行了 B,其中输入了 A 变量的地址。它会导致错误“访问冲突...”。
我使用 Borland C++ builder 和 Windows 7。
进程关闭时有什么方法可以查看内存吗?也许一些工具可以帮助我。你能给我在内存释放后通过绝对地址读取内存的工具名称吗?
也许应该是某种检漏仪?
关闭后不知道,但是运行时可以使用
ReadProcessMemory()
和 CreateRemoteThread
在大多数系统上,单独的进程存在于完全独立的虚拟地址空间中。 您在一个进程中看到的指针在另一个进程中完全没有意义。
因此,如果你想这样做,你必须显式地共享内存;我不是 Windows 专家,但我相信
CreateSharedMemory()
可能正是您所需要的。
您可以使用类似 ->
的工具http://www.rohitab.com/apimonitor
您需要中断系统范围的调用 https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-exitprocess 等,然后您将获得该内存当您需要时,即可使用上述程序。
从那里你应该已经准备好继续调试(以及有问题的内存地址,只需在断点命中时设置一个监视即可。)