DirectInput Injected DLL

02/22/2012 14:59 theredvex#1
Moin.

ich hab immer noch ein problem mit meinem "Eden Eternal" Bot. und zwar kann ich mit dem Bot keinerlei Tasten ingame drücken - es sei denn das Chatfenster ist offen und angewählt -.

da hab ich alles weitere probiert wie
PostMessage
SendInput
Keybd_Event

nichts davon funktioniert.

also kam mir die idee eine DLL zu basteln die auf die anweisungen meiner C# Anwendungen hört. klappt soweit auch nur kann ich selbst mit der Injecteten DLL keine PostMessage oder sonstwas verschicken.

Jemand eine Idee was ich jetzt machen kann?? bin so langsam am verzweifeln
02/22/2012 15:56 jacky919#2
Quote:
Jemand eine Idee was ich jetzt machen kann??
Hast du doch schon in der Überschrift genannt....
02/22/2012 16:35 theredvex#3
Quote:
Originally Posted by jacky919 View Post
Hast du doch schon in der Überschrift genannt....
ja das ist richtig.

bisher habe ich eine DLL in c++ erstellt die ich mit einem Injector in das spiel eingebunden habe. habe dann direkt aus dem spiel/der dll die funktionen wie PostMessageA/W SendMessageA/W sowie ohne A oder W aufgerufen -> nix

habe das ganze mit SendInput und Keybd_event probiert -> nix

wie soll ich weiter vorgehen?
02/22/2012 16:51 jacky919#4
Ich glaube nicht, dass es ein Unterschied ist, ob Send-/PostMessage im Prozess oder "außerhalb" aufgerufen wird. keybd_event sollte man eh nicht mehr nutzen, sondern SendInput.
02/22/2012 17:01 theredvex#5
Wie gesagt habe ich auch probiert.
SendInput wirkt das IMMER auf das aktive fenster oder kann ich das auch in der injezierten DLL nutzen um das fenster vom spiel zu steuern?
02/22/2012 17:04 jacky919#6
SendInput simuliert eine direkte Eingabe. Wenn ein Fenster den Fokus hat, leitet Windows es an dieses weiter.
02/22/2012 17:23 Dr. Coxxy#7
directinput hooken...
tutorial:

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

die kommunikation mit deinem c# programm sollte/kann über ne pipe vonstatten gehen -> google
02/22/2012 17:54 theredvex#8
wollte es eigt über eine TCP/UDP Localhost verbindung laufen lassen werde mir das aber mit den PIPES mal durchlesen
danke für das Tut werde es mir mal zu gemüte führen

Warum bekomme ich eigt bei Setfocus() -> Access is Denied ???
02/22/2012 18:04 jacky919#9
Administratorrechte?
02/22/2012 18:05 theredvex#10
Quote:
Originally Posted by jacky919 View Post
Administratorrechte?
habe UAC aus quasi starte ich alles mit Admin

Sehe ich das ganze richtig? Wenn ich einen DirectInput-Hook schreibe der den AsyncKeyState() abfragt, fragt der die ganze Zeit also auch egal in welchem Programm ich gerade arbeite den Status ab? dann wäre das mit einem minimierten Bot immer noch nichts denn der PC bleibt dann ja trotzdem unbenutzbar
02/23/2012 01:33 MrSm!th#11
Wenn die UAC aus ist, bekommen die Programme gar nicht mehr die Admin Rechte.

Ein DI Interface ist nur für den Prozess nutzbar, der es erstellt hat. Wenn du das hookst, veränderst du die Tastenanschläge, die beim Programm ankommen und bei nichts anderem
GetAsyncKeyState hat nichts mit DirectInput zu tun und wird von Spielen auch gar nicht genutzt.

Pass aber auf, DI Hooks sind eben so wie D3D Hooks oftmals detected.

Aber einen vernünftigen hidden Bot solltest du eh ganz ohne Tastendruckgesende und Rumgeklicke machen.
02/23/2012 10:18 theredvex#12
Quote:
Originally Posted by MrSm!th View Post
Aber einen vernünftigen hidden Bot solltest du eh ganz ohne Tastendruckgesende und Rumgeklicke machen.
versteh ich das richtig das ich deiner meinung nach lieber hingehen soll und die Move()/Jump()/Attack() funktionen raussuchen soll?
02/23/2012 14:39 Dr. Coxxy#13
Quote:
Originally Posted by MrSm!th View Post
Wenn die UAC aus ist, bekommen die Programme gar nicht mehr die Admin Rechte.
wenn uac deaktiviert ist bekommen alle programme automatisch adminrechte, bzw. es gibt keine unterscheidung mehr zwischen admin und nichtadmin.

Quote:
Originally Posted by theredvex View Post
versteh ich das richtig das ich deiner meinung nach lieber hingehen soll und die Move()/Jump()/Attack() funktionen raussuchen soll?
richtig.
02/23/2012 21:34 theredvex#14
Einen Tipp wie ich die Funktionen der Tastendrücke bekomme? wäre es da möglich irgendwie die DInput8.dll auf Hardware Execution zu überwachen und dann direkt zur funktion zu springen? ... warscheinlich wäre das zu einfach
02/24/2012 01:38 MrSm!th#15
Quote:
wenn uac deaktiviert ist bekommen alle programme automatisch adminrechte, bzw. es gibt keine unterscheidung mehr zwischen admin und nichtadmin.
nein, du führst alle programme mit den eigenen benutzerrechten aus.

bist du benutzer, sind es benutzerrechte, bist du admin, sind es admin rechte und bist du super-admin (der eigentlich deaktivierte), dann sind es eben dessen rechte.
mit angeschalteter uac hast du, egal unter welchem account, die möglichkeit, letztere rechte für ein programm zu erhalten.

Quote:
Einen Tipp wie ich die Funktionen der Tastendrücke bekomme? wäre es da möglich irgendwie die DInput8.dll auf Hardware Execution zu überwachen und dann direkt zur funktion zu springen? ... warscheinlich wäre das zu einfach
wurde doch schon gesagt, mithilfe eines DI Hooks.
Du kannst die Device Methoden hooken, die den Status der Tasten abfragen. Die werden höchstwahrscheinlich nur von dem Teil des Spiels abgefragt, dass den Input verwaltet.

Und da sind dann auch Move/Jump/etc. nicht weit.