|
You last visited: Today at 17:43
Advertisement
AutoIt und Pointer auslesen
Discussion on AutoIt und Pointer auslesen within the AutoIt forum part of the Coders Den category.
12/19/2012, 20:58
|
#1
|
elite*gold: 0
Join Date: Feb 2011
Posts: 16
Received Thanks: 0
|
AutoIt und Pointer auslesen
Moinsen,
Hab mich mal an´s Thema Pointer gegeben. CE hat soweit auch funktioniert, nur bekomm ich das nicht umgesetzt in AutoIt.
Mal meinen Code:
Code:
#include <Pointer.au3>
#include <Array.au3>
PointerLesen()
Func PointerLesen()
Local $av_Offset[3]
$av_Offset[0] = 0
$av_Offset[1] = 0x38
$av_Offset[2] = 0x50
$pid = ProcessExists("Gw.exe")
$gw = _MemoryOpen($pid)
If $pid = 0 Then
MsgBox(16, @ScriptName, 'Prozess nicht gefunden, Skript wird beendet.')
Exit 1
EndIf
$PointerReturn = _MemoryPointerRead(0x015F52CC, $gw, $av_Offset)
_ArrayDisplay($PointerReturn)
EndFunc ;==>PointerLesen
;~ <?xml version="1.0" encoding="utf-8"?>
;~ <CheatTable>
;~ <CheatEntries>
;~ <CheatEntry>
;~ <ID>1</ID>
;~ <Description>"pointerscan result"</Description>
;~ <Color>80000008</Color>
;~ <VariableType>4 Bytes</VariableType>
;~ <Address>"Gw.exe"+011F52CC</Address>
;~ <Offsets>
;~ <Offset>50</Offset>
;~ <Offset>38</Offset>
;~ </Offsets>
;~ </CheatEntry>
;~ </CheatEntries>
;~ </CheatTable>
Der auskommentierte Teil unten ist von CE kopiert. Keine Ahnung wie man hier Spoiler macht. Bin anscheinend blind.
Kann mir mal einer sagen, was ich da falsch mache. Bekomme immer 0 als Ergebnis, was mir sagt, dass ich da wohl was falsch mache!
LG
MrBaltimore
|
|
|
12/19/2012, 21:26
|
#2
|
elite*gold: 64
Join Date: May 2011
Posts: 1,229
Received Thanks: 854
|
So müsste es gehen:
Code:
#RequireAdmin
#include <Pointer.au3>
#include <Array.au3>
PointerLesen()
Func PointerLesen()
Global $av_Offset[2]
$av_Offset[1] = 0x38
$av_Offset[2] = 0x50
$pid = ProcessExists("Gw.exe")
$gw = _MemoryOpen($pid)
$Module = _MemoryModuleGetBaseAddress($pid , "Gw.exe")
$PointerAdress = $Module + 0x015F52CC
If $pid = 0 Then
MsgBox(16, @ScriptName, 'Prozess nicht gefunden, Skript wird beendet.')
Exit 1
EndIf
$PointerReturn = _MemoryRead($PointerAdress , $gw) + $av_Offset[0]
$PointerReturn = _MemoryRead($PointerReturn , $gw) + $av_Offset[1]
$PointerReturn = _MemoryRead($PointerReturn , $gw)
_ArrayDisplay($PointerReturn)
EndFunc ;==>PointerLesen
;~ <?xml version="1.0" encoding="utf-8"?>
;~ <CheatTable>
;~ <CheatEntries>
;~ <CheatEntry>
;~ <ID>1</ID>
;~ <Description>"pointerscan result"</Description>
;~ <Color>80000008</Color>
;~ <VariableType>4 Bytes</VariableType>
;~ <Address>"Gw.exe"+011F52CC</Address>
;~ <Offsets>
;~ <Offset>50</Offset>
;~ <Offset>38</Offset>
;~ </Offsets>
;~ </CheatEntry>
;~ </CheatEntries>
;~ </CheatTable>
Func _MemoryModuleGetBaseAddress($iPID, $sModule)
If Not ProcessExists($iPID) Then Return SetError(1, 0, 0)
If Not IsString($sModule) Then Return SetError(2, 0, 0)
Local $PSAPI = DllOpen("psapi.dll")
;Get Process Handle
Local $hProcess
Local $PERMISSION = BitOR(0x0002, 0x0400, 0x0008, 0x0010, 0x0020) ; CREATE_THREAD, QUERY_INFORMATION, VM_OPERATION, VM_READ, VM_WRITE
If $iPID > 0 Then
Local $hProcess = DllCall("kernel32.dll", "ptr", "OpenProcess", "dword", $PERMISSION, "int", 0, "dword", $iPID)
If $hProcess[0] Then
$hProcess = $hProcess[0]
EndIf
EndIf
;EnumProcessModules
Local $Modules = DllStructCreate("ptr[1024]")
Local $aCall = DllCall($PSAPI, "int", "EnumProcessModules", "ptr", $hProcess, "ptr", DllStructGetPtr($Modules), "dword", DllStructGetSize($Modules), "dword*", 0)
If $aCall[4] > 0 Then
Local $iModnum = $aCall[4] / 4
Local $aTemp
For $i = 1 To $iModnum
$aTemp = DllCall($PSAPI, "dword", "GetModuleBaseNameW", "ptr", $hProcess, "ptr", Ptr(DllStructGetData($Modules, 1, $i)), "wstr", "", "dword", 260)
If $aTemp[3] = $sModule Then
DllClose($PSAPI)
Return Ptr(DllStructGetData($Modules, 1, $i))
EndIf
Next
EndIf
DllClose($PSAPI)
Return SetError(-1, 0, 0)
EndFunc
PS: Die Funktion _MemoryModuleGetBaseAddress gehört nicht mir 
Mehr helfen kann ich dir über Skype: MrBladeTiger12
|
|
|
12/19/2012, 21:35
|
#3
|
elite*gold: 0
Join Date: Feb 2011
Posts: 16
Received Thanks: 0
|
@BladeTiger12
Leider funktioniert es nicht. Läuft einfach durch, also ist $PointerReturn kein Array. Mal sehen.
Melde mich morgen mal über Skype. Muss gleich mal in die Urne.
|
|
|
12/19/2012, 21:40
|
#4
|
elite*gold: 64
Join Date: May 2011
Posts: 1,229
Received Thanks: 854
|
Ja du musst das array display raus nehmen
es ist nur noch eine value
also : MsgBox(64 , "" , $PointerReturn)
|
|
|
12/19/2012, 21:51
|
#5
|
elite*gold: 0
Join Date: Feb 2011
Posts: 16
Received Thanks: 0
|
Das wars. Funktioniert einwandfrei. THX
|
|
|
12/19/2012, 21:57
|
#6
|
elite*gold: 64
Join Date: May 2011
Posts: 1,229
Received Thanks: 854
|
Kein Problem.
Weiter hilfe über Skype.
Helfe immer gern.
|
|
|
 |
