如何运行外部程序,将其内存地址传递给其进行读写操作?

时间:2018-09-06 19:48:40

标签: c++ windows c++03

假设我有两个程序,Game.exeProbe.exe

这两个都是我正在编写的程序(这不是我要侵入我不拥有的可执行文件的情况)。我希望ProbeGame运行,并被赋予Game中某些全局变量的地址,以便Probe可以对其进行读写,以用于调试。

Probe运行Game并将有效地址分配到Game可以读取/写入的内存中,这是一种安全的方法?如果不可能仅通过地址来做到这一点,那么使之成为可能的最不侵入性的方法是什么?

1 个答案:

答案 0 :(得分:4)

Game.exe可以在启动Probe.exe时将所需的内存地址作为命令行参数传递。

Probe.exe可以从命令行检索那些内存地址,然后使用ReadProcessMemory()WriteProcessMemory()来访问它们。为此,Probe.exe还必须获得HANDLE流程的Game.exe

  • Game.exe可以将其进程ID作为命令行参数传递,然后Probe.exe可以将该ID传递给OpenProcess()

话虽这么说,更安全选项是将所需变量简单地存储在bInheritHandles=TRUEGame.exe都可以使用{{3}共享的内存块中}和Programmatically controlling which handles are inherited by new processes in Win32