使用ReadProcessMemory </string,>读取std :: map <string,string =“”>

时间:2015-03-29 18:05:13

标签: c++ memory win32-process

我的目的是从进程(间谍)中读取另一个进程(目标)的变量值。

我开始在目标进程中使用大小为2的std :: map。

在间谍过程中,遵循以下步骤:

  • 将UAC执行级别设置为“requireAdministrator(/ level ='requireAdministrator')”
  • 已启用SE_DEBUG_NAME
  • 打开目标流程
  • 使用过ReadProcessMemory

并成功阅读地图。我验证了读取地图的大小是2.但是,无法评估地图的内容。观察每个字符串键/值对以评估监视窗口中的错误。

要确认我的步骤是否正确,我尝试读取整数变量而不是地图。可以成功检索整数的值。

有助于检索地图完整内容的任何建议吗?

2 个答案:

答案 0 :(得分:1)

除了节点计数之外,map对象还包含指向节点的指针。您还需要在这些指针上使用ReadProcessMemory。如果您将节点内容读取到进程地址空间中的不同地址,则需要更新节点指针。

答案 1 :(得分:0)

如果您拥有这两个应用程序,是否可以使用共享内存(CreateFileMapping / OpenFileMapping和MapViewOfFile)以更简单的方式执行此操作?然后,您可以使用特定于会话的互斥锁保护它,序列化映射,将其写入共享内存,然后在更改时发出特定于会话的事件。