-
hallo , also erstmal ich bin noch TOTALER anfänger mit c++ und bin gerade erst dabei die ganzen funktionen zu lernen ,
ich bin nicht so der Bücherwurm sondern eher Learning by Doing hab so auch schon einiges gelernt nur zu diesem thema oder auch zu c++ algemein muss
man leider nach guten hilfen viel suchen , (PHP war da einfacher)
nun meine frage
Ich habe einen Speicheradresse sagen wir mal 0x07250340 diese hat jetzt den wert 5 nun möchte ich mit c++ den wert ändern sagen wir einfach in 6 .
kann mir einer kurz erklären oder zeigen wie das geht ich habe schon einige tut durchgeschaut aber leider keine anleitung gefunden die wirklich so ein thema behandelt ,
danke
-
Hast du ein Problem mit der Syntax?
Die direkte Version:
unsigned char* pPointer = 0x07250340;
*pPointer = 6;
Allerdings sind die Zeiten andere geworden. Du kannst nicht wild im Speicher rumpörkeln. Der Bereich, auf den der Pointer zeigt, ist besser deiner und beschreibbar. Sonst musst du mit lustigen Effekten wie Abstürzen rechnen.
-
ja irgentwie stimt mit dem syntax was nicht wen ich deinen benutze
Code :1 2 3 4 5 6
#include<iostream> unsigned char* pPointer = 0x07250340; *pPointer = 6;
bekomme ich folgende fehler
zeile 5 C:\Dev-Cpp\Unbenannt1.cpp invalid conversion from `int' to `unsigned char*'
zeile 6 C:\Dev-Cpp\Unbenannt1.cpp expected constructor, destructor, or type conversion before '=' token
zeile 6 C:\Dev-Cpp\Unbenannt1.cpp expected `,' or `;' before '=' token
ich dachte es geht so :
Code :1 2 3 4 5 6 7 8
#include<iostream> int main() { int *i_ptr = (int*)(0x07250340); *i_ptr = 5; }
doch das geht auch nicht da stürzt es nur ab
weist du was da falsch ist ?
-
Bei Problemen mit Codes, postet bitte den entsprechenden Codeausschnitt und setzt den in entsprechende Tags.
( [cpp] [/cpp] [css] [/css] [html] [/html] [java] [/java] [javascript] [/javascript] [php] [/php] [sql] [/sql] )
"Funktioniert nicht" ist keine Fehlermeldung. Bitte eine genaue Fehlerbeschreibung und, wenn vorhanden, Fehlermeldungen posten.
RegEx Tutorial
PHP Funktionsreferenz
-
ich habso gemacht
Code :1 2 3 4 5 6 7 8 9 10
#include<iostream> int main() { int *i_ptr = (int*)(0x07250340); system("PAUSE"); *i_ptr = 5; };
und bekomme wieder einen absturz die adresse ist aber richtig
bildabsturz:
http://www4.pic-upload.de/06.06.10/ptxp8ldddrbf.jpg
-
Was heißt das, die Adresse ist richtig?
Was soll denn das für eine Adresse sein?
Wie Endurion schon gesagt hat, verwindert Windows, dass du einfach so in den Speicher von anderen Programmen etc hineinschreibst.
Du kannst nur auf Speicher zugreifen, der dir auch gehört
-
äHHHHHHHHHH WAS mir gehören was meints du den damit
also das program was diesen speicher benutz ist auf meinem rechner drauf und ist gestartet wenn du das meinst
und wenn ich mir den speicherbereich ansehe hat er derzeit einen wert von 5 und nun mmöchte ich den bereich ersetzen durch einen wertt von 6 das ist was ich vor habe fang ich das falsch an ?
-
Damit meine ich, der Speicherbereich, den du ändern willst,
muss nicht nur in deinem Computer sein, sondern auch zu dem Programm gehören, das ihn ändern will
In DOS-Zeiten hat man zwar den genzen RAM nach belieben beschreiben können, aber das ist bei der heutigen Virenverbreitung ziemlich undenkbar.
Windows hat inzwischen einen Schutzmechanismus, das ein Programm eben nur seinen eigenen, zugeteilten Speicherbereich bearbeiten darf.
-
ok
kann es sein das ich mich dan falsch ausgedrückt habe dann nochmal von vorne
also ich habe das spiel solitär und die adresse 0x0045A394 ist bei mir für den punktestand zuständig dieser ist jetzt 10
nun möchte ich c++ den wert auf 300 ändern , also das ich 300 punkte habe , das müste doch gehen oder und wen ja wie ,weis das jemand
könnte mir da jemand einen kleinen code geben das ich das mal testen kann ?
-
So also ich hab es nun geschaft zumindest funktioniert es
mein Code
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
#include <stdio.h> #include <iostream> using namespace std; int main() { cout << "neuer wert? "; int wert; cin>>wert; cout << "\nwert schreiben ?\n\n0=Nein 1=JA "; int eingabe; cin>>eingabe; if(eingabe==0) { return 0; } HWND window = NULL; while(window == NULL) { Sleep(100); window = FindWindow(NULL, "Solitär"); } DWORD prozess; GetWindowThreadProcessId(window, &prozess); HANDLE handle; handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, prozess); DWORD puffer = NULL; switch(eingabe) { case 1: WriteProcessMemory(handle,(void*)(0x0045A394),&wert,6,&puffer); break; CloseHandle(handle); } return 0; }
könnte einer der ahnung hat mal drüberschauen und mir sagen ob das so alles sauber ist oder ob fehler drin sind ?
danke
-
06.06.10 13:21 #11
Willst du etwa dein Spielstand ändern und sozusagen schummeln?
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
Bei Problemen mit Codes, postet bitte den entsprechenden Codeausschnitt und setzt den in entsprechende Tags.
( [cpp] [/cpp] [css] [/css] [html] [/html] [java] [/java] [javascript] [/javascript] [php] [/php] [sql] [/sql] )
"Funktioniert nicht" ist keine Fehlermeldung. Bitte eine genaue Fehlerbeschreibung und, wenn vorhanden, Fehlermeldungen posten.
RegEx Tutorial
PHP Funktionsreferenz
-
das war nur ein test mit Solitär weil hier im forum viele das spiel solitär nehmen dachte ich das währe so der standart
ich will in einem spiel die mindestzahl der spieler heraufsetzen nicht schummeln
Stimmt mein code den jetzt so oder ist der müll ?
-
06.06.10 13:36 #14
- Registriert seit
- Sep 2005
- Beiträge
- 69
Vielleicht kann mich ja mal jemand korrigieren, wenn ich falsch liege, aber ich bezweifel, dass das immer funktioniert.
Ich vermute mal, dass das unter Windows passiert und da sollte eigentlich der Speicherschutz greifen und den Zugriff auf den fremden Bereich verbieten, oder?!
Oder wird durch "OpenProcess()" automatisch der Zugriff daruf erlaubt?
Und noch was: Die Adresse kann theoretisch immer wieder eine andere sein, je nach dem wie das OS gerade den virtuellen Speicher zugewiesen hat, oder?
-
06.06.10 13:43 #15mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
Ähnliche Themen
-
Mehrere Inputfelder mit dem selben Wert füllen
Von knoebi im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 10.03.08, 18:54 -
Mehrere Inputfelder mit dem selben Wert füllen
Von knoebi im Forum JavaAntworten: 7Letzter Beitrag: 10.03.08, 12:17 -
input Feld mit Wert aus Array füllen
Von Bencher im Forum Javascript & AjaxAntworten: 9Letzter Beitrag: 01.04.06, 22:47



2Danke

Zitieren


Login






