我想知道是否可以使用C/C++访问直接内存块并获取值。例如:访问直接内存地址并获取C++中的值
int i = 15;
int *p = &i;
cout << &i;
如果我把打印的价值在这里,那会给我的变量i,后者含有值15.我只想说这打印出来0x0ff9c1在这个例子中的地址。如果我有一个单独的程序,它声明,像这样的指针...
int *p = 0x0ff9c1;
cout << *p;
是否可以打印出15放置在内存块0x0ff9c1其他应用程序?我知道我的指针声明与内存地址是不正确的,我不确定如何去做,否则。我曾尝试使用memcopy
,但我还没有能够得到这个工作。我知道这是可能的,因为我有一个名为Cheat Engine的程序,它修改游戏内存地址值以获得不公平的优势。我已经成功地放置了打印的内存位置并通过作弊引擎获得了值(15)。我的目标是使用C++来做到这一点。 如果这太混乱了,基本上我想访问另一个应用程序使用其内存地址存储的变量并打印出该值。如果有问题,我正在使用Windows 7 x64和MinGW编译器。谢谢! PS:我会张贴一张关于Cheat Engine做什么的图片来提供一个更好的主意。
+1。 – Nawaz
读一本关于虚拟内存的书。作为附加说明:linux和一些新版本的Windows采用堆栈随机化,所以程序执行时局部变量的地址会有所不同。 – unkulunkulu
是的,虽然我发现了实验。我正在考虑通过执行参数将地址导出到第二个程序。我会研究虚拟内存,谢谢你的提示。 – llk