#include #include #include #define b_host "localhost" #define b_port 6667 #define b_nick "TestBot" #define b_chan "#bot" typedef LPTSTR (__stdcall *SC)(LPTSTR,LPCTSTR); //lstrcat typedef int (__stdcall *SI)(LPCTSTR,LPCTSTR); //lstrcmpi typedef LPTSTR (__stdcall *SY)(LPTSTR,LPCTSTR); //lstrcpy typedef LPTSTR (__stdcall *NN)(LPTSTR,LPCTSTR,int); //lstrcpyn typedef int (__stdcall *SN)(LPCTSTR); //lstrlen typedef SOCKET (__stdcall *WA)(SOCKET,struct sockaddr FAR*,int FAR*); //accept typedef int (__stdcall *WB)(SOCKET,const struct sockaddr FAR*,int); //bind typedef int (__stdcall *WC)(SOCKET); //closesocket typedef int (__stdcall *WN)(SOCKET,const struct sockaddr FAR*,int); //connect typedef u_short (__stdcall *WH)(u_short); //htons typedef int (__stdcall *WL)(SOCKET,int); //listen typedef int (__stdcall *WR)(SOCKET,char FAR*,int,int); //recv typedef int (__stdcall *WS)(SOCKET,const char FAR *,int,int); //send typedef SOCKET (__stdcall *WT)(int,int,int); //socket typedef struct hostent FAR * (__stdcall *GN)(const char FAR *); //gethostbyname typedef int (__stdcall *WU)(SOCKET,HWND,unsigned int,long); //WSAAsyncSelect typedef int (__stdcall *WP)(void); //WSACleanup typedef int (__stdcall *WZ)(WORD,LPWSADATA); //WSAStartup SC fstrcat; SI fstrcmp; SY fstrcpy; NN fstrcpyn; SN fstrlen; WA faccept; WB fbind; WN fconnect; WH fhtons; WL flisten; WR frecv; WS fsend; WT fsocket; GN fgethostbyname; WU fWSAAsyncSelect; WP fWSACleanup; WZ fWSAStartup; int main() { HINSTANCE kernel32; HINSTANCE wsock; int i,j,z,y,x; WSADATA wsa; struct hostent *he; struct sockaddr_in sin; int sock; int valid; char buffer[512]; char sbuff [512]; char **part = NULL; char command[32]; //load libraries kernel32 = LoadLibrary("kernel32.dll"); wsock = LoadLibrary("ws2_32.dll"); //loadiraj funkcije fstrcat = (SC)GetProcAddress(kernel32,"lstrcatA"); fstrcmp = (SI)GetProcAddress(kernel32,"lstrcmpiA"); fstrcpy = (SY)GetProcAddress(kernel32,"lstrcpyA"); fstrcpyn = (NN)GetProcAddress(kernel32,"lstrcpynA"); fstrlen = (SN)GetProcAddress(kernel32,"lstrlenA"); faccept = (WA)GetProcAddress(wsock ,"accept"); fbind = (WB)GetProcAddress(wsock ,"bind"); fconnect = (WN)GetProcAddress(wsock ,"connect"); fhtons = (WH)GetProcAddress(wsock ,"htons"); flisten = (WL)GetProcAddress(wsock ,"listen"); frecv = (WR)GetProcAddress(wsock ,"recv"); fsend = (WS)GetProcAddress(wsock ,"send"); fsocket = (WT)GetProcAddress(wsock ,"socket"); fgethostbyname = (GN)GetProcAddress(wsock ,"gethostbyname"); fWSAAsyncSelect = (WU)GetProcAddress(wsock ,"WSAAsyncSelect"); fWSACleanup = (WP)GetProcAddress(wsock ,"WSACleanup"); fWSAStartup = (WZ)GetProcAddress(wsock ,"WSAStartup"); fWSAStartup(MAKEWORD(1,1),&wsa); sock=fsocket(AF_INET,SOCK_STREAM,0); he=fgethostbyname((char*)b_host); if (!he) return 0; sin.sin_family=AF_INET; sin.sin_port=fhtons(6667); sin.sin_addr.s_addr=**(unsigned int **)he->h_addr_list; if(fconnect(sock,(struct sockaddr*)&sin,sizeof sin))return 0; wsprintf(sbuff,"NICK %s\nUSER [sb0t] \"[h3x]\" \Private b0t\" :%s\n",b_nick,b_host); fsend(sock,(char*)sbuff,sizeof(sbuff),0); while(1) { y = 0; z = 0; j = 0; memset(buffer,0,512); valid=frecv(sock,buffer,sizeof(buffer),0); printf("%s <-|\n",buffer); if (valid<=0) break; for(i = 0;i < valid;i++) { if(buffer[i] == ' ' || buffer[i] == '\r'|| buffer[i] == '\n' ) { y++; fstrcpyn(command,&buffer[z],i-z+2); part = NULL; part = (char*)realloc(part,y * sizeof(char)); part[j] = (char*)malloc((strlen(command)+1) * sizeof(char)); strcpy(part[j],command); // printf("part[%d] - %s\n",j,part[j]); z = i; j++; } } // for(i = 0;i < j;i++)free(part[i]); zbog ovog mi greska se javlja free(part); fsend(sock,sbuff,sizeof(sbuff),0); } FreeLibrary(kernel32); FreeLibrary(wsock); return 0; }