Hallo alle zusammen,
ich beschäftige mich momentan mit der Programmierung von Game-Trainern und habe hier mal eine Grundsatzfrage in der Hoffnung, dass mir die hier irgendwer beantworten kann.
Und zwar habe ich folgende Überlegung:
1. Eine Spieleprogrammierer definiert sich ja Variablen, die irgendwo auf den Speicher zeigen um dort dann Werte abzulegen.
2. Welcher Speicher reseviert wird, entscheidet nicht das Spiel, sondern mein Betriebssystem.
Gut, angenommen beide Annahmen stimmen.
Wenn ich jetzt bspw. mit der CheatEngine nach den "Adressen" suche wo ein bestimmter Wert hinterlegt wurde, würde mich interessieren was eigentlich jetzt genau die "Adresse" ist:
Steht diese Adresse quasi für den Platzhalter der Variable, die vom Programmierer definiert wurde ? Oder ist das die konkrete Adresse des Speichers?
Weil wenn letzteres, wie kann es dann sein das eine bestimmte Adresse immer "gilt" ? Wenn doch mein Betriebssystem entscheidet, welcher Speicher gerade zur Verfügung steht.
Beispiel.
Der GamerTrainer-Programmeirer sieht in der Cheat Engine, das der Wert 20 in der Adresse 0x000AFCC4 hinterlegt wurde.
Jetzt greift über seinem Code darauf zu:
WriteProcessMemory(hProc, (LPVOID)0x000AFCC4, &newValue, (DWORD)sizeof(newValue), NULL);
______________________________
Was ist wenn sowohl Spiel und Game Trainer auf einen anderen PC gestartet werden? Kann ja sein das der Wert 20 eben nicht mehr an der Adresse 0x000AFCC4 hinterlegt wurde, sondern ganz woanders im Speicher. Der Trainer aber trotzdem auf die Adresse 0x000AFCC4 zugreift?
Ich hoffe, die Problematik die mir durch den Kopf schwirrt ist verständlich.
Viele Grüße
ich beschäftige mich momentan mit der Programmierung von Game-Trainern und habe hier mal eine Grundsatzfrage in der Hoffnung, dass mir die hier irgendwer beantworten kann.
Und zwar habe ich folgende Überlegung:
1. Eine Spieleprogrammierer definiert sich ja Variablen, die irgendwo auf den Speicher zeigen um dort dann Werte abzulegen.
2. Welcher Speicher reseviert wird, entscheidet nicht das Spiel, sondern mein Betriebssystem.
Gut, angenommen beide Annahmen stimmen.
Wenn ich jetzt bspw. mit der CheatEngine nach den "Adressen" suche wo ein bestimmter Wert hinterlegt wurde, würde mich interessieren was eigentlich jetzt genau die "Adresse" ist:
Steht diese Adresse quasi für den Platzhalter der Variable, die vom Programmierer definiert wurde ? Oder ist das die konkrete Adresse des Speichers?
Weil wenn letzteres, wie kann es dann sein das eine bestimmte Adresse immer "gilt" ? Wenn doch mein Betriebssystem entscheidet, welcher Speicher gerade zur Verfügung steht.
Beispiel.
Der GamerTrainer-Programmeirer sieht in der Cheat Engine, das der Wert 20 in der Adresse 0x000AFCC4 hinterlegt wurde.
Jetzt greift über seinem Code darauf zu:
WriteProcessMemory(hProc, (LPVOID)0x000AFCC4, &newValue, (DWORD)sizeof(newValue), NULL);
______________________________
Was ist wenn sowohl Spiel und Game Trainer auf einen anderen PC gestartet werden? Kann ja sein das der Wert 20 eben nicht mehr an der Adresse 0x000AFCC4 hinterlegt wurde, sondern ganz woanders im Speicher. Der Trainer aber trotzdem auf die Adresse 0x000AFCC4 zugreift?
Ich hoffe, die Problematik die mir durch den Kopf schwirrt ist verständlich.
Viele Grüße