DLL注入可用于编写外挂和病毒不易发现。
void CInjectDllToolDlg::StartInject(char *path, int pid)
{
int pathLen = strlen(path)+sizeof(char);//获取dll目录大小
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
if (!hPro)
{
MessageBox("打开进程失败", "警告", 0);
return;
}
//在该进程申请内存,用来存放path数据
LPVOID dllAddr = VirtualAllocEx(hPro, NULL, pathLen, MEM_COMMIT, PAGE_READWRITE);
if (!dllAddr)
{
MessageBox("获取地址失败", "警告", 0);
CloseHandle(hPro);
return;
}
//在申请的内存中写入path
DWORD wNum = 0;
if (!WriteProcessMemory(hPro, dllAddr, path, pathLen, &wNum))
{
MessageBox("写入失败", "警告", 0);
VirtualFreeEx(hPro, dllAddr, pathLen, MEM_DECOMMIT);
CloseHandle(hPro);
return;
}
//获取loadlibrary函数地址
FARPROC pFun = GetProcAddress(GetModuleHandle("kernel32.dll"),