-
-
[求助]ReadProcessMemory 函数的一个 bug!
-
发表于:
2007-11-12 11:23
5309
-
[求助]ReadProcessMemory 函数的一个 bug!
今天写如下代码时,发现目标进程 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
[课程]Android-CTF解题方法汇总!