Speicheradressen lesen/schreiben mit AutoIt

Das Geheimnis der Trainer/Cheatprogrammierung: das Manipulieren von Speicheradressen! Just kiddin‘, but, weil ihr es seid, die Basics zum Lesen/Schreiben von Speicheradressen in AutoIt:

#include <nomadmemory .au3>
#RequireAdmin

$Adresse = 0x091ED140;

$Open = _memoryopen(ProcessExists("7100"))
$Read = _MemoryRead($Adresse , $Open, 'dword')
$write = _MemoryWrite($Adresse, $Open, "9999", 'dword')

Ihr braucht zuerst die NomadMemory.au3 (oder auch Memory.au3), ein AutoIt Add-in zur Speicherverwaltung.
Zusätzlich ist es ratsam die Adminrechte vorauszusetzen, da diese höchstwahrscheinlich nötig sein werden.

Nun sucht euch die Adresse, die ihr auslesen oder beschreiben wollt.. logisch, huh. Entweder in eine Variable packen, das spart Zeit, Nerven und Hornhaut oder später halt immer die Adresse eingeben.

Als nächstes den Prozessnamen oder sicherer wäre der Process Identifier (PID). In Zeile 6 wird der Prozess, wenn er gestartet ist, praktisch ge-hijackt.
Zeile 7 und 8 brauchen diesen Schritt, um in die Adresse schreiben oder daraus lesen zu können. Dass Zeile 8 den Wert 9999 in die Speicheradresse schreibt sollte klar sein.

Dieser Weg funktioniert bei statischen Speicheradressen. Diese statischen Adressen sind eher unüblich, normalerweise werden Pointer für Adressen genutzt, die ge“hackt“ werden wollen. Das heißt bei jedem Neustart ändert sich die Adresse, verweißt intern aber auf das selbe Ziel. Solche Pointer sind schwerer zu finden und zu manipulieren, ich kann es selber noch nicht mal. Aber Stay Tuned, es wird kommen.

8 Kommentare

  1. Und ein weiteres Danke an dich Hannes!

    Ich hab zwei Fragen:
    1. Gibt es einen Editor der mit AutoIt vertraut ist und somit alles farblich kennzeichnet und so? Notepad++ scheint es nicht zu kennen.

    2. Sorry für die laienhafte Frage: Gibt es auch „portable Compiler“? Ich will auf meinem Firmenrechner keine Softeware installieren. Wenn ich aber mal auf Dienstreise nen Abend Zeit zum Probieren habe möchte ich natürlich auch gern testen ob mein Gefrimel auf funzt.

    Viele Grüße!

    Fränk

  2. Na klar, SciTE ist da wohl die beste Wahl. Gibts auch in der Downloadseite von AutoIt, SciTE 4 sollte derzeit aktuell an. Top Editor dafür.

    Portable Compiler, geht es jetzt um AutoIt? Ich würde einfach mal den Aut2Exe Ordner von AutoIt auf nem Rechner ohne testen.

  3. Mal eine ganz doofe Frage: Weißt du, wie AutoIt auf den Speicherbereich der fremden Anwendung zugreift? Normalerweise sind die Speicherbereiche von verschiedenen Anwendungen voneinander getrennt – genau damit eine Anwendung nicht die Daten einer anderen Anwendung ändern kann.

  4. Habe mich gerade mal selber eingelesen. Mit Hilfe des OpenProcess()-API-Calls kann man anscheinend auf den Speicher des entsprechenden Prozesses zugreifen. Muss ich demnächst direkt mal ausprobieren, wie man da an ordentliche Speicheradressen rankommt.

  5. Für den Fall du willst mit AutoIt in Speicheradressen fummeln gibt es vielleicht etwas interessante Lektüre für dich:
    Speicher in AutoIt allgemein
    Pointer Tutorial
    Multi Level Pointer Tutorial
    Pointer Trainer mit Cheat Engine
    Reverse Engeneering, Cracking, Patching
    Noch mehr ollydbg engeneering
    Das eigne ich mir alles gerade so an, Stück für Stück. Neben Server und jQuery 😀
    Jo aber ich denke du wirst mir da schon bald einiges drüber erzählen können und selbst gecodete Lösungen anbieten 😉
    Ich freu mich drauf 🙂

  6. @ Hannes: Funktioniert! Sowohl die Auto2Exe als auch Scite lassen sich vom Stick aus auf „fremden“ Rechnern verwenden.

    @ Mea und Hannes: Lasst uns gern an euren Erfahrungen teilhaben. Ich freu mich drauf!

    Viele Grüße,

    Fränk

  7. @mea: Noch etwas zum Zugreifen auf andere Speicherbereiche. Ab Windows Vista wird
    ASLR verwendet um die Speicherbereiche zufällig an die Programme zu verteilen.
    Ich bin mir nicht sicher aber, wie sich das ganze mit NomadMemory verhält.

Schreibe einen Kommentar