DLL注入讨论
HANDLE hProcess,hThread; PWSTR pszLibFileRemote; ModifyPriles();//提权 hProcess=::OpenProcess(PROCESS_CREATE_THREAD|PROCESS_VM_OPERATION|PROCESS_VM_WRITE,FALSE,dwProcessId); if (hProcess==NULL ) return FALSE; int cch=lstrlen(pszLibFile)+1; int cb=cch*sizeof(WCHAR); pszLibFileRemote=(PWSTR)::VirtualAllocEx(hProcess,NULL,cb,MEM_COMMIT, PAGE_EXECUTE_READWRITE); if (pszLibFileRemote==NULL) return FALSE; DWORD dwWritten; if(!WriteProcessMemory(hProcess,pszLibFileRemote,(PVOID)pszLibFile,cb,&dwWritten)) return FALSE; LPTHREAD_START_ROUTINE pfnThread=(LPTHREAD_START_ROUTINE )::GetProcAddress(::GetModuleHandle(_T("Kernel32")),"LoadLibraryA"); if (pfnThread==NULL) return FALSE; DWORD id; hThread=CreateRemoteThread(hProcess,NULL,0,pfnThread,pszLibFileRemote,0,&id); if(hThread==NULL) return FALSE; WaitForSingleObject(hThread,INFINITE); if(pszLibFileRemote!=NULL) VirtualFreeEx(hProcess,pszLibFileRemote,0,MEM_RELEASE); if(hThread!=NULL) CloseHandle(hThread); if(hProcess!=NULL) CloseHandle(hProcess);