Autoit(Solitär) pointer

04/08/2012 16:37 BladeTiger12#1
Hallo erstmal.
Ich habe mal eine Frage.
Ich habe ungefähr vor 2 Tagen mit Pointern angefangen
und habe ein problem mit Pointer.au3 Befehl:
PHP Code:
_MemoryPointerRead ($iv_Address$ah_Handle$av_Offset$sv_Type 'dword'


So habe ich es bis jetzt aufgebaut:
PHP Code:
#include <Pointer.au3>
$adresse 0x006360F4
Global $Offset[2] = ["10" "2C"]
$Process WinGetHandle("Solitär" "")
$Read _MemoryPointerRead($adresse $Process $Offset 'dword')
MsgBox("Pointer" $Read

Aber immer kommt die 0 Raus.
Ich habe auch schon nachgeschaut ob es wirklich der Pointer ist.
Ich habe solitär und Cheat engine geschlossen und nochmal
neu geöffnet.
Dann habe ich bei Cheat engine den Process solitär wieder gewählt und dann Add adress manually gedrückt ich habe ein lvl 2 Pointer also habe ich 1x Add pointer gedrückt.
Dannach habe ich die adresse und die 2 offset´s eingetragen und ich habe dann immer noch die richtige Value gehabt ich hatte 0 Punkte dann habe ich die Value auf 15 geändert in Cheat engine und dann hatte sich im Spiel auch die Punkte zahl geändert.
Und ich frage mich warum das so wie ich es jetzt oben gepostet habe nicht funktioniert.
Wer die Pointer.au3 braucht:
04/08/2012 16:47 omer36#2
PHP Code:
#include <Pointer.au3>
$Open _MemoryOpen(ProcessExists("Solitär.exe")) //evt. ändern
$adresse 0x006360F4
Global $Offset[3] = [00x10 0x2C]
$Read _MemoryPointerRead($adresse $Open $Offset 'dword')
MsgBox("Pointer" $Read[1]) 
Schau mal im Taskmanager nach, wie der Prozess richtig heißt..
04/08/2012 16:57 BladeTiger12#3
Hmm...
Ich habe es probiert aber immer kommt 0 raus das sind die adressen wo ich mir von
Cheat engine aufgeschrieben habe:
Offset: 10
Offset: 2C

Adresse: 006360F4

oder : 0x06360F4

oder : 0x006360F4

Ich weiß es nicht wie man sowas aufschreibt^^
04/08/2012 21:12 KDeluxe#4
In CE setzt sich der Pointer aus "solitair.exe"+XXX zusammen, wobei "solitair.exe" bei jedem Programmstart anders ist. Dafür gibt es _MemoryGetModuleBaseAddress() (oder so ähnlich).
04/10/2012 12:53 K1ramoX#5
Probier mal das:

Code:
Local $prozessname = "Solitär.exe"
$PID = ProcessExists($prozessname)
If $PID > 0 Then
	$Handle = _MemoryOpen($PID)
	$Address = _MemoryModuleGetBaseAddress("" & $PID & "", "" & $prozessname & "")
	$Address = "0x" & Hex($Address + Dec("6360F4 "))
	Dim $Offset[2]
	$Offset[0] = 0x010
	$Offset[1] = 0x02C
EndIf
$Read = _MemoryPointerRead($Address, $Handle, $Offset, "dword")
_MemoryClose($Open)
So mach ich das immer und das funktioniert perfekt ;<
04/10/2012 23:02 lolkop#6
Quote:
Originally Posted by Applecode View Post
Code:
$Address = "0x" & Hex($Address + Dec("6360F4 "))
warum hantierst du denn hier derart viel mit stringfunktionen rumm, wenn du nur 2 zahlen addieren willst?

sicherlich kommt hier:
Code:
$a = 256-1
$b = ("0x"&hex(dec(asc('d'))))-1
für $a und $b das selbe ergebnis heraus.

die frage welche sich hier stellt ist nur, welcher von beiden wegen wohl der effizientere ist...