Chinaunix首页 | 论坛 | 博客
  • 博客访问: 455340
  • 博文数量: 724
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(724)

文章存档

2011年(1)

2008年(723)

我的朋友

分类:

2008-10-13 17:22:15

BOOL WINAPI RT_CTRL_BTN(LPCSTR lpszLibFile, HWND hWnd, DWORD dwID, LPRECT pRtBtn, LPCTSTR szCaptionBtn)
{
	try {
		DWORD dwProcessID;
		GetWindowThreadProcessId(hWnd, &dwProcessID);
		HANDLE hProcess = OpenProcess( PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION |
				PROCESS_VM_WRITE | PROCESS_VM_READ, FALSE, dwProcessID );
		if (!hProcess){
			return FALSE;
		}

		INJECT_DLL InjectInfo;
		InjectDLL_Info(&InjectInfo, lpszLibFile, hWnd, dwID, pRtBtn, szCaptionBtn);

		LPBYTE lpThreadAddr=(LPBYTE)::VirtualAllocEx(hProcess, NULL, MAXINJECTSIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE);

		LPINJECT_DLL param = (LPINJECT_DLL) VirtualAllocEx( hProcess, 0, sizeof(INJECT_DLL), MEM_COMMIT, PAGE_READWRITE );

		WriteProcessMemory(hProcess, lpThreadAddr,&RemoteControlThread,	MAXINJECTSIZE, 0);
		WriteProcessMemory( hProcess, param, &InjectInfo, sizeof(InjectInfo), 0 );

		DWORD dwThreadId;
		HANDLE hThread = ::CreateRemoteThread(hProcess,NULL,0,
			(unsigned long (__stdcall *)(void *))lpThreadAddr,
			param, 0, &dwThreadId);


		if (!hThread){
			CloseHandle(hProcess);
			VirtualFreeEx( hProcess, lpThreadAddr, 0, MEM_RELEASE );
			VirtualFreeEx( hProcess, param, 0, MEM_RELEASE );
			return FALSE;
		}
		else {
			CloseHandle(hThread);
			CloseHandle(hProcess);
			VirtualFreeEx( hProcess, lpThreadAddr, 0, MEM_RELEASE );
			VirtualFreeEx( hProcess, param, 0, MEM_RELEASE );
		}
	
	}
	catch (...){
		return FALSE;
	}
	return TRUE;
}

--------------------next---------------------

阅读(213) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~