Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Guild Wars > GW Bots
You last visited: Today at 00:28

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

Advertisement



[Tutorial] Memory Handeling in Guild Wars {Au3}

Discussion on [Tutorial] Memory Handeling in Guild Wars {Au3} within the GW Bots forum part of the Guild Wars category.

Reply
 
Old   #1
 
NBA's Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,874
Received Thanks: 213
[Tutorial] Memory Handeling in Guild Wars {Au3}

Herzlich willkommen zu meinem Memory Tutorial.
Ich werde hier auf das Memory Handeling in AutoIT anhand von Guild Wars zeigen. Doch was sind Memorys?
Damit waeren wir bei unseren ersten Punkt. Was sind Memories?

1. Was sind Memorys?


Memories sind Speicheradressen. Ich bin jetzt einfach so dreist, und kopiere Wikipedia hier rein:
Speicheradresse ? Wikipedia
Quote:
Originally Posted by Wikipedia
Speicheradresse
aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Speicheradressen werden beim Datenzugriff zur Identifikation eines Speicherorts auf einem Speichermedium verwendet, beispielsweise zur Benennung einer Speicherzelle in einem RAM (siehe Speicherzugriff) oder eines Blocks auf einer Festplatte.

Speicheradressen werden meist in hexadezimaler Schreibweise angegeben. Sie beginnen meist bei null und werden in der Regel fortlaufend durchnummeriert.

Man unterscheidet zwischen logischen und physischen Speicheradressen. Die logische Adresse ist die, die ein Programm "sieht". Durch die Speicherverwaltung des Betriebssystems werden diese logischen Adressen auf physische Adressen abgebildet. Diese Abbildung ist im Allgemeinen für jeden Prozess unterschiedlich und für den Prozess transparent. Damit ist es möglich, dass mehrere Prozesse die gleichen logischen Adressen verwenden, aber dabei auf unterschiedliche physische Adressen zugreifen. Auch ist es möglich, einem Prozess mehr logischen Speicher zuzuteilen, als physisch vorhanden ist. Beim Zugriff auf die physisch nicht vorhandenen Speicherbereiche löst die CPU automatisch eine Ausnahme aus, welche vom Betriebssystem abgefangen wird. Das Betriebssystem kann dann zusätzlichen Speicher bereitstellen, in dem es beispielsweise andere Speicherbereiche auf die Festplatte auslagert. Diese Technik wird Virtuelle Speicherverwaltung genannt.

Bestimmte physische Adressbereiche können aber in mehreren Prozessen im logischen Adressraum eingeblendet werden. Diese Technik wird auch Shared Memory genannt und ist eine Form der Interprozesskommunikation.

Segmentierte Adressen [Bearbeiten]

Eine Besonderheit stellen Adressen dar, die aus einer Basisadresse und einem Versatz in Form eines ganzzahligen Wertes – auch Offset genannt – gebildet werden. Um die tatsächliche Speicheradresse zu errechnen, wird der Versatz (Offset) zur Basisadresse addiert. So wird bei der Segmentierung im Real Mode der x86-Prozessorfamilie eine Speicherstelle nach dem Schema Segment:Offset angegeben. Zusätzlich zu der Segmentadresse (Segmentnummer * 16) wird der Offset addiert. Die echte Adresse lässt sich also mittels Adresse = (Segmentnummer·16) + Offset berechnen.

Im Protected Mode lässt sich die Startadresse des Segmentes aus dem Segment selector ermitteln. Zu dieser Segmentstartadresse wird dann der Offset addiert, um eine lineare logische Speicheradresse zu erhalten.

Siehe auch: Segmentierung (Speicherverwaltung)
Kapiert - Naja, zugegeben es dauert etwas, bis man das verdaut hat.

2. Wie kann ich das auf Guild Wars anwenden?
Vielseitig. Du kannst zum Beispiel eine bestimmte Adresse auslesen.
Oder eine beschreiben. Betrachten wir dies mal in AutoIT.
Es gibt in AutoIT eine 'Memory.au3', diese ist standartmaessig dabei.
Und es gibt eine, die ist nicht standartmaessig dabei.
Die meissten nehmen die nicht standartmaessige her. Die ist etwas weniger Fehleranfaellig als die normale "Memory.au3" .
Die nicht standartmaessige heisst "NoMadMemory.au3". Wenn du dich jetzt fragst, wo der link bleibt, Voila: .

