从另一个进程中查找变量的地址
Finding the address of a variable from another process
Visual Studio 屏幕截图,内存窗口打开
嗨,我想知道是否有人可以给我一些关于某事的信息?
假设我有两个程序,program1
和program2
。
我在program1
有这段代码:
int number = 100;
int* p = &number; // p = 0x0050f594
p
指向内存地址0x0050f594
在program2
我有这个:
int* p = (int*)0x0050f594;
所以对我来说,p
来自 program2
,指向来自 program1
的变量数。
我认为这与在自己的地址空间中运行的不同应用程序有关,但我仍然想知道如何使program2
的p
指针指向 program1
的数字变量?
在现代操作系统中,进程是隔离的。每个进程都有自己的内存。操作系统负责将进程内存地址(当进程想要读取或写入内存时)转换为物理地址。
如果您没有操作系统或简单(嵌入式平台),或者如果您正在编写内核模式驱动程序,则可以直接访问物理内存。
对于x86处理器,读取 https://en.wikipedia.org/wiki/Protected_mode 和 https://en.wikipedia.org/wiki/Real_mode 可能会很有趣。
好的,这里需要的是进程间通信,通常称为(IPC)。这在Linux或Windows中都可用。因此,通过使用任何IPC机制,您只需将值传输到其他进程,然后就可以执行所需的操作。
这不是您问题的直接答案,但是,您可以随时朝这个方向前进并检查。
希望这有帮助。
相关文章:
- 附加调试器并以编程方式获取变量地址 Visual Studio
- 变量地址的运算符[]是如何工作的
- C 给出了一个字符串列表,如何从类中获取各个变量地址
- 从函数返回变量地址时如何修复"与局部变量关联的堆栈内存地址"?
- 获取封装在命名空间中的静态变量地址
- 为什么分配的变量地址之间相差 16 个字节?
- 为什么在循环中定义的变量地址在每次迭代中都保持不变
- 是否可以使用指向语句中声明的变量地址的指针"if"
- 字符串从变量(&变量)地址的长度 - 嵌入式C
- 汇编:C++堆栈变量地址不同/错误?
- x 在变量地址中的意义是什么?
- 在哪里放置 HW BP 以捕获全局变量地址损坏
- C++变量地址不匹配
- 重载 std::ostream 运算符<<未调用,stream 获取变量地址而不是对象
- std矢量包含指针和变量地址.清理
- 注册变量地址
- 使用内联程序集获取变量地址
- 如果用调试信息编译,则通过其名称获取全局变量地址
- 如何在Visual Studio中复制变量地址
- 当堆栈内存中的变量地址分配给数据段或堆内存中的指针时,是否有任何错误?