C++ 从另一个进程中查找变量的地址

C++ 从另一个进程中查找变量的地址,c++,pointers,memory,C++,Pointers,Memory,嗨,我想知道是否有人能给我一些关于某事的信息 我在exe1中有这个代码: int number = 100; int* p = &number; // p = 0x0050f594 p指向内存地址0x0050f594 在另一个程序exe2中,我有: int* p = (int*)0x0050f594; 对我来说,exe2中的p,指向exe1中的变量数 我认为这与在自己的地址空间中运行的不同应用程序有关,但我仍然想知道如何使exe2的p指针指向exe1中的数字变量?在现代操作系统中,

嗨,我想知道是否有人能给我一些关于某事的信息

我在exe1中有这个代码:

int number = 100;
int* p = &number;  // p = 0x0050f594
p指向内存地址0x0050f594

在另一个程序exe2中,我有:

int* p = (int*)0x0050f594;
对我来说,exe2中的p,指向exe1中的变量数


我认为这与在自己的地址空间中运行的不同应用程序有关,但我仍然想知道如何使exe2的p指针指向exe1中的数字变量?

在现代操作系统中,进程是孤立的。每个进程都有自己的内存。操作系统负责将进程内存地址(当进程要读或写内存时)转换为物理地址

如果您没有操作系统,或者没有简单的(嵌入式平台),或者您正在编写内核模式驱动程序,那么您可以直接访问物理内存


对于x86处理器,读取和可能会很有趣。

好的,这里需要的是进程间通信,通常称为(IPC)。这在Linux或windows中都可用。因此,通过使用任何IPC机制,您只需将值传输到另一个进程,然后就可以执行所需的操作

这不是你问题的直接答案,但是,你可以一直朝着这个方向前进并检查


希望这能有所帮助。

除非您运行的是旧的MS DOS,否则您不能这样做。或者使用一些共享内存。Ollydbg、idapro等都可以做到这一点。您可以使用类似于
WriteProcessMemory
的东西。我不知道你为什么要这么做,除非你在写一个调试器。这是可怕的应用程序设计。如果您需要在进程之间共享数据,请使用@CodyGray作弊引擎可能是另一个动机。问题是,除非您实际编写了调试器,否则它不值得学习。这是一个非常糟糕的高级任务,如果你问这个问题的话,可能你还不应该承担这个任务。:-)出于学习目的,理解建筑设计更为重要,purplepsycho有你的答案。