[HowTo] Spambot selber scripten/erstellen

06/09/2011 18:18 xShizoidx#1
Hallo liebe Community,

ich dachte mir mal, dass ich ein kleines Tutorial darüber mache, wie man einen eigenen Spambot mit Autoit erstellt, welchen man danach auch public machen kann oder halt selber benutzen kann.

Schritt 1 : Das Designen der GUI

1 ) Au3 Datei erstellen , indem wir Rechtsklick > Neu > Autoit v3 Script auswählen.

2 ) rechtsklick > edit script

3 ) Tools > Koda ( Form Designer )

4 ) Nun haben wir Koda Form Designer eröffnet und die Form ist am Anfang auch schon immer da. Diese können wir dann so groß machen, wie wir wollen.

5 ) Wenn wir nun die Größe festgelegt haben, sehen wir , wenn wir auf Form1 klicken ClientWidth und ClientHeight. Jetzt öffne wir erstmal ein Bildbearbeitungsprogramm wie z.B. Photoshop und erstellen eine neues Bild mit den Maßen [ Höhe = wie bei ClientWidth , Breite wie bei ClientHeight ].

6 ) Nun erstellen wir uns ein schönes Bild, welches wir dann als Hintergrund für unsere GUI benutzen wollen und schreiben drei verschiedende Texte :
1. Fenstername
2. Text, der gespammt werden soll
3. Wartezeit in Millisekunden
Darunter kommen dann niemlich später die Inputboxen.
So sieht es z.B. bei mir aus :

7 ) Wir speichern es als Photoshop oder GIMP Datei oder andere Datei und als JPG Datei.
JPG Datei , damit wir es in die GUI einfügen können als Hintergrundbild
Photoshop oder GIMP Datei oder andere Datei , damit wir es später noch bearbeiten können, falls es nicht passen sollte.

8 ) Nun verschieben wir erstmal unser Bild ( JPG Datei ) in unseren Ordner, wo auch die au3 Datei ist.

9 ) Zurück in den Koda Form Designer und auf " Additional " > " Picture "
Dort laden wir dann unser Bild ( JPG Datei ) und drücken auf ok.
Falls das Bild verpixelt aussieht, dann auf "Stylez" gehen und Häckchen bei "SS_REALSIZEIMAGE". Das Häcken machen wir danach wieder weg.

10 ) Nun setzen wir jeweils unter den Texten 3 Inputboxen und irgendwo noch 3 Checkboxen und 2 Buttons.
So sieht es dann bei mir aus :

11 ) Schon haben wir unsere GUI erstellt und dann müssen wir nur noch auf das " Play Zeichen ", wo auch " Generate Code " steht klicken oder "F9" drücken, damit unser Code für die GUI erstellt wird.

12 ) Wenn wir nun diesen Code in unsere au3 Datei einfügen und es dann starten, dann erscheint eine Fehlermeldung. Um dieses Problem zu beheben verschieben wir den Code .... GUICtrlCreatePic..... über GUISetState(@SW_SHOW)

