访问其他应用程序C ++的内存

| 我正在考虑我已经存在一段时间的问题。.我想编写一个C / C ++程序(首先在Windows下),该程序可以访问(读取/更改值)内存(堆栈,堆,所有内容)其他正在运行的程序。 (不像共享内存,而是计算机拥有的任何内存。。)而不必从我自己的应用程序中启动该应用程序。 我以前见过类似的东西,但是我无法弄清楚它是如何完成的。如果我要访问任何正在运行的程序的内存,我会从OS中得到错误信息吗? 任何帮助表示赞赏!     
已邀请:
正如@sharptooth所说,这需要操作系统的支持。不同的操作系统做的方式不同。由于您使用的是Windows,因此可以执行一些步骤: 呼叫
OpenProcess
CreateProcess
进行访问或启动新进程。在此呼叫中,您必须请求
PROCESS_VM_READ
访问权限。 在打开的进程中调用ѭ3读取一块内存。 如果要更改另一个进程的内存,则需要
PROCESS_VM_WRITE
访问权限并使用
WriteProcessMemory
来实现。 例如,在Linux中,您将使用ptrace附加到进程并窥视其内存。     
您可以从自己的应用程序启动一个进程(另一个程序),并访问其某些信息(尤其是共享内存)。相反是非常困难的,CPU会伪造内存地址,因此每个进程都认为它拥有整个可用内存...     
您可能有兴趣查看
Toolhelp32ReadProcessMemory
函数。     

要回复问题请先登录注册