|
You last visited: Today at 13:23
Advertisement
(Autoit) Wie Pointer auslesen ?
Discussion on (Autoit) Wie Pointer auslesen ? within the General Coding forum part of the Coders Den category.
11/01/2008, 10:22
|
#1
|
elite*gold: 0
Join Date: Oct 2007
Posts: 156
Received Thanks: 57
|
(Autoit) Wie Pointer auslesen ?
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 ?
|
|
|
11/01/2008, 13:10
|
#2
|
elite*gold: 0
Join Date: Nov 2007
Posts: 439
Received Thanks: 75
|
damit müsste es gehen
Code:
Func _MemoryPointerRead ($iv_Address, $ah_Handle, $av_Offset, $sv_Type = 'dword')
If IsArray($av_Offset) Then
If IsArray($ah_Handle) Then
Local $iv_PointerCount = UBound($av_Offset) - 1
Else
SetError(2)
Return 0
EndIf
Else
SetError(1)
Return 0
EndIf
Local $iv_Data[2], $i
Local $v_Buffer = DllStructCreate('dword')
For $i = 0 to $iv_PointerCount
If $i = $iv_PointerCount Then
$v_Buffer = DllStructCreate($sv_Type)
If @Error Then
SetError(@Error + 2)
Return 0
EndIf
$iv_Address = '0x' & hex($iv_Data[1] + $av_Offset[$i])
DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
If @Error Then
SetError(7)
Return 0
EndIf
$iv_Data[1] = DllStructGetData($v_Buffer, 1)
ElseIf $i = 0 Then
DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
If @Error Then
SetError(7)
Return 0
EndIf
$iv_Data[1] = DllStructGetData($v_Buffer, 1)
Else
$iv_Address = '0x' & hex($iv_Data[1] + $av_Offset[$i])
DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
If @Error Then
SetError(7)
Return 0
EndIf
$iv_Data[1] = DllStructGetData($v_Buffer, 1)
EndIf
Next
$iv_Data[0] = $iv_Address
Return $iv_Data
EndFunc
|
|
|
11/01/2008, 13:22
|
#3
|
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 454
|
Dann progg das mal so, dass du einfach an der Base Adresse (addiere die Base Adresse des Moduls einfach dazu) 4 Bytes ausliest, und zu diesem Wert, den du dann erhältst, einfach das Offset addierst.
Dann hast du deine Adresse. Falls du die Base Adresse des Moduls dynamisch herausfinden möchtest, hier eine kleine Beispielfunktion (allerdings nicht in AutoIt, da ich diese Sprache nicht beherrsche):
Code:
GetDllBase proc dwPID:DWORD, pName:DWORD
local hMod:DWORD
local me32:MODULEENTRY32
invoke CreateToolhelp32Snapshot, TH32CS_SNAPMODULE, dwPID
cmp eax, INVALID_HANDLE_VALUE
je @@end
mov [me32.dwSize], size MODULEENTRY32
invoke Module32First, hMod, offset me32
test eax, eax
jz @@e
@@l:
invoke lstrcmpi, offset me32.szExeFile, pName
test eax, eax
jnz @f
mov eax, [me32.modBaseAddr]
jmp @@e
@@:
invoke Module32Next, hMod, offset me32
test eax, eax
jnz @@l
@@e:
push eax
invoke CloseHandle, hMod
pop eax
ret
GetDllBase endp
|
|
|
11/01/2008, 14:41
|
#4
|
elite*gold: 0
Join Date: Oct 2007
Posts: 156
Received Thanks: 57
|
Quote:
Originally Posted by wadimwadim
damit müsste es gehen
Code:
Func _MemoryPointerRead ($iv_Address, $ah_Handle, $av_Offset, $sv_Type = 'dword')
If IsArray($av_Offset) Then
If IsArray($ah_Handle) Then
Local $iv_PointerCount = UBound($av_Offset) - 1
Else
SetError(2)
Return 0
EndIf
Else
SetError(1)
Return 0
EndIf
Local $iv_Data[2], $i
Local $v_Buffer = DllStructCreate('dword')
For $i = 0 to $iv_PointerCount
If $i = $iv_PointerCount Then
$v_Buffer = DllStructCreate($sv_Type)
If @Error Then
SetError(@Error + 2)
Return 0
EndIf
$iv_Address = '0x' & hex($iv_Data[1] + $av_Offset[$i])
DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
If @Error Then
SetError(7)
Return 0
EndIf
$iv_Data[1] = DllStructGetData($v_Buffer, 1)
ElseIf $i = 0 Then
DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
If @Error Then
SetError(7)
Return 0
EndIf
$iv_Data[1] = DllStructGetData($v_Buffer, 1)
Else
$iv_Address = '0x' & hex($iv_Data[1] + $av_Offset[$i])
DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
If @Error Then
SetError(7)
Return 0
EndIf
$iv_Data[1] = DllStructGetData($v_Buffer, 1)
EndIf
Next
$iv_Data[0] = $iv_Address
Return $iv_Data
EndFunc
|
 Soweit war ich auch schon...