Similar Threads
|
[AutoIT] Pointer auslesen
07/14/2013 - AutoIt - 5 Replies
Guten Abend/Nacht liebe Community,
heute möchte ich euch gerne das anzeigen eines Wertes via Pointer in Autoit näher bringen.
Vorwort:
Bitte bedenkt das dies hier mein erstes Tutorial ist und ich es mitten in der Nacht schreibe. Ich werde jeden Teil dieses Tutorials auch nocheinmal als Video verfilmen und hochladen und das Script posten damit ihr euch alles nochmal in Ruhe anschauen könnt.
Als Beispiel zum Pointer auslesen habe ich das Rollenspiel NosTale genommen.
Ihr könnt...
|
WoW Pointer mit Autoit auslesen
12/08/2010 - AutoIt - 9 Replies
Ich habe den 4byte wert von der z position von meinem eigenen Chara herausgefunden. Ich weiß das 4 Byte falsch sind aber das ist egal. Mir reicht auch ein 4 byte wert. Danach habe ich rechtsklick auf den Wert gemacht und Pointer Scan for this adress. Alles So gelassen und OK geklickt. Ich habe eine Liste mit offsets und allem möglichen gefunden. Wenn ich diesen Pointer mit offsets aber in Autoit einbinde und mit memorypointerread auslese bekomme ich
0x00000017
als rückgabewert.
...
|
WoW Pointer mit Autoit auslesen
12/05/2010 - World of Warcraft - 0 Replies
Ich habe mit Cheat Engine 5.6 die werte von der Z position des eigenen Spielers herausgefunden. Anschließend habe ich rechtsklick auf den Wert gemacht und Pointer Scan for this Adress gemacht. Ich bekam eine Liste mit den Offsets und den Werten.
Meine Werte sind alle 4 byte weil ich nicht weiß welche ich sonst nehmen soll. Das ist aber egal. Mit Cheat Engine klappt alles auch wenn es 4 byte sind.
Nun meine Frage. Ich binde die Offsets mit der Nomadmemory in Autoit ein. Wenn ich den Wert...
|
(Autoit) Wie Pointer auslesen ?
10/13/2009 - General Coding - 6 Replies
Hiho...
Ich progge gerade an einem bot und habe nur ein problem...
Ich hab mit CE nen pointer für die HP gefunden...
In diesem fall: game.dat+0037CC28 offset: 13C
Hab aber bis jetzt keine funktionierende möglichkeit gefunden das in Autoit auszulesen...
Kann mir pls einer verraten wie das geht ?
|
All times are GMT +1. The time now is 17:44.
|
|