Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Maus Bewegen, Ohne WinAPI (https://www.delphipraxis.net/148293-maus-bewegen-ohne-winapi.html)

stiftII 26. Feb 2010 21:47


Maus Bewegen, Ohne WinAPI
 
Hi,
ist es möglich die Maus via Delphi zu bewegen ohne dabei auf die WinAPI zurückzugreifen, sondern alternativ zB direkt den Maustreiber anzusprechen oder ähnliches.

Oder.. Gibt es so etwas wie einen virtuellen Maustreiber, welchen man mit bestimmten Komponenten oder Libraries ansprechen kann ?

~stiftII

Bernhard Geyer 26. Feb 2010 21:50

Re: Maus Bewegen, Ohne WinAPI
 
Auch ein Maustreiber wird nicht ohne verwendung der WinAPI auskommen! Ohne das läuft gar nix. Es ist halt ein anderer Teil der API die Windows bereitstellt.

Was stört dich an der "normalen" Verwendung der "üblichen" API-Funktionen?

Luckie 26. Feb 2010 21:50

Re: Maus Bewegen, Ohne WinAPI
 
Also immer wenn ich so was lese, denke ich: Auto fahren ohne Auto. Und dann frage ich mich immer: Warum?

Meflin 26. Feb 2010 21:55

Re: Maus Bewegen, Ohne WinAPI
 
Zitat:

Zitat von Bernhard Geyer
Auch ein Maustreiber wird nicht ohne verwendung der WinAPI auskommen! Ohne das läuft gar nix. Es ist halt ein anderer Teil der API die Windows bereitstellt.

Das ist schlichtweg falsch. Gerätetreiber liegen weit unterhalb der WinAPI, sie kommunizieren direkt mit dem Hardware Abstraction Layer (welcher zwar selbstverständlich ein Teil von Windows ist... aber nicht der WinAPI).

Sinnbefreit ist das Unterfangen nichtsdestoweniger :stupid:

stiftII 26. Feb 2010 21:57

Re: Maus Bewegen, Ohne WinAPI
 
Zitat:

Auch ein Maustreiber wird nicht ohne verwendung der WinAPI auskommen! Ohne das läuft gar nix. Es ist halt ein anderer Teil der API die Windows bereitstellt.

Was stört dich an der "normalen" Verwendung der "üblichen" API-Funktionen?
Was ist denn dann der Unterschied, technisch gesehen, wenn Windows die Maus bewegt, direkt über Funktionen wie SendInput, oder wenn der Maustreiber die Bewegung initiiert ?_?


Zitat:

Zitat von Luckie
Also immer wenn ich so was lese, denke ich: Auto fahren ohne Auto. Und dann frage ich mich immer: Warum?

na zB. weil man mit nem Auto nicht ins Einkaufszentrum fahren darf, es aber dennoch unglaubich praktisch wäre :]].

Luckie 26. Feb 2010 21:59

Re: Maus Bewegen, Ohne WinAPI
 
Ich frage mich gerade, ob ein Maustreiber in beide Richtungen funktioniert. Er muss ja Windows nur über die Bewegung der Maus informieren. Selbst wissen, wo die Maus auf dem Bildschirm steht muss er ja nicht. Warum sollte er also den Mauszeiger bewegen können? Oder erwartest du, dass sich dann auch die Maus auf dem Tisch bewegt? ;)

@stiftII: Aber wo ist der Sinn bei deinem Vorhaben.

Torpedo 26. Feb 2010 22:01

Re: Maus Bewegen, Ohne WinAPI
 
Ich bin nicht sicher, aber ich vermute mal die Maus/der Maus-Cursor ist eine Funktion von Windows selbst. Das heißt, wenn man sie bewegen will, MUSS man Windows bitten, das zu tun. Und genau dafür ist die WinAPI da.

Luckie 26. Feb 2010 22:03

Re: Maus Bewegen, Ohne WinAPI
 
Natürlich ist es eine Funktion von Windows. Der Treiber teilt Windows nur mit, in welche Richtung und wie weit sich die maus bewegt hat. Das Zeichnen und umsetzen auf dem Display tut Windows.

Bernhard Geyer 26. Feb 2010 22:08

Re: Maus Bewegen, Ohne WinAPI
 
Zitat:

Zitat von Meflin
Das ist schlichtweg falsch. Gerätetreiber liegen weit unterhalb der WinAPI, sie kommunizieren direkt mit dem Hardware Abstraction Layer (welcher zwar selbstverständlich ein Teil von Windows ist... aber nicht der WinAPI)

