Speicher Manipulieren / Speicher auslesen / in Speicher schreiben
-
Guten Tag zusammen,
ich möchte ein Programm schreiben mit dessen Hilfe ich den
Speicher einer Adresse meiner Wahl manipulieren kann.
Damit meine ich Speicher von "fremden" Prozessen.
Zuerst wollte ich einfach mit einem Zeiger auf die Adresse verweisen
und den Wert manipulieren.
Dann erhalte ich folgenden Fehler:invalid conversion from `int' to `int*'
der entsprechende Code:
#include <iostream> using namespace std; int main() { int adresse = 123408; int wert = 5; int *test_zeiger; test_zeiger = 0; test_zeiger = adresse; // <- in dieser Zeile wird der Fehler verursacht *test_zeiger = wert; }So, nun zwei Fragen:
- Was habe ich falsch gemacht, bzw was muss ich machen um den Fehler zu beheben?
- Ich habe über die SuFu einen Post hier im Forum gefunden in dem
steht das fremde Prozesse vom System geschützt werden so das Speichermanipulationen zumindest so nicht möglich sind.
Wenn es so nicht geht (also einfach dem Zeiger die Adresse zuweisen und Wert ändern), wie geht es dann?
Ich hoffe ich konnte mich klar ausdrücken, danke im voraus

-
Erstens: Ein int ist kein Zeiger und das will dir dein Compiler auch erklären. Wenn du der Meinung bist, daß du es besser weißt, kannst du einen Cast verwenden, um den Compiler zu überstimmen (
test_zeiger=(int*)adresse;).Zweitens: Es geht GAR NICHT. Dein Betriebssystem wird nicht zulassen, daß du von außen auf den Speicher eines anderen Programmes zugreifst. Das bedeutet, daß die Zugriffe auf '*text_zeiger' entweder in einer Access Violation (Windows' Art zu sagen "du kommst hier nicht rein") oder in undefiniertem Verhalten resultieren (schlimmstenfalls ein Total-Crash deines Betriebssystems).
-
mal abgesehen davon das es saugefährlich ist, wie arrangiert sich zum beispiel der gamewizard mit dem OS damit er die werte im speicher der spiele verändert ?
-
Erstmal danke für die Antwort.
Also irgendwie muss es gehen.
z.B. mit tsearch kann man prozess Speicher durchsuchen nach Variablen und von diesen die Adresse auslesen und verändern.
Es gibt auch noch ein Tool heißt glaube ich Ramcheat. Mach eigentlich genau das gleiche hat nur weniger Funktionen.
-
Stichwort: WriteProcessMemory
http://msdn2.microsoft.com/en-us/library/ms681674.aspxAnders geht es nicht.
Verge
-
Hier ist noch was dazu
http://www.codecreator.net/wiki/pmwiki.php?n=Main.Artikel
-
Ok, viele Dank!
Das war genau das wonach ich gesucht habe