远程线程注入

时间:2020-04-22
本文章向大家介绍远程线程注入,主要包括远程线程注入使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

步骤:

  1. 打开目标进程
  2. 在目标进程中申请空间
  3. 将要注入的Dll路径写入刚申请的空间中
  4. 获取LoadLibrary函数地址
  5. 在目标进程中创建线程,线程回调函数就是LoadLibrary函数,回调函数参数就是要注入的Dll路径
  6. 等待线程结束
  7. 清理环境

代码如下:

BOOL CBiaoBai1Dlg::CreateRemoteThreadInjectDll(DWORD dwProcessId, char* pszDllFileName)
{
	// 1.打开目标进程
	HANDLE hProcess = OpenProcess(
		PROCESS_ALL_ACCESS,		// 打开权限
		FALSE,					// 是否继承
		dwProcessId);			// 进程PID
	if (NULL == hProcess)
	{
		MessageBox("打开目标进程失败!");
		return FALSE;
	}

	// 2.在目标进程中申请空间
	LPVOID lpPathAddr = VirtualAllocEx(
		hProcess,					// 目标进程句柄
		0,							// 指定申请地址
		strlen(pszDllFileName) + 1,	// 申请空间大小
		MEM_RESERVE | MEM_COMMIT,	// 内存的状态
		PAGE_READWRITE);			// 内存属性
	if (NULL == lpPathAddr)
	{
		MessageBox("在目标进程中申请空间失败!");
		CloseHandle(hProcess);
		return FALSE;
	}

	// 3.在目标进程中写入Dll路径
	SIZE_T dwWriteSize = 0;
	if (FALSE == WriteProcessMemory(
		hProcess,					// 目标进程句柄
		lpPathAddr,					// 目标进程地址
		pszDllFileName,					// 写入的缓冲区
		strlen(pszDllFileName) + 1,	// 缓冲区大小
		&dwWriteSize))				// 实际写入大小
	{
		MessageBox("目标进程中写入Dll路径失败!");
		CloseHandle(hProcess);
		return FALSE;
	}

	//获取LoadLibraryA的函数地址
	//FARPROC可以自适应32位与64位
	FARPROC pFuncProcAddr = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA");
	if (NULL == pFuncProcAddr)
	{
		MessageBox("获取LoadLibrary函数地址失败!");
		CloseHandle(hProcess);
		return FALSE;
	}

	// 4.在目标进程中创建线程
	HANDLE hThread = CreateRemoteThread(
		hProcess,					// 目标进程句柄
		NULL,						// 安全属性
		NULL,						// 栈大小
		(PTHREAD_START_ROUTINE)pFuncProcAddr,	// 回调函数
		lpPathAddr,					// 回调函数参数
		NULL,						// 标志
		NULL						// 线程ID
	);
	if (NULL == hThread)
	{
		MessageBox("目标进程中创建线程失败!");
		CloseHandle(hProcess);
		return FALSE;
	}

	// 5.等待线程结束
	WaitForSingleObject(hThread, -1);

	DWORD code;
	GetExitCodeThread(hThread, &code);
	code = GetLastError();

	// 6.清理环境
	VirtualFreeEx(hProcess, lpPathAddr, 0, MEM_RELEASE);
	CloseHandle(hThread);
	CloseHandle(hProcess);
	return TRUE;
}

  

   

  

原文地址:https://www.cnblogs.com/ndyxb/p/12751827.html