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

问题描述 投票:0回答:1

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

两者都是我正在创作的程序(这不是我试图入侵我不拥有的可执行文件的场景)。我希望ProbeGame运行,并在Game中给出某些全局变量的地址,以便Probe可以读取和写入它们,以进行调试。

什么是从Probe运行Game的安全方法,并将其有效地址提供给Game的内存,它可以读/写?如果单靠地址不可能做到这一点,那么可能是最不具侵入性的方法呢?

c++ windows c++03
1个回答
4
投票

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

Probe.exe可以从命令行检索这些内存地址,然后使用ReadProcessMemory()WriteProcessMemory()来访问它们。要做到这一点,Probe.exe还必须获得HANDLE进程的Game.exe

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

要么

话虽这么说,一个更安全的选择是简单地将所需的变量存储在一个内存块中,Game.exeProbe.exe都可以使用CreateFileMapping()MapViewFromFile()共享。

© www.soinside.com 2019 - 2024. All rights reserved.