Auf Speicher von anderem Programm zugreifen?

HI!


Ich bin demletzt zufällig auf das Programm "Cheat Engine" gestoßen und hab ein paar Fragen.

ich hab mir ein programm geschrieben, dass einen int macht und dessen value und adresse ausgibt.
Nun möchte ich mit einem externen selbsgecodeten programm diesen speicherbereich ändern.

In meinem Externen prog steht jetzt
Code:
    int *q;
    q = 0x22ff7c;
wobei 0x22ff7c die adresse von dem freigegeben int is.
aber mein Compiler mag das nicht
=>9 ****.cpp invalid conversion from `int' to `int*'

warum?
und wie geht das richtig?
und wie kann ich ganze speicherbereiche abfragen?


lg Blacki
 
es geht z.B. so:

Code:
int* p = reinterpret_cast<int*>(0x123456);

Code:
std::cout << p << std::endl;
gibt dann aus, dass p auf 0x123456 zeigt.


mit einem reinterpret_cast kannst du einfach den Compiler zwingen, das zu tun, was du willst, auch wenn es für ihn schwachsinnig erscheint. Aber dieser Cast sollte so oft wie möglich vermieden werden (in diesem Fall sehe ich aber keine andere Möglichkeit, das Gewünschte zu erreichen).
 
Unter Windows kann man zur Speicherfreigabe DLLs benutzen die einen "Shared" Bereich haben. Um Speicherbereiche aus "Fremdprogrammen" auszulesen, wird man aber nicht um OS-Spezifische APIs herumkommen, denn ein Programm kann normalerweise nicht im Speicher von anderen "herumpfuschen" - es bekommt seinen eigenen "getrennten" virtuellen Speicherbereich, in dem es nach belieben herumschreiben darf, ohne dass dadurch andere Prozesse beeinträchtigt werden.Für die Trennung sorgt das Betriebssystem.
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-isa-de-4/s1-memory-virt-details.html

Unter Windows wird man also nicht um
OpenProcess und
ReadProcessMemory
bzw
WriteProcessMemory
ich hab die Seite mir zwar nur kurz angeschaut, sieht aber vernünftig aus:
http://www.codecreator.net/wiki/pmwiki.php?n=Main.Artikel
 
Thx 4 reply

ich schau mir mal die funktionen an, es kam mir schon komisch vor, das wenn ich die anwendung mehrmals gestartet hatte,immer die gleiche adresse benutzt wurde

Blacki
 
Zurück
Oben