动态链接库(DLL)总结---DLL注入(9)

本文介绍了DLL注入技术,重点展示了如何通过代码在指定进程(如任务管理器)中实现DLL注入,包括打开进程、分配内存、写入数据、创建远程线程和等待线程结束等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/************************************************************************/
/* 方法名称:  dllInto
/* 方法全称: dllInto
/* 参数:	  DWORD dwProcId   进程号
/* 返回值:	  int
/* 说明:     DLL注入 ---------任务管理器中的一段代码
/************************************************************************/
int  dllInto(DWORD dwProcId)
{
	
	//打开进程
	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcId);
	if (hProcess == INVALID_HANDLE_VALUE)
	{
		return -1;
	}

	//在远程空间中申请空间
	LPVOID pszDllName = VirtualAllocEx(hProcess, NULL, 4096, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
	if (pszDllName == NULL)
	{
		return -1;
	}

	//向远程进程中写入数据
	if (!WriteProcessMemory(hProcess, pszDllName, m_dllPath,MAX_PATH, NULL))
	{
		return -1;
	}

	//在远程进程中创建远程线程
	HANDLE hInjecthread = CreateRemoteThread(
		hProcess,NULL,0,(LPTHREAD_START_ROUTINE)LoadLibrary,
		pszDllName, NULL, NULL);

	if (NULL == hInjecthread)
	{
		return -1;
	}

	//等待线程结束返回
	DWORD dw = WaitForSingleObject(hInjecthread, -1);

	DWORD dwExiteCode;
	GetExitCodeThread(hInjecthread, &dwExiteCode);

	HMODULE hMod = (HMODULE)dwExiteCode;


	HINSTANCE hInst = LoadLibrary(m_dllPath);



	//释放空间
	if (!VirtualFreeEx(hProcess,pszDllName,4096,MEM_COMMIT))
	{
		return -1;
	}
	CloseHandle(hProcess);
	return 1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值