// 代码注入
#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");
}