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

Finding the address of a variable from another process

本文关键字:变量 地址 查找 另一个 进程      更新时间:2023-10-16

Visual Studio 屏幕截图,内存窗口打开

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

假设我有两个程序,program1program2

我在program1有这段代码:

int number = 100;
int* p = &number;  // p = 0x0050f594

p指向内存地址0x0050f594

program2我有这个:

int* p = (int*)0x0050f594;

所以对我来说,p 来自 program2 ,指向来自 program1 的变量数。

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

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

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

对于x86处理器,读取 https://en.wikipedia.org/wiki/Protected_mode 和 https://en.wikipedia.org/wiki/Real_mode 可能会很有趣。

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

这不是您问题的直接答案,但是,您可以随时朝这个方向前进并检查。

希望这有帮助。