Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 13:23

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



(Autoit) Wie Pointer auslesen ?

Discussion on (Autoit) Wie Pointer auslesen ? within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Oct 2007
Posts: 156
Received Thanks: 57
Question (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 ?
Haygu is offline  
Old 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
wadimwadim is offline  
Old 11/01/2008, 13:22   #3
 
link's Avatar
 
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
link is offline  
Old 11/01/2008, 14:41   #4
 
elite*gold: 0
Join Date: Oct 2007
Posts: 156
Received Thanks: 57
Quote:
Originally Posted by wadimwadim View Post
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
Haygu is offline  
Old 11/04/2008, 03:17   #5
 
scbiz's Avatar
 
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...
scbiz is offline  
Old 10/13/2009, 22:49   #6
 
elite*gold: 0
Join Date: Oct 2009
Posts: 6
Received Thanks: 0
Quote:
Originally Posted by Haygu View Post
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?
LastChance_ is offline  
Old 10/13/2009, 23:20   #7


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,913
Received Thanks: 25,413
schon mal auf das datum gesehen? -.-
MrSm!th is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.