AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamische Speicheradressen

Ein Thema von Dash · begonnen am 31. Jan 2007 · letzter Beitrag vom 31. Jan 2007
Antwort Antwort
Seite 1 von 2  1 2      
Dash
(Gast)

n/a Beiträge
 
#1

Dynamische Speicheradressen

  Alt 31. Jan 2007, 19:05
Hallo,

ich möchte bei einem Spiel von den CPU Spielern z.b. die Lebensenergie senken. Mein Problem ist nun, dass sich die Adressen der CPU Spieler immer ändern.

Zuerst hatte ich z.B. mit TSearch die Adresse
148E541C gefunden, als ich das Spiel dann neu gestartet hatte, war die Lebensenergie des gleichen CPU Spielers bei der Adresse 1590541C.
Nun scheint ja der hintere Teil der Adresse immer gleich zu sein, nur wie kann ich ohne immer wieder neu nach der Adresse zu suchen auf diese zugreifen?

Gruß
Dash
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Dynamische Speicheradressen

  Alt 31. Jan 2007, 19:10
Normalerweise bleiben die Adressen da relativ gleich, aber wenn sie es nicht tun, musst du jedesmal neu suchen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Dash
(Gast)

n/a Beiträge
 
#3

Re: Dynamische Speicheradressen

  Alt 31. Jan 2007, 19:18
Hm das ist ja blöde, aber wie arbeiten denn Trainer? Soweit ich weiß gibt es für dieses Spiel (Gothic2) ebenfalls welche. Bei Gothic2 ändert sich so ziemlich jede Adresse.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Dynamische Speicheradressen

  Alt 31. Jan 2007, 19:19
Gute Frage. Vielleicht geht das ja doch irgendwie, aber frag mich nicht, wie. Könnte sein, dass bei Gothic z.B. die Objekte verschiedene IDs haben, nach denen der Trainer sucht.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Dash
(Gast)

n/a Beiträge
 
#5

Re: Dynamische Speicheradressen

  Alt 31. Jan 2007, 19:22
Ok danke, da werde ich wohl Google ein wenig mit Suchbegriffen vergewaltigen müssen
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Dynamische Speicheradressen

  Alt 31. Jan 2007, 20:21
Moin Denis,

ein paar Suchbegriffe kann ich Dir zu dem Thema mal geben:

VirtualQueryEx, VirtualProtectEx, ReadProcessMemory, WriteProcessMemory.

Wie TSearch das macht weiss ich nicht, aber eventuell kannst Du den Speicherbereich eingrenzen, wenn Du Dir die vom Programm belegten Speicherbereiche mal ansiehst.
Beispielsweise hat jedes Programm einen Speicherbereich für das Environment (die Umgebungsvariablen, wie TEMP, PATH usw.), dass auch immer die gleiche Adresse hat.
Es könnte also gut sein, das die Gewünschten Adressen auch immer im gleichen Block liegen (von der Reihenfolge der Blöcke her gesehen, nicht unbedingt von dessen Startadresse).
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: Dynamische Speicheradressen

  Alt 31. Jan 2007, 20:24
Vermutlich wehrt sich das Game gegen solche Cheat-Angriffe indem es die Datenstrukturen im Speicher herumschiebt.
  Mit Zitat antworten Zitat
jmd anders

Registriert seit: 13. Mai 2004
84 Beiträge
 
#8

Re: Dynamische Speicheradressen

  Alt 31. Jan 2007, 20:43
guck mal ob es da nicht einen pointer auf die adresse gibt, der sich nicht immer verändert.
also such erst die Life adresse dann nimmst du den wert der pointer adresse und suchst die immer wieder.
welches spiel soll es denn sein?
  Mit Zitat antworten Zitat
Dash
(Gast)

n/a Beiträge
 
#9

Re: Dynamische Speicheradressen

  Alt 31. Jan 2007, 20:46
Also ich habe da mal jemanden gefragt der sich wirklich mit Gothic auskennt.
Seine Antwort wie ich an die Adressen komme war folgende:
Zitat:
Als allererstes brauchst du natürlich eine Grundlage,
d.h. du musst ersteinmal die Adresse zu einem NPC haben.
Und diese Adresse suchts du dann im Speicher,
da aber Gothic diesen Adresse selbst einsetzt,
wirst du sehr viele falsche Treffer laden,
das heißt aussieben, aussieben und nochmal aussieben.



Ich empfehle dir für die Suche im Speicher keine eigenen Programme
zu verwenden (ausser vll. in Sonderfällen), da gibt es bereits schon
tolle Alleskönner.

Ich empfehle dir da TSearch,
mit integriertem Debugger und einer äusserst schnellen Suche (auch bei Strings).
  1. Such dir einen NPC, übernehme ihn (mit "o", im Marvin-Mode) und suche nach seinen HP (z.B. 40)
  2. HP senken und weitersuchen
  3. Wenn du immernoch mehrere Adressen hast, dann Schritt 2 wiederholen
  4. Wenn du nur noch einen Treffer hast, dann von der Adresse nur 0x184 abziehen

Und schon hast du die Adresse des jeweiligen NPCs.
Eines kapier ich aber jetzt immer noch nicht: Wie zieh ich z.B. 0x184 von 148E541C ab?

Zitat:
guck mal ob es da nicht einen pointer auf die adresse gibt, der sich nicht immer verändert.
also such erst die Life adresse dann nimmst du den wert der pointer adresse und suchst die immer wieder.
welches spiel soll es denn sein?
Bei dem Spiel handelt es sich um Gothic 2. Wie bekomme denn raus ob es einen Pointer gibt?

Gruß
Dash
  Mit Zitat antworten Zitat
jmd anders

Registriert seit: 13. Mai 2004
84 Beiträge
 
#10

Re: Dynamische Speicheradressen

  Alt 31. Jan 2007, 20:48
hex adressen im windows rechner, außerdem kannst ud auch mit delphi hex werte verabeiten mit '$' vor der zahl, also $ABC wäre ein hex wert.


pointer:

wenn zum beispiel $1234 die adresse vom life ist, aber die sich immer ändert, dann suchst du in der jetzigen session einfach nach $1234, guckst wieviele adressen $1234 als wert haben(du kannst die auch bei tsearch in so eine liste hinzufügen, dann startest du das game neu und suchst wieder nach der life adresse, die ist dann zb $2345 und dann suchst du nun nach $2345.

wenn du jetzt eine adresse mit dem wert $2345 findest die acuh zuvor $1234 gehalten hast, dann kann es sein, dass es sich um den pointer auf die life adresse handelt, weiteres probieren sichert dein erkenntnis.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz