AutoIt anfaenger

08/01/2010 21:08 WickedMage#1
huhu zusammen,
ich versuche mich gerade ein wenig in AutoIt einzuarbeiten und probiere erstmal die fuer mich noetigen grundlagen aus, hab aber eigentlich schon das problem mir ueberhaupt was anzeigen zu lassen ;)

PHP Code:
#include <memory.au3>
#RequireAdmin
 
$Adresse 0x106507E8;
$OffSet =  0x108F40;
 
$Open _memoryopen(WinGetProcess("LastChaos"))
$point =_MemoryPointerRead($Adresse,$Open,$OffSet)

ConsoleWrite ($point)
Sleep (100

das kleine beispiel funkioniert wie es scheint ja fehlerfrei nur wie kann ich mir jetzt den wert zum kontrollieren aneigen lassen?
08/01/2010 23:02 bassbanane#2
Die Offsets für die Pointer werden, wenn du NomadMemory benutzt, in einem Array abgelegt, bei dem der 1. Wert 0 ist.
Schau dir mal deine memory.au3 an, dort steht das in der Beschreibung zu _MemoryPointerRead ;)
08/02/2010 09:00 WickedMage#3
Danke Dir, hat schon ein stueck weit geholfen, nur ueber das ergebnis bin ich nicht gluecklich :(
Ich moechte ja eigentlich einen Pointer auslesen, sprich vom Pointer+Offset, was ich da im moment an werte rauskriege versteh ich nicht, bei dem ersten wert gibt der mit dden Offset zurueck und der wert ist bisher immer 0 oder irgendwas das absolut nicht stimmt...

PHP Code:
#include <Memory.au3>

$ProcessID WinGetProcess("LastChaos")

Dim $Offset[1]
$Address 0x106507E8;Pointer(Base)
$Offset[0] = 0x1C   ;Offset

$Handle 
_MemoryOpen($ProcessID)
$Type 'dword'
$Value _MemoryPointerRead($Address$Handle$Offset$Type)

_MemoryClose($Handle

MsgBox(0"Return""Address = " $Value[0] & @CRLF "Value =" $Value[1]) 
08/02/2010 09:12 ~Dezion~#4
Versuch es mal so :
Code:
#include <Memory.au3> 

$ProcessID = WinGetProcess("LastChaos") 

$Address = 0x106507E8;Pointer(Base) 
Dim $Offset[1] 
$Offset[0] = 0
$Offset[1] = 0x1C

$Handle = _MemoryOpen($ProcessID) 
$Type = 'dword' 
$Value = _MemoryPointerRead($Address, $Handle, $Offset, $Type) 

_MemoryClose($Handle)  

MsgBox(0, "Return", "Address = " & $Value[0] & @CRLF & "Value =" & $Value[1])
08/02/2010 09:29 WickedMage#5
ui danke dir, das sieht auf den ersten blick schon ganz anders aus :)

Aber ich denke warum die werte noch immer nicht das liefern das sie eigentlich sollen ist wohl das ich hier Multilevel Pointer habe.

Ich habe also eine Base Adresse und dazu offsets die wiederum auf einen Pointer zeigen... wie bekomme ich nun den naechsten pointer am besten ausgelesen?
08/02/2010 09:41 Italien...Donni#6
um den wert zu schreiben benutze
PHP Code:
_MemoryPointerWrite Schreibt den Wert 
um dir den wert rauszulesen benutze

PHP Code:
_MemoryPointerRead Liest den Wert 
und um dan den Wert vom _MemoryPointerRead auf eine Inputbox oder ein Label zu Übertragen benutze eine Variable den den Wert _MemoryPointerRead abspeichert und dan so:
PHP Code:
$Lesen1 =_MemoryPointerRead($BaseAdresse$GameHandle$Offset$Type)
GUICtrlSetData($Lesen1$Dein Label/Input
08/02/2010 11:04 bassbanane#7
Ich glaub dein Problem liegt darin, dass die Offsets in dezimal vorliegen müssen, und sie bei dir hexadezimal sind.
Setz einfach Dec("1C") statt dem 0x1C ein und es sollte den richtigen Wert ausgeben, sofern es kein "multilevel" pointer ist.

Zum auslesen des 2. Pointers und der weiteren schreibst du in den $offset array die Offsets der weiteren Pointer, die CheatEngine dir gegeben hat. Also z.B.
$Offset[2] = Dec("47")
$Offset[3] = Dec("14")
$Offset[4] = Dec("C")

So in etwa würde es dann aussehen. Natürlich mit deinen Werten ;)
08/02/2010 11:30 WickedMage#8
Super, vielen lieben dank, das ist bereits die Antwort meiner naechsten Frage gewesen, werd das gleich mal testen, denn mein problem ist ja, es sind multilevel pointer und ich bekomm beim auslesen des ersten pointers nur die adresse des naechsten...

hier gut zu erkennen ;)

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