|
You last visited: Today at 23:12
Advertisement
Multilevelpointer in Autoit verwenden
Discussion on Multilevelpointer in Autoit verwenden within the AutoIt forum part of the Coders Den category.
07/08/2013, 02:32
|
#1
|
elite*gold: 27
Join Date: Sep 2009
Posts: 5,592
Received Thanks: 1,596
|
Multilevelpointer in Autoit verwenden
Heyho ich habe einen Multilevelpointer von dem Spiel Aion zwar in CE gefunden aber ich bekomm ihn einfach nicht in Autoit eingebunden, hab schon wie verrückt gegoogelt aber ich bekomms nicht hin
hoffe ihr könnt mir da weiterhelfen
So siehts in CE aus
und so sieht mein bisheriger code aus
Code:
#RequireAdmin
#include <Pointer.au3>
HotKeySet("{F1}", "_Read")
$PID = ProcessExists("aion.bin")
If $PID > 0 Then
$Handle = _MemoryOpen($PID)
$Address = _MemoryModuleGetBaseAddress(ProcessExists("aion.bin"), "Game.dll")
$Address = "0x" & Hex($Address + Dec("00FB22BC"))
Dim $Offset[6] = [ 0, 0x5d4, 0, 0x248, 0x208, 0x264]
Else
Exit
EndIf
While True
Sleep(10)
WEnd
Func _Read()
$Read = _MemoryPointerRead($Address, $Handle, $Offset, "float")
MsgBox(0, "", $Read[1])
EndFunc
|
|
|
07/08/2013, 11:44
|
#2
|
elite*gold: 64
Join Date: May 2011
Posts: 1,228
Received Thanks: 847
|
Code:
#RequireAdmin
#include <Pointer.au3>
HotKeySet("{F1}", "_Read")
Global $Address, $PID, $Handle
Dim $Offset[5] = [ 0x5d4, 0x0, 0x248, 0x208, 0x264]
$PID = ProcessExists("aion.bin")
If $PID > 0 Then
$Handle = _MemoryOpen($PID)
$Address = _MemoryModuleGetBaseAddress($PID, "Game.dll")
$Address = $Address + 0x00FB22BC
Else
Exit
EndIf
While True
Sleep(10)
WEnd
Func _Read()
$Read = _ReadPtr($Address, $Offset, $Handle, "float")
MsgBox(0, "", $Read)
EndFunc
Func _ReadPtr($Ptr, $Offset, $MemOpen, $Type = "dword")
If IsArray($Offset) Then
For $i = 0 To UBound($Offset) -1
$Ptr = _MemoryRead($Ptr, $MemOpen) + $Offset[$i]
Next
Return _MemoryRead($Ptr, $MemOpen, $Type)
Else
Return 0
EndIf
EndFunc
Wenn es nicht geht sag bescheid.
Hier oder per Skype.
Skype steht unter meinem Profilbild.
Habs bei mir getestet.
Lvl 1 Char -> ergebnis 73.
Keine Ahnung was du da ausließt^^.
PS: Wenn du noch hilfe brauchst frag mich auch per Skype.
Helfe immer noch gerne :P.
|
|
|
07/08/2013, 12:52
|
#3
|
elite*gold: 27
Join Date: Sep 2009
Posts: 5,592
Received Thanks: 1,596
|
Danke danke funktioniert perfekt
|
|
|
07/08/2013, 13:10
|
#4
|
elite*gold: 64
Join Date: May 2011
Posts: 1,228
Received Thanks: 847
|
Versuch mal zu vermeiden:
1. In der Array ( Platz 0 ) eine 0 rein zu schreiben weil das ändert nichts.
2. warum so umständlich : "0x" & Hex($Module + (Dec("Addresse"))
3. Deklarier die Variablen lieber weiter oben.
4. Du musst nur einmal den PID deklarieren.
Mehr sehe ich auf die schnelle nicht.
|
|
|
07/08/2013, 18:03
|
#5
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
|
Das Script von BladeTiger12 ist unbrauchbar. Schon allein aus dem Grund da das Spiel vor dem Script gestartet werden muss. Ist das nicht der Fall beendet es sich einfach.
Es fehlt jede Art von Fehlererkennung, es wird nur überprüft, ob das Spiel zu Beginn des Scripts läuft. Beendet man das Spiel vor dem Script stürzt es ab.
Es wird eine komplett sinnlose Funktion hinzugefügt (_ReadPtr()), welcher wiederum jegliche Art von Fehlererkennung fehlt.
Quote:
Originally Posted by BladeTiger12
1. In der Array ( Platz 0 ) eine 0 rein zu schreiben weil das ändert nichts.
|
Unabhängig davon, ob man jetzt "deine" Funktion verwendet oder nicht, diese Aussage ist einfach nur falsch. Ein 0er Offset hat wie jeder andere Wert eines Offsets einen Nutzen.
Quote:
Originally Posted by BladeTiger12
3. Deklarier die Variablen lieber weiter oben.
|
Das ist eigentlich egal, solange sie nicht global verwendet werden.
Dieses Script ist lange nicht perfekt, aber dennoch besser:
Code:
#RequireAdmin
#include <Pointer.au3>
HotKeySet("{F1}", "_Read")
Dim $szProcessName = "Aion.bin", $szModuleName = "Game.dll"
Dim $dwOffsets[6] = [0, 0x5D4, 0, 0x248, 0x208, 0x264]
While Sleep(10)
WEnd
Func _Read()
$dwProcessId = ProcessExists($szProcessName)
If $dwProcessId > 0 Then
$hProcess = _MemoryOpen($ProcessId)
If Not @error Then
$dwModuleAddress = _MemoryModuleGetBaseAddress($dwProcessId, $szModuleName)
If Not @error Then
$dwBaseAddress = $dwModuleAddress + 0xFB22BC
$rValue = _MemoryPointerRead($dwBaseAddress, $hProcess, $dwOffsets, "float")
If Not @error Then MsgBox(64, "Info", "Adresse: " & $rValue[0] & @CRLF & "Wert: " & $rValue[1])
EndIf
EndIf
_MemoryClose($hProcess)
EndIf
EndFunc
|
|
|
07/08/2013, 18:32
|
#6
|
elite*gold: 64
Join Date: May 2011
Posts: 1,228
Received Thanks: 847
|
Ja ok, ich erwähnte nie das es brauchbar ist.
Und das mit der 0 In der Offset-Array finde ich trotz allem unnötig.
Und das man das Script noch verbessern kann ist schon klar.
Aber dafür das es unbrauchbar ist funktioniert es.
Und die Funktion _MemoryPointerRead habe ich schon immer gehasst :P.
|
|
|
07/08/2013, 18:38
|
#7
|
elite*gold: 27
Join Date: Sep 2009
Posts: 5,592
Received Thanks: 1,596
|
Das Script von KDeluxe funktioniert nicht, es crasht direkt wenn ich F1 drücke
Edit: Habs jetzt mal ein bisschen verändert jetzt stürtzt es nicht mehr ab aber es gibt mir eine falsche Adresse raus
Code:
#RequireAdmin
#include <Pointer.au3>
HotKeySet("{F1}", "_Read")
Dim $szProcessName = "aion.bin", $szModuleName = "Game.dll"
Dim $dwOffsets[6] = [0, 0x5D4, 0, 0x248, 0x208, 0x264]
While Sleep(10)
WEnd
Func _Read()
$dwProcessId = ProcessExists($szProcessName)
If $dwProcessId > 0 Then
$hProcess = _MemoryOpen($szProcessName)
If Not @error Then
$dwModuleAddress = _MemoryModuleGetBaseAddress($dwProcessId, $szModuleName)
If Not @error Then
$dwBaseAddress = $dwModuleAddress + 0xFB22BC
$rValue = _MemoryPointerRead($dwBaseAddress, $hProcess, $dwOffsets, "float")
If Not @error Then MsgBox(64, "Info", "Adresse: " & $rValue[0] & @CRLF & "Wert: " & $rValue[1])
EndIf
EndIf
_MemoryClose($hProcess)
EndIf
EndFunc
|
|
|
07/08/2013, 18:43
|
#8
|
elite*gold: 64
Join Date: May 2011
Posts: 1,228
Received Thanks: 847
|
Keine Ahnung warum, sieht relativ richtig aus.
Aber ich mag so eine Script-art auch nicht wirklich.
|
|
|
07/08/2013, 23:37
|
#9
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
|
Fehlerbeachtung nicht zu mögen weil es mehr Code benötigt ist schlecht. Ich hab die ganzen UDFs gar nicht und kenne die Funktionsrückgaben nicht, evtl. gibt eine Funktionen kein @error zurück. Getestet habe ich das Script natürlich nicht.
Der Fehler dürfte aber _MemoryClose() sein, dieser Funktionsaufruf muss in den "If Not @error Then" Block.
Code:
#RequireAdmin
#include <Pointer.au3>
HotKeySet("{F1}", "_Read")
Dim $szProcessName = "Aion.bin", $szModuleName = "Game.dll"
Dim $dwOffsets[6] = [0, 0x5D4, 0, 0x248, 0x208, 0x264]
While Sleep(10)
WEnd
Func _Read()
$dwProcessId = ProcessExists($szProcessName)
If $dwProcessId > 0 Then
$hProcess = _MemoryOpen($ProcessId)
If Not @error Then
$dwModuleAddress = _MemoryModuleGetBaseAddress($dwProcessId, $szModuleName)
If Not @error Then
$dwBaseAddress = $dwModuleAddress + 0xFB22BC
$rValue = _MemoryPointerRead($dwBaseAddress, $hProcess, $dwOffsets, "float")
If Not @error Then MsgBox(64, "Info", "Adresse: " & $rValue[0] & @CRLF & "Wert: " & $rValue[1])
EndIf
_MemoryClose($hProcess)
EndIf
EndIf
EndFunc
|
|
|
07/13/2013, 19:33
|
#10
|
elite*gold: 27
Join Date: Sep 2009
Posts: 5,592
Received Thanks: 1,596
|
sorry das ich den thread nochmal auspack aber ich bräuchte eben kurz hilfe ich möchte an die gleiche value einen wert schreiben aber irgendwas funktioniert nicht so ganz bzw. das skript stürtzt nicht ab oder so nur es schreibt nicht.
Code:
#RequireAdmin
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Pointer.au3>
$Form1 = GUICreate("Aion FoV", 318, 131, 192, 124)
$Button1 = GUICtrlCreateButton("Write", 208, 32, 75, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Reset", 208, 72, 75, 25, $WS_GROUP)
$Label1 = guictrlcreatelabel("Wert zwischen 60-140",48,30)
$Input1 = GUICtrlCreateInput("60", 48, 48, 121, 21)
GUISetState(@SW_SHOW)
$open = _MemoryOpen(ProcessExists("aion.bin"))
Global $base = _MemoryModuleGetBaseAddress($open, "Game.dll")
Global $base = $base + 0x00FB22BC
Global $offis[5] = [ 0x5d4, 0x0, 0x248, 0x208, 0x264]
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
_MemoryPointerWrite($base,$open,$offis,GUICtrlRead($Input1))
Case $Button2
_MemoryPointerWrite($base,$open,$offis,"60")
EndSwitch
WEnd
|
|
|
07/13/2013, 20:56
|
#11
|
elite*gold: 20
Join Date: Nov 2009
Posts: 2,256
Received Thanks: 1,570
|
Denke mal im Offset fehlt die 0 am Anfang.
Außerdem solltest du angeben welcher Datentyp benutzt wird.
Denn standardmäßig wird "dword" und nicht "float" von der UDF benutzt.
|
|
|
07/13/2013, 21:07
|
#12
|
elite*gold: 27
Join Date: Sep 2009
Posts: 5,592
Received Thanks: 1,596
|
hab das mit float schonmal angepasst und auch die 0 bei den offsets hinzugefügt aber es funktioniert immernoch nicht, in dem ersten skript von bladetiger12 hat er ja auch keine 0 am anfang deklariert bei den offsets und trotzdem funktioniert sein skript
so sieht der code jetzt aus
Code:
#RequireAdmin
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Pointer.au3>
$Form1 = GUICreate("Aion FoV", 318, 131, 192, 124)
$Button1 = GUICtrlCreateButton("Write", 208, 32, 75, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Reset", 208, 72, 75, 25, $WS_GROUP)
$Label1 = guictrlcreatelabel("Wert zwischen 60-140",48,30)
$Input1 = GUICtrlCreateInput("60", 48, 48, 121, 21)
GUISetState(@SW_SHOW)
global $PID = ProcessExists("aion.bin")
If $PID > 0 Then
global $open = _MemoryOpen($PID)
Global $base = _MemoryModuleGetBaseAddress($PID, "Game.dll")
Global $base = $base + 0x00FB22BC
Global $offis[5] = [ 0x5d4, 0x0, 0x248, 0x208, 0x264]
Else
msgbox(0,"ERROR","Aion nicht gefunden")
exit
endif
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
_MemoryPointerWrite($base,$open,$offis,GUICtrlRead($Input1),"float")
Case $Button2
_MemoryPointerWrite($base,$open,$offis,"60","float")
EndSwitch
WEnd
kann es daran liegen das ich ein 64-bit system habe, hab mal irgendwo gelesen das man dann die pointer.au3 anpassen müsse?
Wow endlich nach langem ausprobieren und versuchen jeden einzelnen schritt nochmal genau zu analysieren von bladetiger12 skript hab ich jetzt endlich alles verstanden
Code:
#requireadmin
#include <Pointer.au3>
$PID = ProcessExists("aion.bin")
$MemOpen = _MemoryOpen($PID)
Dim $Offset[5] = [ 0x5d4, 0x0, 0x248, 0x208, 0x264]
$StaticOffset = Dec("00FB22BC")
$BaseAddr = _MemoryModuleGetBaseAddress($PID, "Game.dll")
$Addr = "0x" & Hex($BaseAddr + 0x00FB22BC)
$var = 0
do
$Addr = _MemoryRead($Addr, $MemOpen) + $Offset[$var]
$var = $var + 1
until $var = UBound($Offset)
_MemoryWrite($Addr, $MemOpen,"140", "float")
Exit
somit hat sich alles geklärt
|
|
|
|
Similar Threads
|
Pointer in AutoIt verwenden
07/07/2013 - AutoIt - 2 Replies
Hallo,
ich habe einige Probleme bei der Verwendung eines Pointers in Autoit.
Den Pointer mittels CheatEngien gefunden und soweit funktioniert alles problemlos. Erst in Autoit gibt es Probleme da der ausgegebene Wert bzw. die ausgegebene Addresse nicht stimmen, Ich hoffe jemand hat eine idee woran es liegen kann:
#include <Pointer.au3>
SetPrivilege("SeDebugPrivilege", 1)
$pid = ProcessExists("StrongholdKingdoms.exe")
|
Cheat engine pointer finden und in autoit verwenden
03/05/2013 - AutoIt - 12 Replies
Würde gern die Punktzahl in einem Spiel verändern, Wert finden und über CE ändern kein Problem, die Adresse ändert sich jedoch bei Neustart des Spiels...
ich weiß, das ich jetzt einen Pointer und dessen Offset benötige, ich habe auch schon gegoogelt und viel ausprobiert, jedoch finde ich den Pointer nicht?
Ich habe probiert: Rechtsklick auf die Adresse, find out what writes to this adress, dann bekomm ich auch werte raus, wenn ich dann auf mehr anzeigen klicke ist eins rot unterlegt: 0042B727...
|
[AutoIT]Php und Mysql verwenden
07/22/2011 - Coding Tutorials - 2 Replies
Hi zusammen,
In diesem Tutorial will ich euch zeigen wie man in AutoIT mit php und dadurch mit mysql verknüpfen kann.
Let's go!
Was benötigt ihr?:
-AutoIT ;)
-(Optional)Einen PHP Editor
-Einen FTP Server (funpic.de)
-Einen MySql Server
-Filezilla(Download)
|
AutoIt-Pointer verwenden
06/01/2010 - General Coding - 0 Replies
*geklärt* Kann gelöscht werden...
|
All times are GMT +2. The time now is 23:12.
|
|