Zugriff auf RAM-Addressen via C++



  • Hallo,

    gibt es die Möglichkeit bestimmte Addressen aus dem Arbeitsspeicher auszulesen? Ich will so ne Art Game Trainer machen, habe mit ArtMoney die Addressen der interessanten Variablen herausgefunden und will diese nun in einem C++ Programm verarbeiten.

    greetZ



  • Wenn dein Betriebssystem mitspielt, reicht ein einfacher Cast char* ptr =(char*)0x4711; aus. Wenn nicht (und Windows ist bekannt dafür, Zugriffe außerhalb deines eigenen RAM-Bereiches abzuwürgen), wird es wohl schwieriger.



  • Hmm aber sind diese Addressangaben nicht relativ? Daher wenn ich mir da irgend ne Addresse in nen Pointer lade dann wird doch zufällig irgend eine Zahl die an der Addresse in dem Speicherbereich von meinem Programm steht ausgegeben. Ich muss doch vorher irgendwie erst mitteilen dass sich die Addresse im Speicherbereich eines anderen Programmes befindet oder nicht???



  • KalleP schrieb:

    Hmm aber sind diese Addressangaben nicht relativ? Daher wenn ich mir da irgend ne Addresse in nen Pointer lade dann wird doch zufällig irgend eine Zahl die an der Addresse in dem Speicherbereich von meinem Programm steht ausgegeben. Ich muss doch vorher irgendwie erst mitteilen dass sich die Addresse im Speicherbereich eines anderen Programmes befindet oder nicht???

    Das Problem ist, dass du nicht ohne weiteres Zugriff auf diesen Speicherbereich
    hast. Wenn du einen solchen haben willst, musst du dich mal um entsprechende
    WinAPI Funktionen bemuehen, mit Standard-C++ Mitteln, wirst du da nicht
    allzu weit kommen.

    gruss
    v R



  • Hi!

    Für Windows hatte ich da mal in einem anderen Topic zwei Links zu einem Tutorial geschickt, wie sowas geht:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-165726-and-highlight-is-.html

    Greetz



  • Ja danke das ist genau das was ich gesucht habe!

    Ich hab jedoch noch ein Problem damit. Wenn ich das mit Dev-CPP kompiliere funzt das Programm einwandfrei.
    Kompiliere ich mit Visual Studio muss ich den Programmnamen (2 Parameter bei FindWindow) erst noch in LPCWSTR casten. Dann lässt es sich zwar kompilieren aber das Programm welches ich suche wird nicht mehr gefunden. Woran kann das liegen?



  • KalleP schrieb:

    Dann lässt es sich zwar kompilieren aber das Programm welches ich suche wird nicht mehr gefunden. Woran kann das liegen?

    An falschen UNICODE-Einstellungen.

    Das bedeutet, der Cast an dieser Stelle ist falsch. Wenn du den Programmnamen als Literal angegeben hast, solltest du ihn mit _T("...") oder TEXT("...") maskieren, wenn du ihn von Hand eingegeben hast, hilft vielleicht der Umstieg von 'char' auf 'TCHAR'.


Anmelden zum Antworten