可以读取进程内存,但无法写入相同的内存内容

时间:2017-04-26 17:56:44

标签: c++ windows process virtualbox

我在进程中使用MEM_COMMIT枚举所有内存块,并在读取内存块后立即尝试写入相同的内容。因此大多数内存块都有一个Protect of 4,即PAGE_READWRITE。我注意到有很多内存块可以读取,但无法写入。典型输出如下:

  Reading : 0x012C0000 - Size : 10000 - Protect : 4
The same contents written successfully!!!
  Reading : 0x012D0000 - Size : 10000 - Protect : 4
The same contents written successfully!!!
  Reading : 0x012E0000 - Size : 10000 - Protect : 4
The same contents written successfully!!!
  Reading : 0x012F0000 - Size : 2000 - Protect : 4
The same contents written successfully!!!

但是,大多数其他内存块都可以读取但无法写入。

  Reading : 0x31340000 - Size : 200000 - Protect : 4
Failed to write the same memory contents.
  Reading : 0x31540000 - Size : 200000 - Protect : 4
Failed to write the same memory contents.
  Reading : 0x31740000 - Size : 200000 - Protect : 4
Failed to write the same memory contents.
  Reading : 0x31940000 - Size : 200000 - Protect : 4
Failed to write the same memory contents.

有什么理由吗?现在我无法改变我想要修改的内存。我正在使用Windows XP 32位并启用了我的进程权限,并使用此标志打开进程:

PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_VM_OPERATION

目标进程是我用于测试的VirtualBox进程。

修改:我使用了GetLastError(),返回的错误是"尝试访问无效地址"

0 个答案:

没有答案