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

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

2007-11-12 11:23
5306
今天写如下代码时,发现目标进程 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: http://blog.csdn.net/skykrnl

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 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
雪    币: 454
活跃值: (1673)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
好好的帖子被我糟蹋了……
2007-11-17 19:31
0
游客
登录 | 注册 方可回帖
返回
//