![]() |
Dynamische Speicheradressen
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 |
Re: Dynamische Speicheradressen
Normalerweise bleiben die Adressen da relativ gleich, aber wenn sie es nicht tun, musst du jedesmal neu suchen.
|
Re: Dynamische Speicheradressen
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.
|
Re: Dynamische Speicheradressen
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.
|
Re: Dynamische Speicheradressen
Ok danke, da werde ich wohl Google ein wenig mit Suchbegriffen vergewaltigen müssen :P
|
Re: Dynamische Speicheradressen
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). |
Re: Dynamische Speicheradressen
Vermutlich wehrt sich das Game gegen solche Cheat-Angriffe indem es die Datenstrukturen im Speicher herumschiebt.
|
Re: Dynamische Speicheradressen
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? |
Re: Dynamische Speicheradressen
Also ich habe da mal jemanden gefragt der sich wirklich mit Gothic auskennt.
Seine Antwort wie ich an die Adressen komme war folgende: Zitat:
Zitat:
Gruß Dash |
Re: Dynamische Speicheradressen
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:44 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