【发布时间】:2016-02-19 15:30:35
【问题描述】:
visual studio screenshot with memory window open
您好,请问有人可以给我一些信息吗?
我在 exe1 中有这段代码:
int number = 100;
int* p = &number; // p = 0x0050f594
p指向内存地址0x0050f594
在另一个程序 exe2 中,我有这个:
int* p = (int*)0x0050f594;
所以对我来说,来自 exe2 的 p 指向来自 exe1 的变量号。
我认为这与在自己的地址空间中运行的不同应用程序有关,但是我仍然想知道如何使exe2的p指针指向exe1中的数字变量?
【问题讨论】:
-
你不能,除非你运行的是旧的 MS DOS。或者使用一些共享内存。
-
Ollydbg、IDA Pro 等都可以做到。
-
你可以使用
WriteProcessMemory之类的东西。不过,我不知道您为什么要这样做,除非您正在编写调试器。这是可怕的应用程序设计。如果您需要在进程之间共享数据,请使用memory-mapped file。 -
@CodyGray 作弊引擎可能是另一个动机。
-
嗯,关键是除非你真的在写调试器,否则不值得学习。这是一个非常高级的任务,如果你问这个问题,可能你还不应该承担。 :-) 出于学习目的,了解建筑设计更为重要,purplepsycho 有你的答案。