NomadMemory Pointer

05/02/2015 23:46 Moneypulation#1
Hallo,

ich kriege es nicht hin einen Pointer mit AutoIt auszulesen. In CE funktioniert alles, auch wenn ich das Spiel neustarte, also müsste der Pointer stimmen.

CE gibt mir diese Adresse: "nostalex.dat"+003FCC5C
Und die zwei Offsets 825 und C

Nun sieht das bei mir in AutoIt so aus:

Mir wird aber ständig 0 zurückgegeben, auch wenn der Wert sich verändert. Hoffe jemand kann mir da helfen
05/03/2015 01:29 alpines#2
Es könnte an dem Datentyp liegen. Du liest nämlich erst im letzten Schritt nur den Wert aus. Davor liest du jedes mal einen Pointer, kein Byte. ('BYTE' -> 'ptr').

Alternativ kannst du ja mal _MemoryPointerRead probieren.
Dein Offset-Array sähe dann so aus.
[0] = 0
[1] = 0x825
[2] = 0xC

Der Return sieht dann wie folgt aus
[0] = Adresse vom Pointer (dynamisch)
[1] = Wert
05/03/2015 02:23 Moneypulation#3
Quote:
Originally Posted by alpines View Post
Es könnte an dem Datentyp liegen. Du liest nämlich erst im letzten Schritt nur den Wert aus. Davor liest du jedes mal einen Pointer, kein Byte. ('BYTE' -> 'ptr').

Alternativ kannst du ja mal _MemoryPointerRead probieren.
Dein Offset-Array sähe dann so aus.
[0] = 0
[1] = 0x825
[2] = 0xC

Der Return sieht dann wie folgt aus
[0] = Adresse vom Pointer (dynamisch)
[1] = Wert
Hat leider beides nichts gebracht. Wenn ich nur beim letzten read BYTE als typ angebe und davor ptr, bekomme ich trotzdem ständig 0 angezeigt und mit der Funktion bekomme ich Die Adresse 0x0000000000000000 mit der Value 0 :/
05/03/2015 03:37 BladeTiger12#4
Probier das mal so:
Code:
#RequireAdmin
#include <NomadMemory.au3>

$PID = ProcessExists("NostaleX.dat")
If $PID = 0 Then
	MsgBox(0, "", "Process does not exist")
EndIf
$hOpen = _memoryopen($PID)
$BaseAddress = 0x00400000
$StaticOffset = 0x003FCC5C
$sRead = _memoryread($BaseAddress + $StaticOffset, $hOpen) + 0x825
$sRead2 = _memoryread($sRead, $hOpen) + 0xC


While True

	$sRead3 = _memoryread($sRead2, $hOpen, 'BYTE')
	ToolTip($sRead3)
	Sleep(100)

WEnd
05/03/2015 05:39 Moneypulation#5
Quote:
Originally Posted by BladeTiger12 View Post
Probier das mal so:
Code:
#RequireAdmin
#include <NomadMemory.au3>

$PID = ProcessExists("NostaleX.dat")
If $PID = 0 Then
	MsgBox(0, "", "Process does not exist")
EndIf
$hOpen = _memoryopen($PID)
$BaseAddress = 0x00400000
$StaticOffset = 0x003FCC5C
$sRead = _memoryread($BaseAddress + $StaticOffset, $hOpen) + 0x825
$sRead2 = _memoryread($sRead, $hOpen) + 0xC


While True

	$sRead3 = _memoryread($sRead2, $hOpen, 'BYTE')
	ToolTip($sRead3)
	Sleep(100)

WEnd
Auch ständig 0 :(
05/03/2015 10:57 alpines#6
Bist du sicher das die BaseAddress bei Nostale immer 0x400000 ist?
05/03/2015 13:23 BladeTiger12#7
Ja das ist die Base auf jeden Fall.
Aber ich schätze die Offsets b.z.w sein Static Offset ist falsch.
(Bei mir ist es nämlich auch immer 0, und falsch kann dieser Code nicht sein.
Auch alpines seiner ist korrekt.)
05/03/2015 19:02 Moneypulation#8
Wie prüf ich denn dass der pointer stimmt? Ich hab halt immer das spiel beendet, neu gestartet und CE an den neuen prozess gebunden. Und wenn der pointer immernoch die richtigen werte zeigt, dann stimmt der doch oder nicht?
05/03/2015 19:48 alpines#9
Ja, im Normalfall schon. Ist das Spiel eigentlich 32 oder 64 Bit? Versuch mal es explizit für 32 Bit und nur für 64 Bit zu compilen und probiers damit.
05/03/2015 20:22 BladeTiger12#10
Immer wieder? Versuch es jetzt nochmal und schau ob der Wert immer noch stimmt.
05/03/2015 20:55 Moneypulation#11
Für x64 und x86 zu compilen hat nichts bewirkt. Ich hab das spiel mehrmals neugestartet aber die Pointer zeigen immer den richtigen wert. Wie trage ich denn einen Pointer in CE manuell ein?

Edit: Habs herausgefunden. Ja, der Pointer stimmt immernoch
05/03/2015 21:39 FacePalmMan#12
Die Offsets kopiert man von CE von unten nach oben ein, falls du es noch nicht wussest.
Vielleicht hilft das ja.
05/03/2015 21:55 Moneypulation#13
Quote:
Originally Posted by FacePalmMan View Post
Die Offsets kopiert man von CE von unten nach oben ein, falls du es noch nicht wussest.
Vielleicht hilft das ja.
Lol ich hänge seit Wochen an dem Problem und das erzählst du mir erst jetzt? Mein Gott, daran lags... Vielen Dank! :D