64,646
社区成员
发帖
与我相关
我的任务
分享
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);