Sobald du die NoMadMemory.au3 runtergeladen hast, kopierst du sie in dein Includeverzeichniss (Normalerweise C:\Programme\AutoIT\Includes)
Jetzt haben wir die NoMadMemory.au3 in unserem Verzeichnis, also koennen wir loslegen.

3. Memorys praktisch anwenden

Um eine Memory anwenden zu koennen, braucht man erstmal eine.
Dazu muessen wir eine Suchen. Dies koennen wir mit Cheat Engine oder mit TSearch machen. Ich nehme Cheat Engine her, die ist Einsteigerfreundlicher.

Download :

Installiere Sie, und starte Sie. Gleich danach startest du Guild Wars (reihenfolge spielt keine Rolle) Sobald beides geoeffnet ist, klicken wir auf farbwandelnde Flaeche in Cheat Engine und waehlen die Gw.exe an. Das ist unser Guild Wars.
Einloggen, irgenteinen Charakter auswaehlen und los gehts.
Wir suchen nach der Memoryadresse, die angibt, ob wir laufen oder nicht. Da wir erstmal nicht laufen werden suchen wir nach "0". Gib dazu bei Value 0 ein und klicke auf "Fist Scan". Nun sehen wir eine riesige Auswahl an Adressen. Diese gilt es zu beschraenken. Sorge dafuer, das dein Charakter eine lange Strecke vor sich hat und druecke die Taste fuer Automatisches Laufen (normalerweise "r"). Trage bei Cheat Engine 1 ein und klicke auf "Next Scan".
Dann, wenn du gelaufen bist gibst du bei Cheat Engine wieder 0 ein und klickst auf "Next Scan". Mach das so lange bis nur 3-4 Adressen uebrigbleiben.
Um zu ueberpruefen ob es unsere ist, doppelklicken wir auf die erste. Dann kommt die Adresse unten in ein Feld. Dort doppelklicken wir auf die Flaeche unter Value. Und tragen 1 ein. Wenn sich in GW nichts tut, ist es nicht unsere Adresse. Klick einmal auf sie drauf und druecke Entfernen - die brauchen wir nicht, die Adresse. Dann die naechste. Das machen wir so lange bis wir eine gefunden haben die den Charakter bewegt wenn man 1. reinschreibt. Diese bringen wir dann in die untere Liste und schliessen GW.

Warum? Weil wir wissen wollen ob sie statisch oder dynamisch ist.
Statische Adressen bleiben an einen Platz bis zum naechsten update. Die anderen bringen nichts.

Wir oeffnen GW wieder, waehlen es wieder in Cheat Engine aus und schauen, ob sich die Werte der Adresse geaendert haben, wenn wir wieder mit dem Charakter eingeloggt sind. Ist dies nicht der Fall haben wir eine statische. Die wir jetzt mit Hilfe von AutoIT beschreiben werden.
Wichtig: In CE sieht die Adresse so aus: 00xxxx (also mit 2 0 vorne). In Au3 müssen wir die zweite 0 mit x ersetzen. Sieht dann so aus: 0xxxx

4. Mem's in Au3 beschreiben

Dazu brauchen wir nicht viel. Da wir die NoMadMemory schon haben, koennen wir gleich loslegen.

Code:
#include <NoMadMemory.au3>
Damit binden wir die NoMadMemory ein. Wuerde man Tuerkischen Soladten deutsche Befehle erteilen, wuerde nicht viel passieren. (Ausser die Tuerkischen Soldaten koennen Deu). Genauso ist es hier.
Als naechstes muessen wir einen Process beschreibar machen.
Das geht mit
Code:
$PID = WinGetProcess("Guild Wars")
$hprocess = _MemoryOpen($PID)
Mit _MemoryOpen koennen wir nun weitere Befehle anwenden. Um eine Adresse zu beschreiben zum beispiel _MemoryWrite.
Code:
_MemoryWrite(0xA05F00, $hprcoess, 1)
Sleep(5000)
_MemoryWrite(0xA05F00, $hprocess, 0)
Wenn man sich damit etwas beschaeftigt kommt man schnell dahinter.

