Adresse auslesen und Wert ändern
-
Hey,
Ich spiele gerade ein wenig mit ReadProcessMemory und WriteProcessMemory rum und das klappt eig. ganz gut.
Ich hatte jetzt bei einem Programm die Adresse 0x0A30FEB8 ermittelt, doch nach dem nächsten start des Programms, war die Adresse 0x0A40FEB8, also leicht anders aber so kann ich eben keinen statischen Wert mehr haben.Also wie mache ich das nun richtig, also ich die richtige Adresse im Code rausfinde und dann eben mit der weiterarbeiten kann?
Hab noch nicht wirklich viel Arbeit von sowas! Also bitte etwas verständnis zeigen
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Wenn der Speicher dynamisch zur Laufzeit reserviert wird gibts eigentlich keine Möglichkeit das hinzukriegen, weil die Addresse immer abweichen kann.
Aber du schreibst du hast noch nicht wirklich Ahnung von sowas, also beschreib lieber was du erreichen willst und nicht wie.
-
Statische Adresse = Adresse die du verändern willst - DLL Base Adresse
Adresse die du verändern willst = Statische Adresse + DLL Base Adresse
Ich denke mal sowas suchst du.
-
Nimm Cheatengine und setze einen Read/Write Breakpoint auf die Speicheraddresse.
Dann lädst du die Executable in den Disassembler deiner Wahl (empfehle IDA Pro), springst du der Instruktion, die auf den Speicherbereich zugreift und reverse engineerst den Code, bis du weißt wie die Addresse zustande kommt. Das machst du dann genauso.
-
Oops da fehlte noch 0x1000
Statische Adresse = Adresse die du verändern willst - DLL Base Adresse
Adresse die du verändern willst = Statische Adresse + DLL Base Adresse
Und jedes Ergebniss glaub ich noch +0x1000 bin mir gerade nicht sicher.^^
Btw. die DLL Base Adresse kann man sich mit Cheat Engine auch anzeigen lassen.