Keylogger für ein GDI Input

  • Moin, :)

    momentan arbeite ich an einer kleinen Library, die aus GDI+ Controls bestehen soll.

    Buttons, Progress, Label habe ich beispielsweise schon umgesetzt.

    Jetzt bin ich an einem Input Control dran. Allerdings komme ich hier nicht weiter. ||

    Bisher habe ich mir überlegt, wie man ein Key Event überhaupt auslesen kann.

    Dabei hat mir folgendes Beispiel etwas weiter geholfen:

    https://github.com/3gstudent/Auto…r/keylogger.au3

    Das Problem ist jedoch, dass die Microsoft Funktion "KBDLLHOOKSTRUCT"

    ausschließlich "low-level" input events erkennt. Wenn ich jetzt jedoch Shift+1

    zusammen drücke, um ein Ausrufezeichen (je nach Layout) auszugeben, würde ich

    aber nur die 1 aus der Funktion herausbekommen. Ich könnte das jetzt theoretisch

    auch hardcoden und abfragen: falls shift+1 gedrückt wurde, erweitere den Input-String mit einem Ausrufezeichen.

    Aber das würde ja nur auf dem deutschen Layout funktionieren. :/

    Hat jemand eine Idee, wie man auch die anderen Keys auslesen kann?

    Das bereitet mir echt Kopfschmerzen.. ;(


    Dies ist mein modifiziertes Testscript von dem Beispiel aus github:

    Beim Ausführen des Scripts werden die gedrückten Keys über ein Label angezeigt.

    • Offizieller Beitrag

    Das Problem ist jedoch, dass die Microsoft Funktion "KBDLLHOOKSTRUCT"

    ausschließlich "low-level" input events erkennt.

    vkCode für SHIFT: left=0xA0, right=0xA1, für ALT=0xA4

    Die Struktur speichert "flags" - und diese repräsentieren das Release der entsprechenden Tasten: 0x80= UP for 'normal' keys and left pairs, 0x81= UP for right pairs

    Deine Konstruktion ist natürlich wenig effizient mit den If-Statements. Das kannst du alles mit dem Hook abwickeln. Aber hier stoßen wir an die Grenzen unseres Supports: Keylogging ist nunmal nichts, was wir unterstützen wollen, die Möglichkeit des mIßbrauchs ist zu groß.

  • Danke für die Hinweise bis dato. Leider habe ich bisher nichts finden können, womit ich mein Problem lösen konnte.

    Wird dann wohl erst einmal doch nur eine alphanumerische Inputbox bleiben.

    Werde das Projekt bzw. die gdi library dann erstmal wieder bei Seite legen. :party:

  • OMG den Tipp hätte ich nicht in einem Thread gegeben, der mit Keylogger überschrieben ist..

    Ich vertraue auf das Gute im Menschen und habe zudem auch keine fertige Lösung präsentiert... lediglich einen Hinweis, dass in der AutoIt-Hilfe weitere Infos dazu stehen... die allerdings nur dann verständlich sind, wenn eine gewisse Erkenntnisstufe vorhanden ist. Wer sich mit Hilfe Anderer einen funktionierenden Keylogger erschleichen will und damit nichts Gutes im Sinn hat, lebt eh auf extrem dünnem Eis...

  • Hallo @Butnugger,
    Ehrlich gesagt, habe ich für deine Argumentation Null Verständnis. Wenn ich an die lauteren von xSunLighTx3 glaube (an denen ich keine Zweifel habe), dann sende ich ihm den Hinweis privat. Ich vertraue aber nicht auf das Gute in allen Menschen, die zukünftig AutoIt+Keylogger auf google suchen...

    Grüße autoiter

  • Ich vertraue auf das Gute im Menschen und habe zudem auch keine fertige Lösung präsentiert... lediglich einen Hinweis, dass in der AutoIt-Hilfe weitere Infos dazu stehen... die allerdings nur dann verständlich sind, wenn eine gewisse Erkenntnisstufe vorhanden ist. Wer sich mit Hilfe Anderer einen funktionierenden Keylogger erschleichen will und damit nichts Gutes im Sinn hat, lebt eh auf extrem dünnem Eis...

    Ich habe mir das Beispiel und die Parameter in der Hilfe angeschaut. Daraus habe ich leider keine weiteren Kenntnisse entnehmen können. :/

    Hallo @Butnugger,
    Ehrlich gesagt, habe ich für deine Argumentation Null Verständnis. Wenn ich an die lauteren von xSunLighTx3 glaube (an denen ich keine Zweifel habe), dann sende ich ihm den Hinweis privat. Ich vertraue aber nicht auf das Gute in allen Menschen, die zukünftig AutoIt+Keylogger auf google suchen...

    Sehe ich genauso, es gibt leider wirklich viele Nutzer, die sich daraus Schadsoftware basteln. Und wir dürfen dann damit leben, dass AutoIt von bekannten Virenscanner als Trojaner anerkannt wird. ;(


    Bezüglich zum GDI Input ist mir leider bisher keine verwendbare Alternative eingefallen. Ich bin auch vom Kenntnisstand noch nicht so weit wie ihr.

  • OMG den Tipp hätte ich nicht in einem Thread gegeben, der mit Keylogger überschrieben ist..

    Ich vertraue auf das Gute im Menschen und habe zudem auch keine fertige Lösung präsentiert... lediglich einen Hinweis, dass in der AutoIt-Hilfe weitere Infos dazu stehen... die allerdings nur dann verständlich sind, wenn eine gewisse Erkenntnisstufe vorhanden ist.

    Hallo Bitnugger,
    Ehrlich gesagt, habe ich für deine Argumentation Null Verständnis. Wenn ich an die lauteren von xSunLighTx3 glaube (an denen ich keine Zweifel habe), dann sende ich ihm den Hinweis privat. Ich vertraue aber nicht auf das Gute in allen Menschen, die zukünftig AutoIt+Keylogger auf google suchen...

    Ein kontroverses Thema - da kann ich mich mit meinem Kommentar eigentlich nur in die Nesseln setzen ;).

    Selbst der größte Depp des Planeten wird aber, falls er mit AutoIt einen Keylogger schreiben möchte,

    zuallererst folgendes bei Google eingeben : 'AutoIt Keylogger' (dazu bedarf es keinerlei Tipps aus unserem Forum). Treffer 1 wäre z.Zt. genau der Link (inkl. Skript), den xSunLighTx3 im Startbeitrag gepostet hat.

    In dem Skript selbst wird die von Bitnugger genannte Funktion _WinAPI_SetWindowsHookEx bereits verwendet (wie auch in der offiziellen Hilfe beschrieben). xSunLighTx3 diese Infos privat zu schicken hätte also nichts gebracht, da er, und alle Leser dieses Threads, sie schon haben.

    Auch im AutoIt-Forum gibt es einige Threads mit Beiträgen z.T von PUs und MODs die recht ausführlich auf dieses Thema eingehen.

    Dass wir hier die Keyloggerentwicklung nicht unterstützen, steht sicher außer Frage.

    Ob, und in welchem Umfang, man auf solche Fragen eingeht, ist letztlich aber eher eine persönliche Entscheidung, kein Grund sich zu streiten:).

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    • Offizieller Beitrag

    Bezüglich zum GDI Input ist mir leider bisher keine verwendbare Alternative eingefallen.

    Wenn ich richtig verstanden habe, wolltest du dass der User einen Hotkey erstellen kann. Dazu brauchst du nicht wirklich die Tasten abfragen. Hier mal ein Lösungsansatz auf ganz triviale Art:

    Auswahl Sondertaste per Button, Zeichentaste per Eingabe ins Inputfeld.

  • BugFix aah sorry ich hatte mich nicht richtig ausgedrückt. Im Endeffekt wollte ich ein Input-Control auf GDI+ Basis erstellen, wie beispielsweise bei: GuiCtrlCreateInput().

    In diesem GDI Objekt soll man dann wie gewohnt etwas reinschreiben können. Alphanumerische Zeichen hatte ich schon in dem Beispiel aus dem Startpost realisiert.

    Das Problem wäre z.B wenn man ein Input benötigt, in dem man Zeichen wie {shift+1} bzw. "Ausrufezeichen" reinschreiben möchte, würde ich lediglich die Zahl 1 returned bekommen.

    Man kann zwar abfragen, ob die shift Tase gedrückt wurde, aber dann würde ich bei unterschiedlichen Layouts falsche Zeichen interpretieren. :(

    Wenn der Nutzer dann in den Input bspw. ein Zeichen schreibt, würde ich dieses Zeichen, welches geloggt wird, in eine Variable packen und als Zeichenkette verlängern, sodass quasi ein normaler Textstring entstehen kann.