Aber wir wollen ja nicht immer beschreiben
Code:
_MemoryRead
Damit Lesen wir etwas auf einer adresse:
Code:
$read  _MemoryRead(Adresse, $hprocess)
MsgBox(0,"Title", "Memory :" & $read)
Und dass wars auch schon wieder bis jetzt, mit den Memorys!
Hoffe es hat geholfen!

Edit:

Extra Tutorial: Gui's mit Funktion

Wie macht man ein GUI, dass mit einer Funktion versehen ist?
Das fragen sich viele Anfaenger. Hier mal die Grundlegenden Befehle (und Ihre Anwendung)

1. Koda
Mit Koda kann man GUI's einfach erstellen. Man muss Scite4AutoIT installiert haben. (). Danach in irgentein Script gehen und in der Leiste unter der Titelleiste Tools anklicken. Dort einfach auf Koda(Form-Designer) klicken. Schon kann man sich austoben.

2. Code
Der sieht dann ungefaehr so aus(nat. Ohne die Kommentare):
Code:
#include <ButtonConstants.au3> ;Includes halt
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Langweilig", 194, 80, 201, 126) ;Form erstellen
$Input1 = GUICtrlCreateInput("Input1", 8, 8, 161, 21) ;Input erstellen
$Button1 = GUICtrlCreateButton("Button1", 8, 40, 75, 25, 0) ;Button 1 erstellen
$Button2 = GUICtrlCreateButton("Button2", 96, 40, 75, 25, 0) ; Button 2 erstellen
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd
3. Anwenden
Doch wie nutzt man jetzt das Input und die Buttons?
Das geht mit einem
Code:
GuiCtrlRead($input1) ; Input auslesen
Und einem
Code:
Case $Button1
        GuiCtrlSetData($button1, GuiCtrlRead($input1)) ;Button 1 ansprechen
Case $Button2 
GuiCtrlSetData($button2, GuiCtrlRead($input1)) ; Button 2 ansprechen
Joa..ein kleines Tut fuer Koda und Gui's .. mehr nicht..einfach nur so als billige zugabe.
Nichts grossartiges, hoffe es ist verstaendlich...
NBA is offline  
Thanks
37 Users
Old 04/18/2009, 20:04   #2
 
cab_killer's Avatar
 
elite*gold: 9
Join Date: Jan 2009
Posts: 206
Received Thanks: 24
Super geil darauf warte ich schon etwas länger
Vieleicht raffe ich jetzt auch mal ein bisschen was von den Mems.

THX

MFG
cab_killer is offline  
Thanks
1 User
Old 04/20/2009, 12:01   #3
 
elite*gold: 0
Join Date: May 2008
Posts: 145
Received Thanks: 23
Auch wenn ich das schon kenne, aber geschrieben ist es gut^^
Read Me is offline  
Thanks
2 Users
Old 04/20/2009, 13:41   #4
 
NBA's Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,874
Received Thanks: 213
Naja...hab versucht ein bisschen reinzubringen..nicht viel. Vielleicht erweitere ich es.
Was aber Pflicht ist bei diesem kleinen Tut:

Ganz mit Hirn durchlesen. So oft googlen, au3 hilfe nutzen usw. bis man es wirklich verstanden hat. Alles andere ist - nicht auszusprechen.
NBA is offline  
Thanks
1 User
Old 04/20/2009, 13:53   #5
 
elite*gold: 0
Join Date: Nov 2008
Posts: 576
Received Thanks: 191
also ich kann immer wieder hier drauf verweisen, meiner meinung nach werden im ersten teil offsets gut erklärt. wer will kann dann noch weiterlesen
__wadim is offline  
Thanks
1 User
Old 04/24/2009, 15:16   #6
 
NANAAA's Avatar
 
