Seite 1 von 1

Werte manipulieren

Verfasst: Mi Apr 25, 2012 9:50 pm
von Kmitska
Hallo Leute,

da fällt mir gerade eine Frage ein...

Ich hatte mal versucht durch Adressen von andere Variablen die Werte zu ändern, eigentlich von so einem Spiel.

Wie ich das gemacht habe?
Habe meinen Zeiger eine Adresse zugewiesen und danach 2 Threads gestartet.
Thread 1: Eine for-Schleife die eine Position nach "unten" geht also: --Zeiger.
Thread 2: Das Gleiche mit: ++Zeiger.

Daraufhin habe ich gewartet bis ein auffäliger Wert wie z. B. "12345678" gefunden wurde (Habs natürlich im Spiel z. B. mein Geld so eingestellt)

Als ich versucht habe diesen Wert zu ändern in diesem Fall "manipulieren" hat es nicht geklappt.
also: *Zeiger = 1;

Ich weiß, dass jedes Programm einen "Speicherbereich" zugewiesen bekommt vom OS, aber wie könnte man das nun durchsetzen?

Danke im Voraus,

Kind regards,
Kmitska

Re: Werte manipulieren

Verfasst: Do Apr 26, 2012 6:05 am
von Bebu
Hast du den Wert manipuliert? Oder wie du gerade geschrieben hast, die Position des Zeigers? Hast du einen Mutex gesetzt, bevor die Threads in dem Speicherbereich geschrieben haben?

Re: Werte manipulieren

Verfasst: Do Apr 26, 2012 6:08 am
von cloidnerux
Ich weiß, dass jedes Programm einen "Speicherbereich" zugewiesen bekommt vom OS, aber wie könnte man das nun durchsetzen?
Ich muss sagen, ich hab keine Ahnung. Nicht weil ich kein C++ kann, sondern weil alle großen OS entsprechende Schutzmechanismen haben, die eben solche Manipulativen Zugriffe erstmal verbieten, und wenn es sein muss mit einer Page-Exception oder ähnlichem.
Folglich musst du dich in dein System, ich nehme mal an du hast Windows, einarbeiten. Darfst dich mit der WinAPI und wie Windows funktioniert vertraut machen und dann kannst du anfangen bestimmte Dinge auszunutzen.
Das kann so ein halbes bis ein ganzes Jahr dauern, Windows ist nicht das einfachste zu lernen.

Es tut mir zwar leid, aber du wirst das wohl kaum auf die Schnelle hinbekommen, weil es eben zu sehr OS-spezifisch ist.

MfG cloidnerux

Re: Werte manipulieren

Verfasst: Do Apr 26, 2012 9:33 am
von Xin
Kmitska hat geschrieben:Ich hatte mal versucht durch Adressen von andere Variablen die Werte zu ändern, eigentlich von so einem Spiel.
Sollte Tools waren auf Rechnern ohne Speicherschutz sehr beliebt. Da funktioniert das auch.
Rechner ohne Speicherschutz stürzen aber auch komplett ab, wenn ein Programm Mist baut.
Darum gibt es heute keine Betriebsysteme ohne Speicherschutz mehr.

Zwei Threads braucht man dafür aber nicht.
Kmitska hat geschrieben:Ich weiß, dass jedes Programm einen "Speicherbereich" zugewiesen bekommt vom OS, aber wie könnte man das nun durchsetzen?
Gar nicht, Du bekommst den Speicherbereich Deines Spiels nie zu sehen, denn die MMU (Memory Management Unit), die jede heute CPU besitzt, lotst Dich um die Speicherbereiche aller anderen Programme herum.

Du müsstest Dich in den Kernel einklinken. Und hier gehen die Probleme los, die vermutlich dafür verantwortlich sind, dass ich auf modernen OS solche Tools nicht mehr gesehen habe.

Re: Werte manipulieren

Verfasst: Do Apr 26, 2012 9:01 pm
von Kmitska
Ich glaube ich muss mich jetzt langsam für einen OS entscheiden, oder?
Ich habe mich immer geweigert die Befehle von anderen Systeme zu lernen...

Re: Werte manipulieren

Verfasst: Do Apr 26, 2012 9:07 pm
von cloidnerux
Ich glaube ich muss mich jetzt langsam für einen OS entscheiden, oder?
Ich habe mich immer geweigert die Befehle von anderen Systeme zu lernen..
Du musst dich nicht entscheiden, du kannst nur nicht alles können, weil es da eine sehr große Auswahl an verschiedenen OS hast.
Und es gibt keine "Befehle von einem System". Es gibt nur die Funktionsweise eines Systems und seine API. Und wenn du irgendetwas auf einem System machen willst, musst du dich irgendwann damit auseinender setzten.
Im Endeffekt ist es nur eine Frage der Zeit, die du bereit bist zu Investieren.

Re: Werte manipulieren

Verfasst: Fr Apr 27, 2012 8:49 am
von Xin
Kmitska hat geschrieben:Ich glaube ich muss mich jetzt langsam für einen OS entscheiden, oder?
Ich habe mich immer geweigert die Befehle von anderen Systeme zu lernen...
Ich habe mich bisher nicht entschieden.
Ich benutze Linux, Mac und Windows. Allerdings habe ich mit Linux angefangen und halte das nicht für die schlechteste Wahl, um mit der Programmierung einzusteigen.