Announcement

Collapse
No announcement yet.

Offset der einer aktuelle Anwendung im Speicher und....

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Offset der einer aktuelle Anwendung im Speicher und....

    Wie kann ich eben den Offset einer Anwendung ( Spiel usw. ) in eine Variable speichern und dann z.B bestimmte Werte ( Hex, Dezimal ) suchen.
    Das ganze ist dafür gedacht, dass ich z.B vom meinem Programm Zahlen und Werte aus Fremden Programmen entnehmen kann...

  • #2
    Hallo,

    jede 32-Bit-Anwendung wird in einem eigenen, 4 GByte grossen Adressraum ausgeführt und ist von den anderen laufenden Anwendungen abgeschottet. Somit wird jede EXE immer an die exakt gleiche <b>logische</b> Speicheradresse geladen (siehe <b>Image Base Adress</b> aus dem Dialog für die Projektoptionen) - nur die CPU mit ihrem VMM kennt die tatsächliche Position der Speicherseite im RAM.

    Der Zugriff auf den Speicherbereich einer fremden Anwendung ist nur über die Mithilfe des Betriebssystems (API-Funktion <b>ReadProcessMemory</b>) möglich. Aber auch dann ist der Erfolg mehr als fraglich, denn der Speichermanager von Delphi kann den Inhalt einer Variable (Zeiger) an frei wählbarer Stelle im Adressraum unterbringen. Erst dann, wenn die Anwendung die Speicheradresse exakt definiert (API-Funktion <b>VirtualAlloc</b>) lassen sich die Speicheradressen auch bei verschiedenen Programminstanzen zuordnen.

    Wenn man wirklich bestimmte Daten aus fremden Adressräumen auslesen will, muss man vermutlich so vorgehen wie das einige MS-Tools machen: Der Speicherbereich wird nach markanten Signaturen durchscannt und die Addresse wird über die so gefundene relative Position berechnet. Allerdings ist das nur dann erfolgreich, wenn die untersuchte Anwendung keine Schutzmassnahmen (besondere Attribute für die Speicherseiten) gegen derartige Neugier ergriffen hat.
    &#10

    Comment

    Working...
    X