Nur egal wie ichs mache kommt immer 0 raus (und es ist nicht 0 ^^)
So hab ichs probiert:
Code:
#Include <NomadMemory.au3>
$pid = WinGetProcess("Game")
$info = _MemoryOpen($pid)
$leben = _MemoryPointerRead (0x0037CC28, $info, 0x0000013C)
MsgBox(1, "nix", $leben)
Func _MemoryPointerRead ($iv_Address, $ah_Handle, $av_Offset, $sv_Type = 'dword')
;Aus platzgründen weggeschnitten
EndFunc
Und so:
Code:
#Include <NomadMemory.au3>
$pid = WinGetProcess("Game")
$info = _MemoryOpen($pid)
$leben = _MemoryPointerRead (0x0037CC28, $info, 316) ; Offset als dec
MsgBox(1, "nix", $leben)
Func _MemoryPointerRead ($iv_Address, $ah_Handle, $av_Offset, $sv_Type = 'dword')
;Aus platzgründen weggeschnitten
EndFunc
Immer 0
|
|
|
11/04/2008, 03:17
|
#5
|
elite*gold: 196
Join Date: Nov 2005
Posts: 625
Received Thanks: 192
|
Du kannst den ASM Teil ignorieren, um den Beitrag von link zu verstehen ist er nicht erforderlich. Befolge einfach seinen Anweisungen...
|
|
|
10/13/2009, 22:49
|
#6
|
elite*gold: 0
Join Date: Oct 2009
Posts: 6
Received Thanks: 0
|
Quote:
Originally Posted by Haygu
Code:
#Include <NomadMemory.au3>
$pid = WinGetProcess("Game")
$info = _MemoryOpen($pid)
$leben = _MemoryPointerRead (0x0037CC28, $info, 0x0000013C)
MsgBox(1, "nix", $leben)
Func _MemoryPointerRead ($iv_Address, $ah_Handle, $av_Offset, $sv_Type = 'dword')
;Aus platzgründen weggeschnitten
EndFunc
Und so:
Code:
#Include <NomadMemory.au3>
$pid = WinGetProcess("Game")
$info = _MemoryOpen($pid)
$leben = _MemoryPointerRead (0x0037CC28, $info, 316) ; Offset als dec
MsgBox(1, "nix", $leben)
Func _MemoryPointerRead ($iv_Address, $ah_Handle, $av_Offset, $sv_Type = 'dword')
;Aus platzgründen weggeschnitten
EndFunc
Immer 0
|
Hab das gleiche Problem... nur wird bei mir nichts angezeigt!
Code:
Dim $Offset[2] = [0x10, 0xa9fc]
$pid = WinGetProcess("Mahjong Titans")
$ProcessInformation = _MemoryOpen($pid)
$punkte = _MemoryPointerRead (0x048E708, $ProcessInformation, $Offset)
_MemoryClose($ProcessInformation)
GUICtrlSetData($l_Punkte, $punkte)
Hat jemand ne Lösung für das Problem?
|
|
|
10/13/2009, 23:20
|
#7
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,913
Received Thanks: 25,413
|
schon mal auf das datum gesehen? -.-
|
|
|
 |
Similar Threads
|
WoW Bot AutoIT HP auslesen
10/17/2013 - AutoIt - 13 Replies
Hey,ich hab damit angefangen mit nen kleinen Bot fürn PrivatServer zu basteln,der auf der Version 3.3.3a läuft.
Gibt es für PrivatServer andere Offsets als für die Offiziellen Server?
Aber irgendwie bekomme ich immer als HP anzahl : 0 raus. Ich habe die richtigen Offsets genommen :
;/*Patch 3.3.3*/
;/*Player offsets*/
Local $Mem_Player_Base = 0x00B366D0, $Mem_Player_Base_P1 = 0x34, $Mem_Player_Base_P2 = 0x24
|
[Autoit]Pointer auslesen/schreiben
02/22/2011 - AutoIt - 8 Replies
hallo ich versuch derzeit es hinzubekommen mit au3 pointer auszulesen.
dazu benutzt ich die
Improved _Mem() UDF's - AutoIt Forums
und dementsprechend
_MemoryPointerWrite
das beispiel an dem ich es versuche is der 8te abschnitt des offieziellen ce tuts,
ich hab den static pointer und entsprechend die offsets
das pw dafür ist
|
[Suche] Simples Tutorial zum Pointer auslesen.
09/13/2010 - Nostale - 7 Replies
Hallo =).
Da ich einem Freund mal ein bisschen unter die arme Greifen will möchte ich für ihn die Pointer zusammenkramen, nur mein CE Tutorial ist verbuggt und meine Englischkentnisse nicht wirklich die eines 1er Schülers. ~
Daher würde ich gern wissen wie man für folgende Dinge die Pointer ausliest:
HP.
MP.
Ob er sitzt.
Ob ein Ziel ausgewählt/markiert ist.
|
Pointer herrausgefunden, wie in C++ auslesen?
06/11/2010 - C/C++ - 1 Replies
Hallo,
ich habe für ein Spiel den Pointer für den Munitionswert gefunden.
Wie kann ich diesen jetzt so verwenden, dass ich mir dessen Wert in C++ anschauen kann?
Pointer-Adresse: 015470A8
bisher hab ich es in C++ so versucht:
DWORD *thefirst = (DWORD*)(0x015470A8);
|
speicheradresse -> gesetteten pointer auslesen wie??
10/26/2008 - Guild Wars - 3 Replies
hallo ich habe einen pointer gesettet
adress of pointer ist das 024E1F62
hex(offset) F94E0
wie kann ich also mit autoit den pointer auslesen?
|
All times are GMT +1. The time now is 13:24.
|
|