Forum: Gesperrte Threads Daten aus DirectX-Spiel anzeigen


von Programmierer (Gast)


Lesenswert?

Hey.

Ich suche ein Programm, das mir Daten aus einem aktuell laufenden 
DirectX-Spiel anzeigt also etwa Drehwinkel der Spielfigur oder 
ähnliches. Ich möchte diese Daten in C# in Echtzeit bearbeiten, also ist 
auch eine "Brücke" dorthin vonnöten.

: Verschoben durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Tja, da wirst Du in den Sourcen des DirectX-Spieles eine entsprechende 
Schnittstelle einbauen müssen.

Die hast Du nicht?

von ElTio (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Die hast Du nicht?

Als "Programmierer" wird er die bestimmt haben.... :-D

von Sharping (Gast)


Lesenswert?

Sooo schwer ist das nun auch nicht ohne die Sourcen. Diese Daten kann 
man locker aus dem Speicher der Anwendung auslesen (Stichwort "Aimbot").

von ElTio (Gast)


Lesenswert?

Dann fehlt ja nur noch etwas Zement für die Brücke... Spannen wäre ja 
auch noch des "Programmierers" Definition von Echtzeit.

von Karl H. (kbuchegg)


Lesenswert?

Sharping schrieb:
> Sooo schwer ist das nun auch nicht ohne die Sourcen.

Wenn man weiß was man tut, ja.

Aber viele Menschen haben heutzutage eine etwas seltsame Vorstellung 
davon, wie programmieren funktioniert.

von Programmierer (Gast)


Lesenswert?

Sharping schrieb:
> Sooo schwer ist das nun auch nicht ohne die Sourcen. Diese Daten kann
> man locker aus dem Speicher der Anwendung auslesen (Stichwort "Aimbot").

Interessant. Hast du einen guten Link dafür?

von horst (Gast)


Lesenswert?

OpenProcess
ReadProcessMemory

-> Google

von Programmierer (Gast)


Lesenswert?

Ich habe http://www.homeofgamehacking.de/showthread.php?tid=146 
gefunden. Das funktioniert auch. Allerdings frage ich, mit welcher 
Taktik ich nun die Positionen für Drehung, Neigung und Rotation finden 
soll. Welche Datentypen das sein könnten.

von horst (Gast)


Lesenswert?

Ich mache sowas meist mit einem zweiten Display auf dem ich die Werte 
anzeige. Wenn man jetzt die Drehung vornimmt werden sich manche 
Speicherbereiche ändern. Datentyp wird warscheinlich float oder double 
sein.

von Programmierer (Gast)


Lesenswert?

horst schrieb:
> Ich mache sowas meist mit einem zweiten Display auf dem ich die Werte
> anzeige. Wenn man jetzt die Drehung vornimmt werden sich manche
> Speicherbereiche ändern. Datentyp wird warscheinlich float oder double
> sein.

Und was tue ich, wenn bei jedem Spielstart die Werte woanders sind?

von V. B. (dr-robotnik)


Lesenswert?

Wenn es darum geht, dass du mit Hilfe der Daten irgendwelche Aktoren 
steuern willst kann 'X-Sim' sowas glaub ich.

http://www.x-simulator.de/forum/x-sim-software-f40.html

Ist wohl dazu gedacht um aus verschiedenen Spielen heraus 
Motion-Plattformen u. Ä. zu steuern.

von Olek (Gast)


Lesenswert?

Wenn der Sourcecode nicht vorliegt, dann ist es bei einem Spiel, welches 
über 100MB im Speicher verbraucht sehr schwer die entsprechenden 
Rohdaten zu interpretieren. Ich als Programmierer würde dies garnicht 
erst angehen.
Wenn ich jedoch planen würde einen AIMbot zu schreiben würde ich erst 
auf Schnittstellen lauschen die weniger Datenführen, jedoch die 
benötigte Date enthalten, eventuell Netzwerktraffic und dort nach 
Korrelationspunkten mit Maus und Tastatur suchen.

Die einfache Lösung für einen AIMbot ist den Grafikspeicher auszulesen, 
also mit dem Bitmap zu arbeiten und einen AIMbot der auf entsprechende 
Pixel reagiert zu schreiben, dies ist meist viel einfacher und kann auf 
jedes Ballerspiel angewendet werden. Die Methode ist jedoch mit einem 
unangnehmen FPS verlust verbunden.

von Programmierer (Gast)


Lesenswert?

Olek schrieb:
> Wenn der Sourcecode nicht vorliegt, dann ist es bei einem Spiel, welches
> über 100MB im Speicher verbraucht sehr schwer die entsprechenden
> Rohdaten zu interpretieren. Ich als Programmierer würde dies garnicht
> erst angehen.
> Wenn ich jedoch planen würde einen AIMbot zu schreiben würde ich erst
> auf Schnittstellen lauschen die weniger Datenführen, jedoch die
> benötigte Date enthalten, eventuell Netzwerktraffic und dort nach
> Korrelationspunkten mit Maus und Tastatur suchen.
>
> Die einfache Lösung für einen AIMbot ist den Grafikspeicher auszulesen,
> also mit dem Bitmap zu arbeiten und einen AIMbot der auf entsprechende
> Pixel reagiert zu schreiben, dies ist meist viel einfacher und kann auf
> jedes Ballerspiel angewendet werden. Die Methode ist jedoch mit einem
> unangnehmen FPS verlust verbunden.

Du hast keine Ahnung vom Programmieren.

von Max W. (max96)


Lesenswert?

Die Methode über die Farbe zu gehen ist Schwachsinn!! Das geht 
vielleicht bei einfachen Spielen aber bei anderen, komplizierteren 
Spielen geht das nicht ich habe das schon selber probiert.

von Programmierer (Gast)


Lesenswert?

Max W. schrieb:
> Die Methode über die Farbe zu gehen ist Schwachsinn!! Das geht
> vielleicht bei einfachen Spielen aber bei anderen, komplizierteren
> Spielen geht das nicht ich habe das schon selber probiert.

Genau das meine ich mit

> Du hast keine Ahnung vom Programmieren.

Egal, ignorieren wir den selbsternannten Programmierprofi einfach.

Es wird technisch, bitte dennoch lesen und statt es zu ignorieren bei 
Nichtwissen mitteilen, wo ich weiterkommen könnte.

Also, ich bin so weit, daß ich mit Cheat Engine 6.2 die Werte 
herausfinde, die sich beim Drehen ändern. Ich versuche nur das Drehen 
einzugrenzen. Ich finde float-Werte etwa bei Amnesia, deren Änderung 
eine Änderung der Perspektive ergibt - Gebe ich einen neuen wert ein 
dreht sich die Perspektive, drehe ich die Perspektive, ändert sich der 
Wert. Soweit so gut.

Ich suche den Pointer über "Find out what accesses this address". Ich 
erkenne, jeder Wert+Offset beim Ergebnis ist gleich, egal ob er bei mov 
oder jne oder sonstwas steht.

Ich ändere die Suche in hex, starte eine neue Suche mit dem Wert. Ich 
finde einige Adressen. Ich nehme alle auf in die untere Liste, klicke 
jeweils Pointer an und gebe den Wert ein und darüber in das 
entsprechende Feld den Offset. Jedes Mal bekomme ich den gleichen float 
Wert, gut.

Starte ich Amnesia jetzt aber neu, zeigt keiner der Pointer-Werte auf 
den richtigen Wert. Starte ich Amnesia nochmal neu, funktioniert es 
wieder - dann ist aber auch der Wert ohne Pointer richtig. Starte ich 
nochmal neu, funktioniert es oder auch nicht.

Bei Dead Island kann ich keinen Wert ändern ohne daß er sofort wieder 
umgeändert wird.

von horst (Gast)


Lesenswert?

> Und was tue ich, wenn bei jedem Spielstart die Werte woanders sind?

Probier mal folgendes:
Errechne die Verschiebung im Speicher (offseta - offsetb). Suche dann 
nach einer Variable die um diesen Wert abweicht. Möglicherweise ist das 
ein Pointer.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.