- 注册时间
- 2011-3-10
- 最后登录
- 1970-1-1
该用户从未签到
|
发表于 2011-3-17 14:24:30
|
显示全部楼层
BOOL CSelectGameDialog::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
int i ;
int theloop;
// Dim ret
;PROCESSENTRY32 proc;
HANDLE snap,hProcess;
CString exename;
DWORD personBase;
DWORD name_temp;
DWORD ecx;
char name[32];//人物名
WCHAR personname[32];//存储人物名称
BYTE nInsertPos;
gBaseAddress=0x12f82c;
snap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0) ;//获得进程“快照”的句柄
proc.dwSize = sizeof(proc);
theloop = Process32First(snap, &proc) ;//获取第一个进程,并得到其返回值
i = 0;
m_comboxUsername.Clear();
while( theloop !=0 )//当返回值非零时继续获取下一个进程
{
exename = proc.szExeFile;
if(strstr(exename, "elementclient")!=NULL)
{
hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, proc.th32ProcessID);
if (hProcess)
{
DWORD tempAddress;
ReadProcessMemory(hProcess,(LPCVOID)gBaseAddress,&tempAddress, 4, 0);
ReadProcessMemory(hProcess, (LPCVOID)(tempAddress + 0x24),&personBase, 4, 0) ;// '得到为人物基地址,方便以后使用
ReadProcessMemory(hProcess,(void*)(tempAddress+8),&tempAddress,4,0);
ReadProcessMemory(hProcess,(void*)(tempAddress+0x20),&ecx,4,0);
ReadProcessMemory (hProcess, (LPCVOID)(personBase + 0x390), &name_temp, 4, 0);
//personname(0) = 0
ReadProcessMemory (hProcess, (LPCVOID)name_temp, personname, 32, 0); // '得到人物名称
WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,personname,-1,name,sizeof(name),NULL,NULL);
nInsertPos=m_comboxUsername.GetCount();
m_comboxUsername.InsertString(nInsertPos,name);
strcpy(myprocessinfo[nInsertPos].name,name);
myprocessinfo[nInsertPos].personBase=personBase;
myprocessinfo[nInsertPos].ecx=ecx;
myprocessinfo[nInsertPos].hProcess=hProcess;
myprocessinfo[nInsertPos].pid=proc.th32ProcessID;
CloseHandle(hProcess);
}
// i = i + 1
// End If
}
theloop = Process32Next(snap, &proc);
//Wend
}
CloseHandle(snap);//关闭进程“快照”句柄
// if(nInsertPos>=0)
// {
// EnumStruct *pEnumStruct=new EnumStruct;
// pEnumStruct->p=myprocessinfo;
// pEnumStruct->number=nInsertPos+1;
// pEnumStruct->NumOffound=0;
// EnumWindows((WNDENUMPROC)myEnumWindows,(LPARAM)pEnumStruct);
// }
m_comboxUsername.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
} |
|