Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > World of Warcraft > WoW Bots
You last visited: Today at 11:24

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

Advertisement



AutoIt kann keine statische Adresse mit XYZ Koordinaten auslesen?

Discussion on AutoIt kann keine statische Adresse mit XYZ Koordinaten auslesen? within the WoW Bots forum part of the World of Warcraft category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jul 2009
Posts: 6
Received Thanks: 1
Question AutoIt kann keine statische Adresse mit XYZ Koordinaten auslesen?

Hi

ich frage mich, warum mein AutoIt Code keine statische Adresse aus Wow 2.4.3, genauer: die XYZ Koordinaten, auslesen kann. Es kommt immer nur 0 raus, anstelle der in CE korrekt angezeigten Koordinaten (bei gleicher statischer Adresse, also nichts mehr mit Pointern usw)

Code:

Code:
#include <NomadMemory.au3>
#include <GUIConstants.au3>
#include <String.au3>
#include <Date.au3>
#include <array.au3>
#Include <Misc.au3>

; Wow Static Adresses for 2.4.3
dim $knownX = 0x00E18DF4
dim $knownY = 0x00E18DF8
dim $knownZ = 0x00E18DFC

dim $processfound = 0

Global $ProcessID = WinGetProcess("World of Warcraft","")
while $processfound = 0
    If $ProcessID = -1 Then
        MsgBox(4096, "ERROR", "Failed to detect process.")
        $reply = msgbox(1,$appname,"If world of warcraft is running please enter the name of the process (Ie, WORLD OF WARCRAFT) (uppercase sensitive)")
        if $reply = 2 then
            Exit
        Else
            $Processnewname = InputBox($appname,"Please enter the name of the process. (Case sensitive)")
            Global $ProcessID = WinGetProcess($Processnewname,"")   
        EndIf
    Else
        $processfound = 1
    EndIf
WEnd


Local $DllInformation = _MemoryOpen($ProcessID)

If @Error Then
    MsgBox(4096, "ERROR", "Failed to open memory for process;" & $ProcessID)
    Exit
EndIf


$CurrentLocX = _MemoryRead($knownX, $DllInformation,'float')
MsgBox(0,"","X-Pos:  " & $CurrentLocX)
$CurrentLocY = _MemoryRead($knownY, $DllInformation,'float')
MsgBox(0,"","Y-Pos:  " & $CurrentLocY)
$CurrentLocZ = _MemoryRead($knownZ, $DllInformation,'float')
MsgBox(0,"","Z-Pos:  " & $CurrentLocZ)
Irgendwelche Ideen?
Makkke is offline  
Old 07/28/2009, 02:51   #2
 
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
Wie wärs mit Debugrechten holen?
SetPrivilege("SeDebugPrivilege",1) ist die Funktion aus dem NomadMemory UDF dafür.
Es hilft übrigens sich erstmal zu informieren wie man ein Autoit UDF verwendet und dann nach zu fragen, ist aber nur so ne Idee von mir...
Bot_interesierter is offline  
Old 07/28/2009, 07:58   #3
 
elite*gold: 0
Join Date: Jul 2009
Posts: 6
Received Thanks: 1
Nein, dass ist es nicht. Und ja, ich habe die NomadMemory.au3 ausführlich studiert und kann mir trotzdem nicht erklären, warum immer nur 0 angezeigt wird (alle Koordinaten).
Habe übrigens Windows 7, ist das ein Problem für AutoIt vs. Speicherzugriff?
Makkke is offline  
Old 07/28/2009, 14:37   #4
 
elite*gold: 5
Join Date: Feb 2009
Posts: 281
Received Thanks: 226
So geht das auch nicht du musst eine base adress nehmen diese + 2 offsets da es ein level 3 pointer ist und dann noch die offsets zu den jeweiligen x y z

sihe :
Code:
	$Point = _memoryread(0x010BD5F4, $DllInformation, 'dword')
	$30_1 = _MemoryRead($Point + 0x34, $DllInformation, 'dword')
	$playerbase = _memoryread($30_1 + 0x24, $DllInformation, 'dword')
        $X1 = "0x" & Hex($playerbase + 0x798)
	$Y1 = "0x" & Hex($playerbase + 0x79C)
kann sein das die §point adresse nicht richtig ist da ich auf diesem pc nicht meinen aktuellsten bot habe musst du schauen jedoch die offsets sind 100% richtig viel spaß!
hamburger1 is offline  
Old 07/28/2009, 15:02   #5
 
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
Er benutzt die Statischen Offsets für WoW 2.4.3, seine Adressen sind keine Zeiger.
@Makke
Führst du das Programm auch als Administrator aus?
Bot_interesierter is offline  
Old 07/28/2009, 18:15   #6
 
elite*gold: 0
Join Date: Jul 2009
Posts: 6
Received Thanks: 1
@Bot_interesierter: Ja, hab alles compiliert und gebuildet. Dann per rechter Maustaste "Als Administrator ausführen" gewählt (Windows 7).
Habe sogar den Kompabilitätsmodus getestet, alles dasselbe, nur 0 als Ergebnis.

