远程线程注入代码
VOID CMFCCGamePlugDlg::Inject1()
{
HWND hWnd = FindWindowA(NULL, "扫雷");
if (NULL == hWnd)
{
MessageBoxW(L"没有找到窗口句柄", L"提示", 0);
return;
}
DWORD dwPid = -1;
GetWindowThreadProcessId(hWnd, &dwPid);
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPid);
LPVOID pAddress = VirtualAllocEx(hProcess, 0, 1, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProcess, pAddress, szPATH1, 2 * (wcslen(szPATH1) + 1), NULL);
HANDLE hThread = CreateRemoteThread(
hProcess, NULL, NULL, (LPTHREAD_START_ROUTINE)LoadLibrary,
pAddress, 0, 0);
WaitForSingleObject(hThread, -1);
CloseHandle(hProcess);
CloseHandle(hThread);
MessageBoxW(L"开启成功", L"提示");
return VOID();
}
遍历进程代码
void CMyDlg1::InitprocessList()
{
HANDLE hToolHelp = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PROCESSENTRY32 pe = {sizeof(PROCESSENTRY32)};
PROCESS_MEMORY_COUNTERS pmc;
WCHAR wcthProcessID[260];
WCHAR wcthparentProcess[260];
WCHAR wccntThreads[260];
WCHAR wcpcPriClassBase[260];
WCHAR wcProcessPath[260];
WIN32_FIND_DATA wfd;
ULONG uIndex = 0;
bool ret = Process32First(hToolHelp,&pe);
if (ret == true)
{
do
{
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,false,pe.th32ProcessID);
GetProcessMemoryInfo(hProcess,&pmc,sizeof(pmc));
GetModuleFileNameEx(hProcess,NULL, wcProcessPath,260);
if (hProcess == NULL)
{
wsprintf(wcProcessPath,L"System Module");
}
wsprintf(wcthparentProcess,L"%d",pe.th32ParentProcessID);
wsprintf(wcthProcessID,L"%d",pe.th32ProcessID);
wsprintf(wccntThreads,L"%d",pe.cntThreads);
wsprintf(wcpcPriClassBase,L"%d",pe.pcPriClassBase);
m_List1.InsertItem(uIndex,pe.szExeFile);
m_List1.SetItemText(uIndex,1,wcthparentProcess);
m_List1.SetItemText(uIndex,2, wcthProcessID);
m_List1.SetItemText(uIndex,3, wccntThreads);
m_List1.SetItemText(uIndex,4, wcpcPriClassBase);
m_List1.SetItemText(uIndex,5, wcProcessPath);
uIndex++;
} while (Process32Next(hToolHelp, &pe));
}
}