C++ 访问其他应用程序的内存C++;
我在想一个我已经有一段时间了的问题。。我想写一个C/C++程序(首先在windows下),可以访问(读取/更改值)其他运行程序的内存(堆栈、堆、所有内容)。(不像共享内存,而是计算机拥有的任何内存…)无需从我自己的应用程序启动应用程序。。 我以前见过这样的事情,但我就是不知道是怎么做到的。。如果我访问任何正在运行的程序的内存,我会从操作系统中得到错误,对吗?C++ 访问其他应用程序的内存C++;,c++,memory-access,C++,Memory Access,我在想一个我已经有一段时间了的问题。。我想写一个C/C++程序(首先在windows下),可以访问(读取/更改值)其他运行程序的内存(堆栈、堆、所有内容)。(不像共享内存,而是计算机拥有的任何内存…)无需从我自己的应用程序启动应用程序。。 我以前见过这样的事情,但我就是不知道是怎么做到的。。如果我访问任何正在运行的程序的内存,我会从操作系统中得到错误,对吗? 感谢您的帮助 您可能有兴趣查看该函数。您可以从自己的应用程序启动一个进程(另一个程序),并访问它的一些信息(特别是共享内存)。相反,这是非
感谢您的帮助 您可能有兴趣查看该函数。您可以从自己的应用程序启动一个进程(另一个程序),并访问它的一些信息(特别是共享内存)。相反,这是非常困难的,CPU伪造内存地址,因此每个进程都认为它拥有全部可用内存…正如@sharptooth所说,这需要操作系统的支持。不同的操作系统做的不同。由于您使用的是Windows,因此可以执行以下几个步骤:
OpenProcess
,或CreateProcess
访问或启动新流程。在此调用中,您必须请求PROCESS\u VM\u READ
accessReadProcessMemory
读取已打开进程中的内存块process\u VM\u WRITE
访问并使用WriteProcessMemory
来实现这一点
例如,在Linux中,您可以使用ptrace连接到进程并查看、戳它的内存。这表示它复制内存。。但我希望能够更改正在运行的程序的值..抱歉,我不够清楚。。我想更改一些已经运行的程序的值。谢谢,这很有帮助!所以底线是,我必须深入研究操作系统api?恐怕这正是你需要做的。