Hier mal der Beweis:





Ich wage mal zu behaupten, dass man unter Windows 7 nicht mehr mit AutoIt auf den Speicher zugreifen kann. Gegenbeispiele sind gerne gesehen!
Makkke is offline  
Old 07/28/2009, 18:36   #7
 
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
Schau mal ob die Process ID stimmen kann, also lass sie dir ausgeben und ich bin mir ziemlich sicher das du die Debug Rechte Manuell mit SetPrivilege anfordern musst, denn wie die Debug Rechte nicht vergeben werden kannst du ReadProcessMemory nicht benutzten.
Wenn du die Rechte nicht hast, dann gibt _MemoryRead immer 0 zurück ^^
Bot_interesierter is offline  
Old 07/28/2009, 18:45   #8
 
elite*gold: 0
Join Date: Jul 2009
Posts: 6
Received Thanks: 1
Danke erstmal für die Hilfe!!

Quote:
Originally Posted by Bot_interesierter View Post
Schau mal ob die Process ID stimmen kann, also lass sie dir ausgeben und ich bin mir ziemlich sicher das du die Debug Rechte Manuell mit SetPrivilege anfordern musst, denn wie die Debug Rechte nicht vergeben werden kannst du ReadProcessMemory nicht benutzten.
Wenn du die Rechte nicht hast, dann gibt _MemoryRead immer 0 zurück ^^
Also ich hab zu Beginn jetzt mal SetPrivilege eingefügt:
PHP Code:
dim $knownX 0x00E18DF4
dim $knownY 
0x00E18DF8
dim $knownZ 
0x00E18DFC

dim $processfound 
0
SetPrivilege
("SetDebugPrivilege",1)
...
usw 
es geht noch immer nicht.

Die ProcessId wird korrekt ausgelesen (z.B. ID = 3644)

