Inspiriert von diesem TuT

werd ich hier schreiben, wie man das in AutoIt realisiert.
Was wir brauchen:
-Grundlegende AutoIt Kenntnisse
-Einen Script Editor (ich benutze Scite)
-Die "NomadMemory.au3" -siehe Anhang
-Solitär - zumindest werde ich es an Solitär erklären, ist aber auch auf jedes andere spiel übertragbar
Was wir machen:
Wir werden den Spielstand in solitär durch eine Änderung in der Memory ändern.
Als erstes suchen wir die Speicheradresse mit unsere CheatEngine, was eigentlich kein Problem darstellen sollte.
Bei mir ist es "077DC9D8".
Wenn wir die Adresse haben können wir mit der Umsetzung in AutoIt starten.
Hack:
Erstellt eine neue .au3 Datei und öffnet sie mit eurem Script Editor
Um auch unter Vista mit der Memory zu arbeiten brauchen wir Administratorrechte, deshalb starten wir mit
PHP Code:
#RequireAdmin ;Unter Vista brauch das Program Administrator rechte!
um mit den Memory Funktionen arbeiten zu können fügen wir die "NomadMemory.au3" datei in unser Skript ein. (siehe Anhang).
Diese Datei kopiert ihr einfach in den "Includes" Ordner in eurem AutoIt Verzeichnis.
PHP Code:
#include <NomadMemory.au3> ;brauchen wir, um die Memory Funktionen nutzen können.
;(Geht zwar auch per Hand ist aber so viel einfacher.)
SetPrivilege("SeDebugPrivilege", 1) ;ist nicht nötig, sollte aber verwendet werden
Damit das Script nur ausgeführt wird, wenn Solitär gestarte ist, erstellen wir eine Schleife, die solange läuft bis AutoIt Solitär findet
PHP Code:
While Not ProcessExists("Solitaire.exe");Läuft so lange, bist Solitär gestartet ist.
Sleep(200)
WEnd
;Der Quellcode, der nach der While Schleife steht wird erst beachtet, wenn Solitär gestarte ist.
als nächstes öffnen wir die Memory
PHP Code:
$ProcessID = ProcessExists("Solitaire.exe");gibt die PID zurück welche wir für _memoryopen brauchen
$Open = _memoryopen($ProcessID) ;Sagt AutoIt mit welcher Memory es arbeiten soll
nun kommen wir zu der eigentlichen veränderung der Memory
PHP Code:
$Adresse = 0x077DC9D8 ;um in AutoIt eine Hex angabe zu machen setzt ihr einfach ein 0x davor(Die Adresse kann bei euch anders sein)
$Punkte =InputBox("Punkte","Wieviel Punkte möchten sie?");eine einfache InputBox um die Punkte zu speichern.(ähnlich Cin aus C++)
$write = _MemoryWrite($Adresse, $Open, $Punkte, 'dword');die Funktion, die die Punkte verändert.
;am ende der Funktion muss noch der Memory Typ geschrieben werden ('dword' = 4Byte)
der komplette code sieht dann so aus:
PHP Code:
#RequireAdmin ;Unter Vista brauch das Program Administrator rechte!
#include <NomadMemory.au3> ;brauchen wir, um die Memory Funktionen nutzen können.(Geht zwar auch per Hand ist aber so viel einfacher.)
SetPrivilege("SeDebugPrivilege", 1) ;sollte beim arbeiten mit der Memory immer gesetzt werden
While Not ProcessExists("Solitaire.exe");Läuft so lange, bist Solitär gestartet ist.
Sleep(200)
WEnd
;Der Quellcode, der nach der While Schleife steht wird erst beachtet, wenn Solitär gestarte ist.
$ProcessID = ProcessExists("Solitaire.exe");gibt die PID zurück welche wir für _memoryopen brauchen
$Open = _memoryopen($ProcessID) ;Sagt AutoIt mit welcher Memory es arbeiten soll
$Adresse = 0x077DC9D8 ;um in AutoIt eine Hex angabe zu machen setzt ihr einfach ein 0x davor(Die Adresse kann bei euch anders sein)
$Punkte =InputBox("Punkte","Wieviel Punkte möchten sie?");eine einfache InputBox um die Punkte zu speichern.(ähnlich Cin aus C++)
_MemoryWrite($Adresse, $Open, $Punkte, 'dword');die Funktion, die die Punkte verändert.am ende muss noch die art
;am ende der Funktion muss noch der Memory Typ geschrieben werden ('dword' = 4Byte)
MfG
Timo264