2021-09-14

远程线程注入代码


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);

	//1. 打开进程,得到句柄
	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPid);
	//2. 在对方的进程中,申请一块空间
	LPVOID pAddress = VirtualAllocEx(hProcess, 0, 1, MEM_COMMIT, PAGE_READWRITE);

	//3. 将字符串写入到对方空间中
	//DWORD dwSize = 0;

	WriteProcessMemory(hProcess, pAddress, szPATH1, 2 * (wcslen(szPATH1) + 1), NULL);

	//4. 创建一个远程线程,将LoadLibrary当作线程回调函数地址。
	HANDLE hThread = CreateRemoteThread(
		hProcess, NULL, NULL, (LPTHREAD_START_ROUTINE)LoadLibrary,
		pAddress, 0, 0);
	WaitForSingleObject(hThread, -1);
	//5. 关闭句柄。
	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];     //进程ID
	WCHAR wcthparentProcess[260];  //父进程ID
	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);


			//如果系统进程句柄打不开,置换为NULL
			if (hProcess == NULL)
			{
				wsprintf(wcProcessPath,L"System Module");
			}

			wsprintf(wcthparentProcess,L"%d",pe.th32ParentProcessID);//父进程ID
			wsprintf(wcthProcessID,L"%d",pe.th32ProcessID);//进程ID
			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));
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值