Komischerweise ist nach
PHP Code:
Local $DllInformation _MemoryOpen($ProcessID
die $DllInformation leer, also keine Anzeige in der MsgBox (nutze ich immer zur Anzeige)

Quote:
Originally Posted by Bot_interesierter View Post
... denn wie die Debug Rechte nicht vergeben werden kannst du ReadProcessMemory nicht benutzten.
Ich nutze garnicht ReadProcessMemory sondern _MemoryRead, wo ist denn die Funktion ReadProcessMemory hinterlegt (nicht in NomadMemory.au3)
Makkke is offline  
Old 07/28/2009, 18:54   #9
 
elite*gold: 0
Join Date: Jul 2009
Posts: 6
Received Thanks: 1
Auch mit
PHP Code:
SetPrivilege("SeDebugPrivilege",1
, also ohne t in Set gehts nicht. Das Internet spricht von einem eventuellen, generellen Fehler in der SetPrivilege Funktion von Nomad.. ich muss mich mal einlesen.
Makkke is offline  
Old 07/28/2009, 19:08   #10
 
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
_MemoryRead ist ein Wrapper für die Windows Api Funktion ReadProcessMemory.
Und es gab einige NomadMemory Versionen in denen die SetPrivilege Funktion Fehlerhaft war/ist, ich bin da nicht auf dem aktuellen Stand weil ich Autoit nicht mehr benutzte.
Bot_interesierter is offline  
Old 07/28/2009, 20:12   #11
 
elite*gold: 0
Join Date: Jul 2009
Posts: 6
Received Thanks: 1
Jaaaaaaaa es geht!! Es lag an der fehlerhaften SetPrivilege Methode in NomadMemory.au3, danke Bot_interesierter!
Ja, und man muss es als Administrator starten. Ich nehme alles zurück wegen
Windows 7.

Die korrekte NomadMemory.au3 ist angehängt, habe sie noch um _MemoryGetBaseAddress erweitert.
Attached Files
File Type: rar NomadMemoryFixedSetPrivilege.rar (3.2 KB, 69 views)
Makkke is offline  
Thanks
1 User
Old 07/29/2009, 15:33   #12
 
elite*gold: 0
Join Date: Feb 2008
Posts: 25
Received Thanks: 0
soweit ich weiß gibt es keine statischen XYZ Ids... du musst das so machen
pbase2 = _MemoryRead($Playerbase, $handle, 'ptr')
Pbase1 = _MemoryRead($pbase2 + pbaseoffset1 , $handle, 'ptr')
pBase = _MemoryRead($Pbase1 +pbaseoffset 2, $handle, 'ptr')
so gut nun haben wir die playerbase
jetzt können wir auch xyz aus lesen:
$x=_MemoryRead($pBase + $XUnitOffset, $handle, 'float') ect
rootKilla is offline  
Old 07/29/2009, 22:15   #13
 
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
Quote:
Originally Posted by rootKilla View Post
soweit ich weiß gibt es keine statischen XYZ Ids... du musst das so machen
pbase2 = _MemoryRead($Playerbase, $handle, 'ptr')
Pbase1 = _MemoryRead($pbase2 + pbaseoffset1 , $handle, 'ptr')
pBase = _MemoryRead($Pbase1 +pbaseoffset 2, $handle, 'ptr')
so gut nun haben wir die playerbase
jetzt können wir auch xyz aus lesen:
$x=_MemoryRead($pBase + $XUnitOffset, $handle, 'float') ect
Wenn man keine Ahnung hat...
Hättest du Seite eins dieses Threads gelesen, dann wüsstest du das es um die Version 2.4.3 geht, in der es sehr wohl eine Statische Adresse für XYZ gibt
Bot_interesierter is offline  
Old 10/10/2009, 21:39   #14
 
elite*gold: 0
Join Date: Jun 2008
Posts: 36
Received Thanks: 2
Ich wollte die Hp von WoW in der Patch v. 3.1.3 auslesen bekomme aber folgenden error :
pbase2 = _MemoryRead(0x010BD5F4, $pid, 'ptr')
^ ERROR

Was mache ich falsch

Code:
$pid = wingetprocess("World of Warcraft","")
$open = _Memoryopen($pid)


Func _getpBase($pid)
pbase2 = _MemoryRead(0x010BD5F4, $pid, 'ptr')
Pbase1 = _MemoryRead($pbase2 + 0x34 , $pid, 'ptr')
pBase = _MemoryRead($Pbase1 +0x24, $pid, 'ptr')
EndFunc


$hp_adresse = memread($pid + (_getpBase($pid) + 0x8 + 0x17) * 4)
ToolTip( "HP:" & $hp_adresse, 0, 0)
_Memoryclose($open)
jonasX is offline  
Old 10/10/2009, 22:04   #15
 
elite*gold: 0
Join Date: Jun 2008
Posts: 28
Received Thanks: 2
Quote:
Originally Posted by jonasX View Post
Ich wollte die Hp von WoW in der Patch v. 3.1.3 auslesen bekomme aber folgenden error :
pbase2 = _MemoryRead(0x010BD5F4, $pid, 'ptr')
^ ERROR

Was mache ich falsch

Code:
$pid = wingetprocess("World of Warcraft","")
$open = _Memoryopen($pid)


Func _getpBase($pid)
pbase2 = _MemoryRead(0x010BD5F4, $pid, 'ptr')
Pbase1 = _MemoryRead($pbase2 + 0x34 , $pid, 'ptr')
pBase = _MemoryRead($Pbase1 +0x24, $pid, 'ptr')
EndFunc


$hp_adresse = memread($pid + (_getpBase($pid) + 0x8 + 0x17) * 4)
ToolTip( "HP:" & $hp_adresse, 0, 0)
_Memoryclose($open)
versuchs mal so

Func _getpBase($pid)
$pbase2 = _MemoryRead(0x010BD5F4, $pid, 'ptr')
$Pbase1 = _MemoryRead($pbase2 + 0x34 , $pid, 'ptr')
$pBase = _MemoryRead($Pbase1 +0x24, $pid, 'ptr')
EndFunc
Hotwert is offline  
Reply


Similar Threads Similar Threads
CE kommen keine Adresse
08/06/2010 - S4 League - 21 Replies
Ich hab ein Problem wen ich mit Cheat engine arbeite kommen einfach keine Adressen. Kann mir jemand Helfen Etz Funktioniert Cheat Engine iwie obwohl ich 32bit habe :D
Wie kann ich mit AutoIt einen text aus dem Editor auslesen???
04/06/2010 - AutoIt - 4 Replies
Hallo. Ich möchte gerne wissen wie ich mit AutoIt Text aus dem editor auslesen kann, zb.steht im editor: Hallo So das skript soll jetzt das wort Hallo in sich einbauen. Das mit dem ausgeben weiß ich, dass habe ich so gemacht: Send("Hier ebent das was ich ausgeben will.")
Keine IPv4 Adresse
02/23/2010 - Metin2 Private Server - 1 Replies
Ich sehe in dem Feld wo die IPv4 Adresse stehen soll nix.. Ist das normal?
Msn findet keine DNS-Adresse
03/22/2009 - Technical Support - 0 Replies
Huhu, ich wollte mal fragen, wie ich denn das MSN dazu bringen kann, wieder DNS-Adressen zu finden. Seit ich das neueste MNS installiert habe, kann ich mich nicht mehr einloggen, obwohl Internetzugang da ist und funktioniert. Das MSN selbst findet keine Probleme und was sinnvolles hab ich per google nicht gefunden. Freue mch über Antworten :)
AutoIT Koordinaten
05/27/2008 - Guild Wars - 6 Replies
Hallo, ich wollte wissen, ob ich die Koordinaten auf eine kleine Auflösung herunter rechnen kann, ohne sie neu zu messen? Von 1280x1024 auf 1024x768 Die 1280x1024 sind jeweils 100%x100% und die 1024x768 müssten 80%x75% sein.



All times are GMT +2. The time now is 11:24.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

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