llk*_*llk 16 c++ memory pointers memory-address
我想知道是否可以使用C/C++访问直接的内存块并获取值.例如:
int i = 15;
int *p = &i;
cout << &i;
Run Code Online (Sandbox Code Playgroud)
如果我在这里取印刷值,那将给我变量i的地址,其中包含值15.我只是说它为本例打印出0x0ff9c1.如果我有一个单独的程序声明一个像这样的指针...
int *p = 0x0ff9c1;
cout << *p;
Run Code Online (Sandbox Code Playgroud)
是否有可能打印出另一个应用程序放在内存块0x0ff9c1中的15?我知道我的指针声明与内存地址不正确,我不知道如何做到这一点.我尝试过使用memcopy但是我也无法使用它.我知道这是可能的,因为我有一个名为Cheat Engine的程序,它修改游戏内存地址值以获得不公平的优势.我已成功放置打印的内存位置并通过Cheat Engine获取值(15).我的目标是使用C++来做到这一点.如果这太混乱了,基本上我想访问另一个应用程序使用其内存地址存储的变量并打印出该值.如果重要的话,我正在使用Windows 7 x64和MinGW编译器.谢谢!
PS:我会张贴一张Cheat Engine的图片,以提供更好的主意.

这两个进程具有单独的地址空间.除非是明确共享内存,否则一个进程无法访问另一个进程内存.
你不能在C++中以平台无关的方式做到这一点.虽然我没有专门使用这个"作弊引擎",但它几乎肯定使用调试器使用的相同特殊API.代码将特定于Windows,您将需要在运行过程中具有特定权限级别.
(例如,如果您使用Visual Studio并在调试模式下从中执行程序,则Visual Studio可以查看并修改该程序中的值.)
我有一段时间没有编写调试器,所以我不知道在Debug API上开始的好地方在哪里,但你可以在网上搜索这篇文章:
http://www.woodmann.com/fravia/iceman1.htm
| 归档时间: |
|
| 查看次数: |
17199 次 |
| 最近记录: |