[scanmem] set Befehl "loopen"?

...komplette Frage anzeigen

2 Antworten

Support gibt es auf GitHub https://github.com/scanmem/scanmem. "help set" löst das Rätsel. "set 0=0/1" setzt den ersten Match jede Sekunde auf 0.

Die GUI GameConqueror kann das für mehrere Werte gleichzeitig. Wenn das auch beim nächsten Spielaufruf funktionieren soll, ist jedoch ein echter Game Trainer wie ugtrain notwendig, der ASLR/PIC/PIE und ggf. dynamischen Speicher unterstützt.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von TuxCheater
19.05.2017, 18:22

Zum externen Scripten von scanmem verwendet man den "write" Befehl:

echo "write int32 0xde8764 99999" | scanmem `pidof warzone2100`

Das ist der Power-Wert von Warzone2100 3.2.1-6.1 unter openSUSE Leap 42.2.

1> lregions
[ 0] 993000,  102400 bytes, exe, 400000, rw-, /usr/bin/warzone2100
[ 1] 9ac000, 8777728 bytes, exe, 400000, rw-, unassociated

Der Wert liegt in der exe (Region "1", .bss Segment). Es handelt sich nicht um eine PIE (position-independent executable), da die Ladeadresse von der exe bei 0x400000 unter x86_64 liegt. Die Adresse bleibt damit bei jedem Spielaufruf gleich.

1> list
[ 0] de8764, 1 + 9e8764, exe, 1200, [I32 I16 ]

Scanmem 0.16 zeigt einen Match Offset an (0x9e8764). Addiert man diesen mit der Ladeadresse, so erhält man die absolute Speicheradresse. Das ist wichtig bei einer PIE, die mit ASLR bei jedem Spielaufruf an eine andere Adresse geladen wird. Dann bleibt nur der Match Offset konstant.

0

Hallo

gibt's eine möglichkeit wie ich unter Linux bei dem Programm "Scanmem" jede Sekunde einen Wert wieder auf 0 setze?

Ich kenne das Programm ja nicht, noch weiß ich was es tut, aber wenn Du eine Art Loop-Funktion haben willst ist eventuell watch eine Möglichkeit. Hier ein Beispiel:

watch -n1 "df -hT"

... einen Wert wieder auf 0 setze

Wo steht der Wert und wo kommt er her?

Linuxhase

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Felix193
11.03.2016, 18:04

Hallo, entschuldigung für die Verzögerte antwort.

watch ist schon anderweitig besetzt, zumal ich keinen Zugriff auf Konsolen Befehle habe.

Ich führe ein Programm mit der Konsole aus, und such dort nach einem bestimmten Wert. Dieser wird mit einem Befehl dann immer wieder zurück gesetzt. Leider muss dies immer wieder weiderholt werden...

0

Was möchtest Du wissen?