elite*gold: 0
Join Date: Jan 2008
Posts: 293
Received Thanks: 40
also iwie hab ich ne Adresse gefunden in Cheat Engine , funktioniert auch wenn ich Value 1 eingebe dann läuft der Char aber weiter mhmhm

habe das gefunden = 00A0D7E8

wenn ihc zb die mit dem updater ansehe sind da immer 0xa davor ...

kann mir jemand weiterhelfen ?
NANAAA is offline  
Thanks
1 User
Old 04/24/2009, 15:45   #7
 
NBA's Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,874
Received Thanks: 213
00A0D7E8 = 0xA07E8 sollte so sein

edit: Thanks sind erwünscht!
NBA is offline  
Thanks
2 Users
Old 04/24/2009, 17:46   #8
 
blauwiggle's Avatar
 
elite*gold: 0
The Black Market: 123/0/1
Join Date: Apr 2006
Posts: 1,722
Received Thanks: 476
Quote:
Originally Posted by NBA View Post
00A0D7E8 = 0xA07E8 sollte so sein

edit: Thanks sind erwünscht!
Und warum funktioniert das auch mit 0x00A07E8?
blauwiggle is offline  
Thanks
1 User
Old 04/24/2009, 18:05   #9
 
NBA's Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,874
Received Thanks: 213
So lange es funzt ist es mir egal...
NBA is offline  
Thanks
1 User
Old 04/25/2009, 23:14   #10
 
NANAAA's Avatar
 
elite*gold: 0
Join Date: Jan 2008
Posts: 293
Received Thanks: 40
noch ne frage bez den memorys

wie bekomme ich die death memory ?

hab mir das so iwie gedacht
Quote:
bei Cheat Engine im Gebiet Lebend 0 eingeben
sterben lassen und bei tod 1 eingeben
und so weiter bis nurnoch paar adressen übrig sind...
aber glaube falsch gedacht xD könnt jemand genäuer erklären ?

und wie finde ich mousecordeB bez. A heraus ?
NANAAA is offline  
Thanks
1 User
Old 04/26/2009, 00:58   #11
 
NBA's Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,874
Received Thanks: 213
1) Wenn Leben dann 0 wenn Tod dann 1. DU musst halt auch wirklich sterben.
2) Hab ich mir noch keine Gedanken gemacht...
NBA is offline  
Thanks
1 User
Old 04/26/2009, 14:42   #12
 
elite*gold: 20
Join Date: Feb 2007
Posts: 3,080
Received Thanks: 4,294
du kannst ja vorher nie genau wissen wie die werte sich ändern, also such bei unbekannten werten lieber nach changed / unchanged.
kknb is offline  
Thanks
1 User
Old 04/27/2009, 14:43   #13
 
Moppel123's Avatar
 
elite*gold: 134
The Black Market: 161/0/0
Join Date: Jan 2009
Posts: 2,082
Received Thanks: 266
genau.. und dann am besten neu einloggen und den char wechseln.. dann sind noch 2 oder 3 übrig und meistens verschiebt sich das ganze ja nur bisschen, also kann man mit dem ausschlussverfahren die richtige adresse finden :-)
Moppel123 is offline  
Thanks
1 User
Old 04/29/2009, 11:33   #14
 
Icke999's Avatar
 
elite*gold: 0
Join Date: Nov 2007
Posts: 343
Received Thanks: 113
Geht das auch Im Fenster Modus ?`habe bei diesem Belohnung typen bis auf 2 gemacht und dann gestestet und beide gehen nicht

MfG
Icke999 is offline  
Thanks
1 User
Old 04/29/2009, 14:53   #15
 
Specter cason's Avatar
 
elite*gold: 0
Join Date: Jun 2008
Posts: 520
Received Thanks: 494
jo geht im fenster
Specter cason is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
Does guild wars scan memory?
07/08/2009 - GW Bots - 1 Replies
Does guild wars use anything like warden to detect cheats?



All times are GMT +1. The time now is 00:29.


Powered by vBulletin®
Copyright ©2000 - 2026, 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 ©2026 elitepvpers All Rights Reserved.