AutoIt MemoryRead & MemoryPointerRead

07/20/2011 18:57 Velgor#1
Bin schön länger dabei mittels Autoit Werte aus Minecraft herauszulesen,
bin schon so weit das ich die "BaseAddress" eines Pointers ermitteln konnte.
Komme jetzt jedoch nicht weiter die "BaseAddress" mit MemoryPointerRead aufzurufen.


Mit CheatEngine ermittelte Pointer und Adressen:

[Only registered and activated users can see links. Click Here To Register...]

Die für den Pointer "Richtige" Adresse bei
PHP Code:
OpenAL64.dll+2FD00 
wäre also
PHP Code:
7FEE701FD00 

Ich vermute das an der ungewohnten Länge der Adresse des Pointers von 11 Zeichen anstelle von 8, weshalb MemoryPointerRead bei mir keine Werte liefern will.

Frage ist also wie ich solch eine Adresse richtig Aufrufen kann.


Hier mal mein Code
PHP Code:
;#RequireAdmin
#include <NomadMemory.au3>

If WinExists("Minecraft") = 0 Then
    MsgBox
(0"""Minecraft is not running. Please run it before starting this app.")
    Exit
EndIf


SetPrivilege("SetDebugPrivilege"1)
$PID WinGetProcess("Minecraft")
$sModule "OpenAL64.dll"
$StaticOffset 0x2FD00
$ah_Handle 
_MemoryOpen($PID)
$dllBaseAddr _MemoryModuleGetBaseAddress($PID$sModule) + $StaticOffset



Dim $av_Offset
[2]
$av_Offset[0] = 0immer 0
$av_Offset
[1] = 0x8;

$test _MemoryRead(0x13FE6FE8$ah_Handle'dword') ; Funtkioniert
;$test2 _MemoryRead(0x7FEE713FD00$ah_Handle'Short') ; Funtkioniert Nicht

$Read 
_MemoryPointerRead($dllBaseAddr$ah_Handle$av_Offset'dword')

MsgBox(0,"Memory""Adresse des Pointers:       " & @LF $dllBaseAddr & @LF "Wert der Adresse auf dem der Pointer zeigt       " & @LF $test & @LF "Adresse des Pointes?       " & @LF $Read[0] & @LF "Adresse auf dem der Pointer zeigt?       " & @LF $Read[1] )


_MemoryClose($PID)
Exit 
Ausgabe der MassageBox:

[Only registered and activated users can see links. Click Here To Register...]


Hier noch die NomadMemory.au3 die von mir benutzt wurde

07/20/2011 19:48 Logtetsch#2
Du hast garnicht angegeben was du verändern willst.
Willst du 100 wolle oda so.... ?
Sag uns doch lieber erst was du verändern will.
07/20/2011 20:51 Velgor#3
Wer sagt ihr was von verändern will einfach ein Wert auslesen für Bot.
07/22/2011 17:09 *Dr.Bob*#4
$Base = 0x13FE6FE8
$Handle = _MemoryOpen(ProcessExists("BLABLA.exe"))
Dim $O_Dein_Offset[2] = [0, 0x8]

$test = _MemoryRead($Base, $Handle, $O_Dein_Offset, 'dword')
07/22/2011 21:40 KDeluxe#5
Das wäre falsch. 0x13FE6FE8 ist bzw. war der resultierende Pointer. In dem Fall müsste er einfach _MemoryRead() benutzen, das würde allerdings keine dauerhafte Lösung.

Gib in CE einfach mal bei Address "OpenAL64.dll" an. Diesen Wert addierst du dann einfach mit 0x2FD00.
07/24/2011 16:47 Velgor#6
OpenAL64.dll = 7FEE6D30000
OpenAL64.dll+2FD00 = 7FEE6D5FD00

Die Adressen haben also immer eine Länge von 11 Zeichen und
MemoryRead bzw. MemoryPointerRead können nur mit einer Adresslänge von 8 umgehen.


Die Methode von *Dr.Bob* wäre auch nicht die wahre Lösung,
die Adressen würden sich irgendwann ändern,
zudem wären sie bei einen anderen PC auch wieder anders.

PS: Die genauen Adressen haben sich inzwischen etwas geändert spielt aber hier keine Rolle.
07/31/2011 17:05 Velgor#7
Kann wer Helfen?
07/31/2011 17:22 buFFy!#8
[Only registered and activated users can see links. Click Here To Register...]

this?