我正在考虑一段时间以来一直存在的问题..我想编写一个C/C++程序(在Windows下首先),可以访问(读取/更改值)内存(堆栈,堆,一切)其他运行程序.(不像共享内存,但计算机有任何内存......)无需从我自己的应用程序启动应用程序..我以前见过这样的东西,但我无法弄清楚它是如何完成的..如果我是访问任何正在运行的程序的内存我会从操作系统中获得错误吗?任何帮助表示赞赏!
正如@sharptooth所说,这需要操作系统的支持.不同的OS有不同的做法.由于您使用的是Windows,因此可以执行以下几个步骤:
OpenProcess,或CreateProcess访问或启动新流程.在此调用中,您必须请求PROCESS_VM_READ访问权限.ReadProcessMemory在该打开的进程中读取一块内存.如果您想更改另一个进程的内存,则需要PROCESS_VM_WRITE访问并使用它WriteProcessMemory来实现.
例如,在Linux中,您将使用ptrace附加到进程并查看其内存.