VC远程调用CAll,高手在那里?小弟求帮
主要代码如下
DWORD GetProcessIDByName(char *name){ PROCESSENTRY32 entry; entry.dwSize=sizeof(entry); HANDLE handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); bool tap=Process32First(handle,&entry); while(tap) { if(strcmp(entry.szExeFile,name)==0) return entry.th32ProcessID; tap=Process32Next(handle,&entry); } return -1; }void M_InfusionFunc(DWORD pid,LPVOID mfun){ HANDLE hProcess;//远程句柄 LPVOID mFuncAddr;//申请函数内存地址 HANDLE hThread; //线程句柄 DWORD NumberOfByte; //辅助返回值 CString str; //打开被注入的进程句柄 hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid); //申请内存 mFuncAddr = VirtualAllocEx(hProcess,NULL,128,MEM_COMMIT,PAGE_EXECUTE_READWRITE); //写内存 WriteProcessMemory(hProcess,mFuncAddr,mfun,128, &NumberOfByte); //创建远程线程 hThread = CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)mFuncAddr, 0,0,&NumberOfByte); WaitForSingleObject(hThread, INFINITE); //等待线程结束 //释放申请有内存 VirtualFreeEx(hProcess,mFuncAddr,128,MEM_RELEASE); //释放远程句柄 CloseHandle(hThread); CloseHandle(hProcess); } void AddHP(){ __asm mov ebx,0x00994818 __asm mov edx,ebx __asm mov eax,[ebx+0x124] __asm call [ebx+0x120]} void CCodeDlg::OnButton1() { // TODO: Add your control notification handler code here DWORD id=GetProcessIDByName("游戏找CALL练习实例one.exe"); M_InfusionFunc(id,AddHP); }