ReadProcessMemory使用问题
BYTE *lpBuf;
lpBuf=(BYTE*)malloc(10);
int i;
for(i=0;i<10;i++){
lpBuf[i]='0'+i;
}
STARTUPINFO si;
memset(&si,0,sizeof(si));
si.cb=sizeof(si);
PROCESS_INFORMATION pi;
memset(&pi,0,sizeof(pi));
TCHAR thrFile[50];
GetModuleFileName(NULL,thrFile,50);
CreateProcess(NULL,thrFile,0,0,false,CREATE_SUSPENDED,0,0,&si,&pi);
HANDLE hProc;
HANDLE hThr;
hProc=pi.hProcess;
hThr=pi.hThread;
CONTEXT ctx;
ctx.ContextFlags=CONTEXT_FULL;
GetThreadContext(hThr,&ctx);
unsigned long lpBase;
ReadProcessMemory(hProc,(void*)(ctx.Ebx+8),&lpBase,sizeof(unsigned long),NULL);
unsigned long (_stdcall *pFun)(unsigned long,unsigned long);
pFun=(unsigned long(_stdcall *)(unsigned long,unsigned long))GetProcAddress(LoadLibrary(L"ntdll.dll"),"ZwUnmapViewOfSection");
pFun((unsigned long)hProc,lpBase);
void *pt;
pt=VirtualAllocEx(hProc,0,10,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
memset(pt,0,10);
unsigned long old;
WriteProcessMemory(hProc,pt,lpBuf,10,&old);
//memmove(pt,lpBuf,10);
for(i=0;i<10;i++)
printf("%d---%d\n",lpBuf[i],*((BYTE *)pt+i));
TerminateProcess(hProc,0);
CloseHandle(hProc);
CloseHandle(hThr);
free(lpBuf);
大家运行一下这个代码,为什么没有将lpBuf的内容拷贝到pt中去呢?
如果使用memmove就可以