So sieht es dann bei mir aus :
Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1_1 = GUICreate("Spambot by Netterwurm", 551, 441, 176, 124)
$InputText1 = GUICtrlCreateInput("", 224, 112, 121, 21)
$InputText2 = GUICtrlCreateInput("", 8, 216, 529, 21)
$Start = GUICtrlCreateButton("Start", 128, 392, 97, 25, $WS_GROUP)
$Beenden = GUICtrlCreateButton("Beenden", 344, 392, 89, 25, $WS_GROUP)
$Wartezeit = GUICtrlCreateInput("", 160, 296, 241, 21)
$Checkbox1 = GUICtrlCreateCheckbox("Normaler Chat", 224, 344, 121, 17)
GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
$Checkbox2 = GUICtrlCreateCheckbox("Rufchat", 440, 344, 73, 17)
GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
$Checkbox3 = GUICtrlCreateCheckbox("Gildenchat", 24, 344, 97, 17)
GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
$Pic1 = GUICtrlCreatePic("Background.jpg", 0, 0, 550, 440, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
Schritt 2 : Befehle und Funktionen

Nun sehen wir nach dem Script , der für die GUI verantwortlich ist, diesen Code :

ohne Erklärung :
Code:
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd
mit Erklärung :

Nun müssen wir zuerst einmal den Buttons eine Funktion zuweisen.
Dieses machen wir mit
Code:
Case $Buttonname 
Irgendetwas()
Vor dem () könnt ihr irgendetwas hinschreiben. Ihr werdet es später für die Funktion brauchen.

Also weisen wir nun den beiden Buttons, die wir haben eine Funktion zu.
Das ganze würde bei meinem Beispielscript für die GUI so aussehen :
Code:
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Start
            Start()
        Case $Beenden
            Ende()
    EndSwitch
WEnd
Nun fehlt natürlich noch die Befehle, die ausgeführt werden sollen, wenn man den Button drückt. Nimmt am Besten den Button, womit ihr den Bot nachher starten möchtet. Dieses machen wir so :
Code:
Func Das Wort,welches ihr oben vor dem () eingegeben habt für den jweiligen Button()
; Hier kommen gleich deine Befehle hinein
EndFunc
So würde es dann wieder bei mir aussehen, wenn ich die Befehle für den Button "Start" bestimmten möchte. :
Code:
Func Start()
; Hier kommen gleich deine Befehle hinein
EndFunc
Nun müssen wir noch die Befehle einfügen und er soll auch davor kontrollieren, ob eine Checkbox von uns aktiviert wurde. Fangen wir mal an mit den Befehlen für den normalen Chat :

Code:
If (GUICtrlRead($Name deiner Checkbox für den normalen Chat) ) = $GUI_CHECKED Then
		While (1)
		WinWaitActive(GUICtrlRead($Name des Inputs, wo der Fenstername angegeben werden soll))
        Sleep(300)
        Send("{Enter}")
	Send( "{BACKSPACE}" )
        Sleep(GUICtrlRead($Name des Inputs, wo die Wartezeit hineinkommen soll))
        Send(GUICtrlRead($Name des Inputs, wo der Text hineinkommen soll))
	WEnd
        EndIf
Mit Erklärung :

So würde es dann bei mir aussehen :
Code:
If (GUICtrlRead($Checkbox1) ) = $GUI_CHECKED Then
		While (1)
		WinWaitActive(GUICtrlRead($InputText1))
        Sleep(300)
        Send("{Enter}")
		Send( "{BACKSPACE}" )
        Sleep(GUICtrlRead($Wartezeit))
        Send(GUICtrlRead($InputText2))
	WEnd
        EndIf
Wenn wir dies nun mit allen Checkboxen machen und die richtigen Befehle einsetzen, die normalerweise gesendet werden müssen, damit es für den Rufchat, Gildenchat etc. funktioniert, sieht der ganze Func so aus :
Code:
Func Start()
	If (GUICtrlRead($Name deiner Checkbox für den normalen Chat) ) = $GUI_CHECKED Then
		While (1)
		WinWaitActive(GUICtrlRead($Name des Inputs, wo der Fenstername angegeben werden soll))
        Sleep(300)
        Send("{Enter}")
	Send( "{BACKSPACE}" )
        Sleep(GUICtrlRead($Name des Inputs, wo die Wartezeit hineinkommen soll))
        Send(GUICtrlRead($Name des Inputs, wo der Text hineinkommen soll))
	WEnd
        EndIf
		If (GUICtrlRead($Checkboxname für Gildenchat) ) = $GUI_CHECKED Then
			While (1)
		WinWaitActive(GUICtrlRead($selber Inputname wie oben))
        Sleep(300)
        Send("{Enter}")
		Send( "{BACKSPACE}" )
		Sleep(150)
		Send ("{!}")
        Sleep(GUICtrlRead($selber Inputname für Wartezeit wie oben))
        Send(GUICtrlRead($selber Inputname für Text wie oben))
		WEnd
EndIf
If (GUICtrlRead($Checkboxname für Rufchat) ) = $GUI_CHECKED Then
		While (1)
		WinWaitActive(GUICtrlRead($selber Inputname))
        Sleep(300)
        Send("{Enter}")
		Send( "{BACKSPACE}" )
		Sleep(150)
		Send ("{%}")
        Sleep(GUICtrlRead($selber Inputname für Wartezeit wie oben))
        Send(GUICtrlRead($selber Inputname für Text wie oben))
		WEnd
	EndIf
EndFunc
So nun suchen wir uns noch einen Befehl aus, den er ausführen soll, wenn keines der Checkboxen angeklickt wird, indem wir es nach dem letzten EndIf setzen. Ich nehme mal diese Messagebox

Code:
MsgBox(64, "Error!", "Es konnte der gewünschte Befehl nicht ausgeführt werden. Stellen sie bitte sicher, ob sie eine Checkboxen (Normaler Chat, Gildenchat, Rufchat)  aktiviert haben.")
Zu guter letzt müssen wir noch für den Button, der den Bot beenden soll, eine Funktion setzen und ein HotkeySet setzen, damit wir den Bot auch im Spiel beenden können.

So sieht dann der ganze Script von mir aus :

Code:
HotKeySet("{F8}", "Ende")
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1_1 = GUICreate("Spambot by Netterwurm", 551, 441, 176, 124)
$InputText1 = GUICtrlCreateInput("", 224, 112, 121, 21)
$InputText2 = GUICtrlCreateInput("", 8, 216, 529, 21)
$Start = GUICtrlCreateButton("Start", 128, 392, 97, 25, $WS_GROUP)
$Beenden = GUICtrlCreateButton("Beenden", 344, 392, 89, 25, $WS_GROUP)
$Wartezeit = GUICtrlCreateInput("", 160, 296, 241, 21)
$Checkbox1 = GUICtrlCreateCheckbox("Normaler Chat", 224, 344, 121, 17)
GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
$Checkbox2 = GUICtrlCreateCheckbox("Rufchat", 440, 344, 73, 17)
GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
$Checkbox3 = GUICtrlCreateCheckbox("Gildenchat", 24, 344, 97, 17)
GUICtrlSetFont(-1, 8, 800, 0, "Arial Black")
$Pic1 = GUICtrlCreatePic("Background.jpg", 0, 0, 550, 440, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUISetState(@SW_SHOW)

Func Start()
		If (GUICtrlRead($Checkbox1) ) = $GUI_CHECKED Then
		While (1)
		WinWaitActive(GUICtrlRead($InputText1))
        Sleep(300)
        Send("{Enter}")
		Send( "{BACKSPACE}" )
        Sleep(GUICtrlRead($Wartezeit))
        Send(GUICtrlRead($InputText2))
	WEnd
	EndIf
		If (GUICtrlRead($Checkbox2) ) = $GUI_CHECKED Then
			While (1)
		WinWaitActive(GUICtrlRead($InputText1))
        Sleep(300)
        Send("{Enter}")
		Send( "{BACKSPACE}" )
		Sleep(150)
		Send ("{!}")
        Sleep(GUICtrlRead($Wartezeit))
        Send(GUICtrlRead($InputText2))
		WEnd
EndIf
If (GUICtrlRead($Checkbox3) ) = $GUI_CHECKED Then
		While (1)
		WinWaitActive(GUICtrlRead($InputText1))
        Sleep(300)
        Send("{Enter}")
		Send( "{BACKSPACE}" )
		Sleep(150)
		Send ("{%}")
        Sleep(GUICtrlRead($Wartezeit))
        Send(GUICtrlRead($InputText2))
		WEnd
	EndIf
	MsgBox(64, "Error!", "Es konnte der gewünschte Befehl nicht ausgeführt werden. Stellen sie bitte sicher, ob sie eine Checkboxen (Normaler Chat, Gildenchat, Rufchat)  aktiviert haben.")
EndFunc

Func Ende()
Exit
EndFunc

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Start
            Start()
        Case $Beenden
            Ende()
    EndSwitch
WEnd
Mit Erklärung :

Beispielbot : [Only registered and activated users can see links. Click Here To Register...]

Die fertigen Codes, die hier auch dabei sind, sind alle die Codes von meinem Bot. Es ist relativ simpel einen Spambot zu erstellen.

Info: Es folgt in Kürze auch ein Tutorial, wie man einen Spambot Unhidden und Hidden mit VB erstellt.
06/09/2011 18:31 noahrmal#2
Eigentlich ganz gut gelungen werde es mal ausprobieren vlt könntest du mal die Quellcodes in Spoiler setzen (übersichtlicher).
06/09/2011 18:47 xShizoidx#3
*Edit : Das mit den Quellcodes in Spoilern werde ich nur bei bestimmten Abschnitten machen, da es sonst wieder blöd aussieht. Falls du irgendwo nicht klar kommst, dann kannst du mir auch eine Nachricht senden.

Wer es mit dem Designen der GUI nicht hinbekommt oder keine eigenen Bilder erstellen kann, der kann mir eine Nachricht senden und ich erstelle es dann für ihn.
06/09/2011 19:49 noahrmal#4
Dann kannst du genauso gut den GUI Sektions Quellcode hinschreiben.
06/10/2011 20:13 Kadso™#5
Ist sehr gut (:
Hab alles verstanden ^.^
Kriegstn THX für das tolle HowTo (:
06/10/2011 20:36 noahrmal#6
Klapp super:) kannst ja vlt bald noch hinzufügen mit "controllsend"
06/10/2011 20:58 xShizoidx#7
Beim Controlsend gibt es bei mir ein Problem.

Er hat Probleme beim Senden von ! , .... z.B. für Rufchat, Gildenchat etc...

Hidden würde er also nur den Text senden und kann dann kein ! etc. senden....

Dann fehlen dort natürlich einige Funktionen. Ich habe schon alles versucht und in sämtlichen Foren nachgefragt, wieso es nicht funktioniert, doch keiner weiß darauf eine Antwort.
06/11/2011 00:19 ahmetsoper#8
Hallo und danke erstmal,
Bei mir hat alles geklappt aber wenn ich meinen Spammbot öffne wird das Bild was ich gemacht habe nicht gezeigt wieso?
06/11/2011 00:33 xShizoidx#9
Sende mir bitte mal deinen Script per Nachricht. Dann kann ich dir weiterhelfen.
06/11/2011 00:42 ahmetsoper#10
Problem gelöst, der das Bild musste im gleichen Ordner sein wo der Bot ist.
06/11/2011 00:59 xShizoidx#11
Wenn du den Path ( C:/ .. ) entfernst und nur den Bildname dort stehen lässt, dann muss er im selben Ordner sein. ;)

Achja du könntest auch noch einen Slider reinbauen.

Wie es funktioniert kannst du sehen, wenn du auf Hacks gehst und dann auf "Simpler Pickup Bot". Dort ist auch der Script dabei.

Aber ich denke, ich werde es demnächst noch ins Tut schreiben. Wenn du irgendwelche Fragen hast, dann einfach anschreiben.
06/17/2011 22:14 Spearfist#12
Geiles Tut Danke!
Es ist auch perfekt umd mal in AutoIt n bischen einzusteigen.

Gruß Spearfist
06/20/2011 00:49 Shqiptare#13
Müsste in die Code Tutorial Section rein.
Spammer haben nichts mit Metin2 zu tun.
06/20/2011 01:05 xShizoidx#14
Doch hat er ... Er ist extra für Metin2. Sieh dir mal die send Befehle etc. an. Für ein anderes Spiel müsste man es dann wieder umschreiben, obwohl das natürlich ein kein Problem darstellen würde.

Aber er ist und bleibt für Metin2 und hat auch etwas mit Metin2 zu tun. Außerdem ist es mal ein Bot, der das Spielgeschehen nicht schädigt.
07/26/2011 13:55 xOwnpr0Sn1px#15
Probier ich mal siht nice aus.