Hallo,
ich habe mal angefangen einen IRC Bot zu schreiben.
Dieser stürtzt leider manchmal ab wenn mehrere Bot's online sind.
Der Bot arbeitet mit Threads...
Wie schaffen den stable Bots das die nicht bei 1k Bots schon abstürzen?
Hallo,
ich habe mal angefangen einen IRC Bot zu schreiben.
Dieser stürtzt leider manchmal ab wenn mehrere Bot's online sind.
Der Bot arbeitet mit Threads...
Wie schaffen den stable Bots das die nicht bei 1k Bots schon abstürzen?
Schwer zu sagen, zeig doch mal den Code, mit dem zu die Threads verwaltest...
Hast du evtl. nicht alle globalen Zugriffe korrekt abgesichert/synchonisiert mit z.B. CriticalSections o.Ä.?
Arbeite mit _beginthreadex()
So ungefähr sieht des aus:
Grob gesehen sieht das ganze jetzt so aus.Code:int irc_start() { reserviere speicher für buffer empfange bytes vom server und schreibe in buffer starte "derThread" mit beginthreadex() und übergebe buffer } int derThread(char *wert) { kopiere Wert von der Variablen "wert" gebe buffer("wert") mit free() frei }
Kann den Code leider nicht komplett posten.
Du startest also aus einem Programm heraus mehrere Bots, oder wofür verwendest du Multithreading?
Geändert von aL1ien (10.03.2010 um 14:31 Uhr)
Tu peut t'le mettre dans l'cul.
Ich verwende Multithreading für die erhaltenen Befehle.
Rede von dem kompletten Botnet.Du startest also aus einem Programm heraus mehrere Bots
Wann genau stürzt er ab, wenn du das Programm x mal bei dir selbst startest oder auf verschiedenen Rechnern, evtl. liegt es auch am IRC Server?
Gibt es bestimmte Meldungen?
_n0p3_
Also habe schon ein paar Victims mit dem Bot...
Wenn ich z.B denn login Befehl gebe:
Erhalte ich von den Bots die Ausgabe:Code:.login pw
Und danach stürzen einige Bots immer ab.Successful logged in
Am Server liegt es 100% nicht
Schonmal mit OllyDbg versucht?
Oder einfach ein paar Debug-Ausgaben einfügen und schauen wo das Ding abstürzt.
Aber mal ehrlich: wenn du keinen Code rausgibst verstehe ich nicht, wieso dieser Thread überhaupt hier steht.
PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
please do feed the trolls crew and elk
Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
"Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^
Irgendwo in diesem Code muss ein Fehler sein...Code:for(;;) { err = 0; // WaitForSingleObject((HANDLE)x,300); //test if(b == NULL) { memset(puffer,0,sizeof(puffer)); CloseHandle((HANDLE)x); } else { while(1) if(b == NULL) break; CloseHandle((HANDLE)x); memset(puffer,0,sizeof(puffer)); } err = recv(socket,puffer,MAX-1,0); if((err == 0) || (err == SOCKET_ERROR)) { //printf("WSAGetLastError: %i\n",WSAGetLastError()); shutdown(socket,2); closesocket(socket); WSACleanup(); return 1; } else { puffer[err] = '\0'; b = calloc(strlen(puffer)+1,sizeof(char)); if(b != NULL) { strncpy(b,puffer,strlen(puffer)); cmd.msg = &b; x = _beginthreadex(NULL,0,split_cmd,&cmd,0,NULL); } } //split_cmd() unsigned __stdcall split_cmd(irc *cmd) { char *p,user[24],*buf; argv parameters; int err,socket; memset(¶meters,0,sizeof(argv)); buf = calloc(strlen(*cmd->msg)+1,sizeof(char)); if(buf == NULL) return 1; else memset(buf,0,sizeof(buf)); strncpy(buf,*cmd->msg,strlen(*cmd->msg)); free(*cmd->msg); *cmd->msg = NULL;
Bei Victims sehe ich die Ausgaben nicht...der einfach ein paar Debug-Ausgaben einfügen und schauen wo das Ding abstürzt.
Lass die Ausgaben im Chat(query) erscheinen.
Geändert von aL1ien (10.03.2010 um 19:50 Uhr)
Tu peut t'le mettre dans l'cul.