首页
社区
课程
招聘
[求助]ReadProcessMemory 函数的一个 bug!
发表于: 2007-11-12 11:23 5505

[求助]ReadProcessMemory 函数的一个 bug!

2007-11-12 11:23
5505
今天写如下代码时,发现目标进程 qq.exe 的内存使用量从 20 mb 一直狂升至 120mb.开始怀疑是读取了不存在的内存失败,但被否决了,因为一般进程的用户区内存 90% 都是不可读的

根据猜测,很有可能是加载的 DLL 被复制了一份,即开启了 写时复制  机制,但是只是读取操作,没有任何写入操作呀,怎么会引发写时复制呢?难道是MIcrosoft的又一个 bug?

目标进程 QQ.exe 所有加载的dll的内存占用量跟多增加的这 100MB 也很吻合!

LPCSTR lpStartMemory;
BYTE lpBuf[4096];
DWORD wlen;
BOOL ret;

DWORD pid=GetPidByName("qq.exe");
HANDLE hProcess=OpenProcess(PROCESS_VM_READ,FALSE,pid);

FILE* fp=fopen("qq.dat","wb");

for(lpStartMemory=0;lpStartMemory<(LPCSTR)0x80000000;lpStartMemory+=4096)
{
  ret=ReadProcessMemory(hProcess,lpStartMemory,lpBuf,4096,&wlen);
  if(ret==TRUE && wlen==4096)
  {
   fwrite(lpBuf,1,4096,fp);
  }
}
fclose(fp);
CloseHandle(hProcess);

MyBlog: 286K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0D9L8$3N6Q4x3X3g2U0M7$3c8F1i4K6u0W2L8X3g2@1i4K6u0r3M7$3E0&6K9%4u0F1L8l9`.`.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
2
这让我想起了在局域网中访问共享文件时,如果直接执行的话,会占用被访问的电脑的CPU/memory
2007-11-12 13:17
0
雪    币: 66
活跃值: (16)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
局域网中访问共享文件时,如果直接执行的话,会占用被访问的电脑的CPU/memory

……………………  太恐怖了。。
2007-11-15 16:08
0
雪    币: 299
活跃值: (25)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
4
这让我想起打开看雪网页的时候,会占用网站服务器的CPU/memory
2007-11-16 14:28
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
有没有人分析过该函数?
2007-11-17 09:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这让我想起打开看雪网页的时候,会占用网站服务器的CPU/memory

……………………  太恐怖了。。
2007-11-17 12:04
0
雪    币: 424
活跃值: (2504)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
好好的帖子被我糟蹋了……
2007-11-17 19:31
0
游客
登录 | 注册 方可回帖
返回