当前位置:  开发笔记 > 编程语言 > 正文

从固定内存偏移量获取值:Visual C++编程

如何解决《从固定内存偏移量获取值:VisualC++编程》经验,为你挑选了1个好方法。

我想编写一个简单的应用程序,能够从另一个进程(应用程序)的已分配内存中检索某些特定数据.

假设我已经知道一个进程'id并且我想在这个进程中获得一个值'内存总是来自一个固定的偏移量(如0x523F1C),这在用户模式下是可行的,还是必须在内核模式下?

任何提示或信息都非常感谢.

我的环境是Windows XP,我使用Visual C++和Qt进行GUI.

提前致谢 :)

编辑:

(a)谢谢你们.基本上它正在工作(当设置一个断点并挂钩它正确的值),但是当做正常的释放构建时,获得的值总是初始化:(

必须更加努力才能弄明白......

(b)由于我试图获取价值的应用程序不是由我编写的,我还可以进行进程间通信/共享内存技术吗?

编辑2:

再次感谢您的快速反应!:d



1> James Ogden..:

使用ReadProcessMemory - 你需要一个具有PROCESS_VM_READ访问权限的句柄来访问另一个进程[1],但是如果你是管理员(或者如果你有SE_DEBUG privs),它应该是直截了当的.

BOOL WINAPI ReadProcessMemory(
  __in   HANDLE hProcess,
  __in   LPCVOID lpBaseAddress,
  __out  LPVOID lpBuffer,
  __in   SIZE_T nSize,
  __out  SIZE_T* lpNumberOfBytesRead
);

[1]

HANDLE hProc = OpenProcess(PROCESS_VM_READ, false, pid);

编辑:b)不,除非您使用CreateRemoteThread - 但您通常需要将自己的DLL填充到远程进程中,然后才能在该进程中有意义地创建线程.这是先进的,有趣的和危险的:)

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有