Stimmt natürlich :oops:
Aber beim Sinn sind wir uns einig.

Luckie 26. Feb 2010 22:09

Re: Maus Bewegen, Ohne WinAPI
 
'Was du höchstens machen könntest wäre Windows vozugaukeln, dass sich die Maus bewegt hat. Aber das dürfte nicht einfach sein.

Medium 26. Feb 2010 22:13

Re: Maus Bewegen, Ohne WinAPI
 
Der tiefste Ansatz aus dem Usermode dürfte vermutlich SendInput() sein, seineszeichens Teil der WinAPI. Derartig generierte Inputs sind von einer Applikation aus nicht von einer tatsächlichen Aktion mittels Hardware unterscheidbar, was zumindest schon mal etwas ist. Wenn es wirklich nur um die Vermeidung der WinAPI an sich geht (ist das seltsam und es wäre evtl. echt der Sache dienlich wenn du uns sagen würdest was du erreichen möchtest, und) dann ist das vermutlich kein Weg.

Aus dem Usermode heraus hast du 0,keine Chance zu tun was dir vorschwebt, und ein virtueller Maustreiber mit Schnittstelle in den Usermode wäre das mit einzige. Nur... diese Schnittstelle würde wieder via WinAPI-Aufrufen bedient werden müssen, und wir drehen uns fröhlich im Kreise.

stiftII 26. Feb 2010 22:22

Re: Maus Bewegen, Ohne WinAPI
 
Danke für die Antworten!! :)

Ich möchte die Maus auch in Applikationen bewegen, welche SendInput() blockieren.

Ich glaube mit einem virtuellen Maustreiber könnte das funktionieren. Jedoch Treiber-Programmierung und Delphi....

Deshalb werde ich wohl auf das WDK zurückgreifen, nur bin ich mir nicht sicher ob es nicht sogar eine bessere/einfachere Lösung gibt.

~ stiftII

Luckie 26. Feb 2010 22:27

Re: Maus Bewegen, Ohne WinAPI
 
Was für Anwendungen blockieren denn SendInput?

stiftII 26. Feb 2010 22:32

Re: Maus Bewegen, Ohne WinAPI
 
Zitat:

Zitat von Luckie
Was für Anwendungen blockieren denn SendInput?

GameGuard & Co. zB.

Luckie 26. Feb 2010 22:38

Re: Maus Bewegen, Ohne WinAPI
 
Du willst also einen Cheat Schutz umgehen? Ich denk, so was unterstützen wir hier nicht.

stiftII 26. Feb 2010 23:16

Re: Maus Bewegen, Ohne WinAPI
 
Naja, mich interessiert viel mehr das System, und die Angehensweise, selber spielen tue ich ja ohnnehin nicht.

