代码注入-dll注入

本文深入讲解了DLL注入技术,通过代码示例展示了如何利用Windows API函数OpenProcess、VirtualAllocEx、WriteProcessMemory和CreateRemoteThread等,实现在指定进程中加载DLL文件的过程。此技术常用于软件调试、功能增强或恶意软件传播。

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

// 代码注入


#include <iostream>
#include <Windows.h>



bool InjectDll(DWORD dwPID, LPCTSTR szDLLPath)
{
	HANDLE hProcess = NULL, hThread = NULL;
	DWORD BufSize = (DWORD)(strlen(szDLLPath) + 1) * sizeof(TCHAR);
	/*-------------打开需要注入的进程-------------*/
	if (!(hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID)))
	{
		printf("OpenProcess(%d) Open Fail:[%d]", dwPID, GetLastError());
		return 0;
	}
	/*------------向目标进程开辟内存空间-----------*/
	LPVOID pRemoteBuf = VirtualAllocEx(hProcess, NULL, BufSize, MEM_COMMIT, PAGE_READWRITE);
	/*------------将目标路径写入进程---------------*/
	WriteProcessMemory(hProcess, pRemoteBuf, (LPVOID)szDLLPath, BufSize, NULL);
	/*-----------获取LoadLibrary地址--------------*/
	HMODULE hMod = GetModuleHandle("kernel32.dll");
	FARPROC pThreadProc = GetProcAddress(hMod, "LoadLibraryA");
	/*------------调用远程线程加载DLL--------------*/
	hThread = CreateRemoteThread(hProcess,
		NULL,
		0,
		(LPTHREAD_START_ROUTINE)pThreadProc,  //远程线程LaodLibrary
		pRemoteBuf,   //参数,DLL的路径
		0,
		NULL);
	CloseHandle(hProcess);
	CloseHandle(hThread);
	return 1;
}

int main()
{
	InjectDll(7388,"C:\\Users\\admin\\Desktop\\测试\\xxxx.dll");
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值