- 注册时间
- 2011-3-6
- 最后登录
- 1970-1-1
该用户从未签到
|
- HWND hRemoteWindow=::FindWindow(NULL,"LocalTest"); //LocalTest 是我自己测试的窗口
-
- if (NULL==hRemoteWindow)
- {
-
- AfxMessageBox("窗口未找到!");
- return;
-
- }
- DWORD processid;
- ::GetWindowThreadProcessId(hRemoteWindow,&processid);
- HANDLE hRemoteProcess =::OpenProcess(PROCESS_ALL_ACCESS,false,processid);
- //取路径字符串首地址
- char pBuf[MAX_PATH];
- GetCurrentDirectory(MAX_PATH,pBuf);
- strcat(pBuf,"\");
- strcat(pBuf,"Test.dll"); //测试DLL名字为Test.dll
- char * pszLibFileName= pBuf;
- int cch = 1 + lstrlenA(pszLibFileName);
- int cb= cch * sizeof(char);
- LPVOID pszLibFileRemote = (char*) VirtualAllocEx( hRemoteProcess,
- NULL,
- cb,
- MEM_COMMIT
- /*|MEM_RESERVE*/,
- PAGE_READWRITE/*_EXECUTE*/);
- ::WriteProcessMemory( hRemoteProcess,
- pszLibFileRemote,
- (PVOID) pszLibFileName,
- cb,
- NULL);
- PTHREAD_START_ROUTINE pfnThreadRtn = (PTHREAD_START_ROUTINE)
- ::GetProcAddress(::GetModuleHandle(TEXT("Kernel32")), "LoadLibraryA");
- HANDLE hThread = ::CreateRemoteThread(hRemoteProcess,NULL,0,
- pfnThreadRtn, pszLibFileRemote,0,NULL);
- WaitForSingleObject(hThread, INFINITE);
- CloseHandle(hThread);
- VirtualFreeEx(hRemoteProcess, 0, cb, NULL);
- CloseHandle(hRemoteProcess);[/post]
复制代码 |
|