Keystroke an Spiele senden

05/10/2013 04:02 123#1
Guten Abend,

Das Ziel:
Das Ziel ist es eine Tastatureingabe zu emulieren, welche von einem modernen Spiel erkannt und ausgewertet wird.

Das Problem:
ModerneSpiele nutzen Mechanismen um dies zu unterdrücken damit kein Bot erstellt werden kann.

Lösungsversuche:
Versucht wurde die SendKey Methode, KeyEvents und SendInput, diese funktionieren auf normalen Elementen wie einem Notepad, jedoch nicht in modernen Spielen. Nach den gescheiterten versuchen probierte ich herauszufinden ob es möglich ist über einen Low-Level Hook der user32.dll Keystrokes einzuspeisen, jedoch ohne Erfolg.

Die Frage:
Ist es möglich über einen Low-Level Hook, oder anderen Methoden, Keystrokes einzuspeisen die von einem modernen Spiel erkannt und ausgewertet werden ? Falls ja, würde ich mich um ein Codebeispiel (c#) freuen.

Mit freundlichen Grüßen
05/10/2013 05:55 tolio#2
funktionieren tut es aufjedenfall, auch wenn mir nicht im detail bekannt ist wie.
irgendwas von wegen direct input hab ich da im ohr um sachen auch in directx anwendungen zu emulieren
ich meine das wars, kann mich aber auch irren [Only registered and activated users can see links. Click Here To Register...]
05/10/2013 14:01 #SoNiice#3
Bin nicht so der Typ von Bots, aber gibt es nicht eine Directx Klasse? Meine da mal was gelesen zu haben.
05/10/2013 14:16 YatoDev#4
weiß nicht ob das was ist lag aber auf meinem pc rum :
[Only registered and activated users can see links. Click Here To Register...]
05/10/2013 14:46 dready#5
@FutterShy
hier nochma die Seite dazu :)
[Only registered and activated users can see links. Click Here To Register...]

@tolio
Dein Hirn hat dich nich im Stich gelassen :P
Bei DirectInput spielen geht man normal hin und kritzelt in dem Speicher der DX dll rum, bzw hooked dort, je nachdem wie man lustig ist

Das ganze läuft etwa so ab
Keypresses werden in einem Buffer gesammelt der dann von Directinput geparsed wird.
Heißt man schreibt etwas dort hineinen und beim nächsten Check des Programms werden sie wie Eingaben mitgenommen. Zumindest soweit ich das noch im Kopf hab.
Die Frage ist allerdings, Warum sind die Keystrokes wichtig ? Ist imo ne verdammt ungemütliche Möglichkeit einen Bot zu schreiben.
05/10/2013 15:19 #SoNiice#6
Mit SharpKeys ist das möglich, habe mich gerade mal ein wenig erkundet:

[Only registered and activated users can see links. Click Here To Register...]
05/10/2013 21:52 123#7
Erstmal danke für die vielen Antworten.

Quote:
weiß nicht ob das was ist lag aber auf meinem pc rum :
InputSimulator.dll
Hatte ich schon getestet, funktioniert einwandfrei bei normalen Anwendungen jedoch nicht bei modernen Spielen.

Quote:
Das ganze läuft etwa so ab
Keypresses werden in einem Buffer gesammelt der dann von Directinput geparsed wird.
Heißt man schreibt etwas dort hineinen und beim nächsten Check des Programms werden sie wie Eingaben mitgenommen. Zumindest soweit ich das noch im Kopf hab.
Die Frage ist allerdings, Warum sind die Keystrokes wichtig ? Ist imo ne verdammt ungemütliche Möglichkeit einen Bot zu schreiben.
Vielen Dank! Ich werde mich bezüglich dessen heute Nacht noch erkundigen, auch wenn das eine neue Frage aufwirft, was ist eine gemütliche Methode um einen Bot zu schreiben?
Quote:
Mit SharpKeys ist das möglich, habe mich gerade mal ein wenig erkundet:
Ähnliches hatte ich auch gefunden, jedoch lädt man eine .exe runter was mich aufstutzen ließ.


Gestern fand ich eine Klasse ( Im Anhang ) welche diesen Nutzen erfüllte mit Keybd Events und dem einfließen der user32.dll, ich konnte sie nocht nicht ausführlich testen und begutachten, jedoch funktionierte sie bis jetzt bei allen getesten spielen.
05/10/2013 22:49 YatoDev#8
Vielleicht musst du ja bypassen ? :D
05/10/2013 22:56 dready#9
Es ist deutlich weniger Fehleranfällig den Bot eine Stufe tiefer anzusiedeln.
D.h. Entweder die Entsprechenden Funktionen z.b. fürs Movment Reversen und selbst aufrufen oder wenn es sich um MMO`s oder ähnliches Handelt die Packets selbst zusammenbauen und abschicken.