|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
已经 用 HANDLE porhnd = OpenProcess(PROCESS_VM_READ|PROCESS_QUERY_INFORMATION,false,p32.th32ProcessID);
得到QQ进程的进程ID 但调用
VirtualQueryEx(porhnd,SystemInfo.lpMinimumApplicationAddress,mbi,sizeof(mbi));
方法的时候 没有正确的得到地址 求教那里写错了 非常感谢
下面是完整代码
void getQQProcess(){
PROCESSENTRY32 p32;
BYTE arBytes[4096];
p32.dwSize = sizeof(p32);
HANDLE processPic = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(processPic==INVALID_HANDLE_VALUE){
MessageBox(NULL,"open process table wrong","error",NULL);
}
BOOL pro = Process32First(processPic,&p32);
while(pro){
//如果进程名字 为QQ.exe 进行下一不操作
if(strcmp(p32.szExeFile,"QQ.exe")==0){
//get process handler
HANDLE porhnd = OpenProcess(PROCESS_VM_READ|PROCESS_QUERY_INFORMATION,false,p32.th32ProcessID);
if(porhnd==NULL){
MessageBox(NULL,"OperProcess error","error",NULL);
}
SYSTEM_INFO SystemInfo;
GetSystemInfo(&SystemInfo);
PMEMORY_BASIC_INFORMATION mbi;
DWORD vtq = VirtualQueryEx(porhnd,SystemInfo.lpMinimumApplicationAddress,mbi,sizeof(mbi));
if(vtq==0){
MessageBox(NULL,"VirtualQueryEx error","error",NULL);
return;
}
//得到类型
if(mbi->Protect==PAGE_READWRITE && mbi->Type==MEM_PRIVATE){
//读取进程内存
if(ReadProcessMemory(porhnd,(LPVOID)vtq,arBytes,4096,NULL)){
}else{
MessageBox(NULL,"Read Process Memory error","error",NULL);
return;
}
}
}
pro =Process32Next(processPic,&p32);
}
|
|