Schade das derartige Themen hier nicht oder nur in einem alternativen Kontext besprochen werden können :(.


~stiftII

Medium 26. Feb 2010 23:24

Re: Maus Bewegen, Ohne WinAPI
 
Zum einen sollte mich wundern wenn SendInput() blockiert wäre, und wenn dem so ist, hat das wohl einen guten Grund. Den hast du selbst sogar schon gegeben - endlich - und damit meine Befürchtung bestätigt. Ich wünsche dir schönen Misserfolg dabei, oder zumindest möglichst teure kaputt gecheatete Accounts.

@Roter Kasten: System und Angehensweise: Meistens DLL-Hooks, Checksummen von Systemfiles, etc. pp. Man muss ein Verfahren zudem auch nicht umgehen um es zu verstehen, und wenn wir hier sowas öffentlich diskutieren würden, wäre faulen copy&paste kids Tür und Tor geöffnet aktuelle Anticheats mit einem Minimum an Aufwand zu umgehen. Das ist im Sinne jeglichen Spielerlebnisses einfach nut tödlich, und wir müssten uns vor den dann betrogenen verantwortlich fühlen. No go.

Luckie 26. Feb 2010 23:41

Re: Maus Bewegen, Ohne WinAPI
 
Zitat:

Zitat von stiftII
Schade das derartige Themen hier nicht oder nur in einem alternativen Kontext besprochen werden können :(.

Wo sollen wir die Grenze ziehen bei Schadsoftware? Wo fängt Schadsoftware an? Ode rbist du auch der Meinung wir sollen hier die Programmierung von Viren und Trojanern zu lassen?

stiftII 26. Feb 2010 23:52

Re: Maus Bewegen, Ohne WinAPI
 
Zitat:

Zitat von Medium
Zum einen sollte mich wundern wenn SendInput() blockiert wäre, und wenn dem so ist, hat das wohl einen guten Grund. Den hast du selbst sogar schon gegeben - endlich - und damit meine Befürchtung bestätigt. Ich wünsche dir schönen Misserfolg dabei, oder zumindest möglichst teure kaputt gecheatete Accounts.

@Roter Kasten: System und Angehensweise: Meistens DLL-Hooks, Checksummen von Systemfiles, etc. pp. Man muss ein Verfahren zudem auch nicht umgehen um es zu verstehen, und wenn wir hier sowas öffentlich diskutieren würden, wäre faulen copy&paste kids Tür und Tor geöffnet aktuelle Anticheats mit einem Minimum an Aufwand zu umgehen. Das ist im Sinne jeglichen Spielerlebnisses einfach nut tödlich, und wir müssten uns vor den dann betrogenen verantwortlich fühlen. No go.

Hallo,
nun ich denke eine einfache Copy and Paste Lösung wird es ohnehin nicht geben. Ich hätte auch keine teuren Accounts, die ich mir kaputt cheaten könnte ;).
Das derartige Themen hier nicht gerne gesehen werden finde ich Schade, gerade weil ich denke, dass hier viele Interessante Ideen und Entwürfte gesammelt werden könnten.

Zitat:

Zum einen sollte mich wundern wenn SendInput() blockiert wäre
Mhn, ya, das ist eigtl immer blockiert, zusammen mit diveresen andere Funktionen der User32.dll, Kernel32.dll und ntdll.dll.

~stiftII

Luckie 26. Feb 2010 23:54

Re: Maus Bewegen, Ohne WinAPI
 
Zitat:

Zitat von stiftII
Das derartige Themen hier nicht gerne gesehen werden finde ich Schade, gerade weil ich denke, dass hier viele Interessante Ideen und Entwürfte gesammelt werden könnten.

Ideen und Entwürfe, wie man gegen AGBs verstößt und anderen Spielern den Spielspaß nimmt?

stiftII 26. Feb 2010 23:55

Re: Maus Bewegen, Ohne WinAPI
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von stiftII
Schade das derartige Themen hier nicht oder nur in einem alternativen Kontext besprochen werden können :(.

Wo sollen wir die Grenze ziehen bei Schadsoftware? Wo fängt Schadsoftware an? Ode rbist du auch der Meinung wir sollen hier die Programmierung von Viren und Trojanern zu lassen?

Also generell wäre dagegen doch nichts einzuwenden.

Es ist doch besser, wenn wir die Sicherheitslücken herausfinden würden, als jemand der damit explizit Schaden anrichten möchte.

~stiftII

stiftII 27. Feb 2010 00:00

Re: Maus Bewegen, Ohne WinAPI
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von stiftII
Das derartige Themen hier nicht gerne gesehen werden finde ich Schade, gerade weil ich denke, dass hier viele Interessante Ideen und Entwürfte gesammelt werden könnten.

Ideen und Entwürfe, wie man gegen AGBs verstößt und anderen Spielern den Spielspaß nimmt?

Mich interessiert eigentlich nur die Vorgehensweise. Ich hätte garkeine Lust derartige "Exploits" zu nutzen um im Spiel zu cheaten. Dazu kommt dann noch, dass, wenn Sicherheitslücken hier öffentlich entdeckt werden, könnte der Hersteller diese auch direkt schließen.


~stiftII

Luckie 27. Feb 2010 00:01

Re: Maus Bewegen, Ohne WinAPI
 
Eben rausfinden. Aber Sicherheitslücken findet man nicht durch Schreiben von Schadsoftware. Um Schadsoftware zu schreiben, musst du die Sicherheitslücke schon kennen. Also ist es absolut überflüssig hier das Schreiben von Schadsoftware zu diskutieren.

stiftII 27. Feb 2010 00:16

Re: Maus Bewegen, Ohne WinAPI
 
Zitat:

Zitat von Luckie
Eben rausfinden. Aber Sicherheitslücken findet man nicht durch Schreiben von Schadsoftware. Um Schadsoftware zu schreiben, musst du die Sicherheitslücke schon kennen. Also ist es absolut überflüssig hier das Schreiben von Schadsoftware zu diskutieren.

Das sehe ich ein wenig anders.
Software die darauf ausgelegt ist Schaden anzurichten möchte ich garnicht schreiben. In dem Beispiel(Threadtitel) geht es prinzipiell darum, die Mausbewegung trotz diverser hooks in der WinApi noch zu ermöglichen. Der Benutzer kann die Maus ja immerhin noch Bewegen und diese Bewegung wird eben vom Maustreiber initiiert, dabei ist es ziemlich egal was für eine Maus und Treiber man hat (denke ich). Somit könnte man mit einem virtuellen Treiber für die Maus, oder auch Tastatur vielleicht Erfolg haben, jedoch könnt ihr mir dazu, oder zu weiterenführenden Themen in dem Bereich keine Hilfestellungen und Tipps geben, jedenfalls nicht in dem Zusammenhang.

Ich hoffe ich werde nicht falsch verstanden, ich finde diese Community generell großartig. Hier findet man für gewöhnlich immer jemanden, der sich mit dem Thema/Projekt an dem man gerade arbeitet super auskennt und den entscheidenden Tipp geben kann, wenn man mal nicht weiterkommt.

Ich möchte diesen Thread auch nicht in einer endlosen Diskussion über potentielle Schadsoftware und Motive dafür ausarten lassen, deshalb wäre es nett, wenn ein Mod hier dicht machen könnte @__@.

~stiftII

xZise 27. Feb 2010 10:03

Re: Maus Bewegen, Ohne WinAPI
 
Moin,
vielleicht verstehe ich das falsch, aber wenn ein Programm den Mausinput ignoriert, wie willst du ihn dazu kriegen dies eben nicht zu tun?

MfG
Fabian

Luckie 27. Feb 2010 11:14

Re: Maus Bewegen, Ohne WinAPI
 
Das Programm ignoriert nur von der Windows API simulierte Mauseingaben, die an das Programm geschickt werden, wie SendInput usw.

Medium 27. Feb 2010 12:31

Re: Maus Bewegen, Ohne WinAPI
 
Das geht nicht! Entweder es wird direkt SendInput() gehooked, oder da ist nix. SendInput() erzeugt die selbe Reaktion wie ein von einem Treiber ausgelöster Input, und wenn man nicht explizit ein entsprechendes Flag in dem Input-Struct setzt, ist dies nachher nicht mehr von "echten" zu unterscheiden. Ich hab den Source zu einem Angelbot für World of Warcraft mal in der Hand gehabt, dieser lief mit SendInput(), und wurde scheinbar (laut Aussage sehr zahlreicher Nutzer in dem Forum) nicht von dem Guard "Warden" der bei WoW drin hängt moniert - und Warden IST rigoros! Das ist zwar nun keine Garantie, weil der Hersteller auch einfach stillschweigend hätte dulden können, aber wahrscheinlich ist das nicht. Auch ist es aber keine Garantie dafür, dass andere Anticheats da nicht evtl. doch allergisch werden, jedoch scheint mir SendInput() sehr tief anzusetzen. Es löst sogar problemlos Low-Lovel-Hooks wie echte Inputs aus.

Super, hab ich eigentlich schon wieder zu viel gebrabbelt... das Thema ist sicherlich interessant, wenn auch teils ausgesprochen geschmacklos.

himitsu 27. Feb 2010 13:07

Re: Maus Bewegen, Ohne WinAPI
 
Und um es noch weiterzutreiben (welches hier ja auch sozusagen mal angesprochen wurde):
Ein "virtueller" Maustreiber, welcher nicht von einer "echten" Hardwaremaus seinen Input bezieht, sondern von einem Programm, dürfte auch alles mögliche "umgehn", denn in Zeiten von USB-Mäusen oder Mäusen über andere Inputkanäle, kann man nicht mehr so einfach direkt die Maus, bzw. ihren "Port" Ansprechen, als wie es noch zu Zeiten der "einfachen" PS2-Mäuse der Fall war.

Aber nun könnte ein Gameguard denoch einfach alle Nachrichten von ihm unbekannten Treiber ignorieren.


So, ich glaub nun wurde alles Wichtige genannt.

Und vornweg ist natürlich immernoch der Punkt, daß wir ab hier nun nicht mehr tiefgreifender weiterhelfen, eben wegen den ganzen angesprochenen AGB-Sachen und sonstigen Cheatereinen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz