Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 05:27

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

Advertisement



[Hilfe] bei der Planung meines ersten bots

Discussion on [Hilfe] bei der Planung meines ersten bots within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Sep 2012
Posts: 3
Received Thanks: 1
[Hilfe] bei der Planung meines ersten bots

Hi, ich würde gerne endlich mal versuchen meinen eigenen bot zu schreiben. Ich habe in den letzten Tagen viel zeit damit verbracht die Grundlagen zu lernen. Dabei habe ich gemerkt, dass ich an einige Grenzen mit meinem Wissen gestoßen bin. Erstmal kurz zu mir, ich kann recht gut Java und habe recht gute Grundkenntnisse in C++, C, Python und auch ein wenig ASM. Soweit ich das mitbekommen habe sollte das zumindest eine recht gute Basis darstellen. Ich würde gerne einen bot für Infinity Wars schreiben. (für die die das game nicht kennen, es ist sowas ähnliches wie Hearthstone von Blizzard)
Meine bisherige Planung:
Der bot soll per DLL injektion laufen und zugriff auf alle relevanten Funktionen und variablen haben. Darunter verstehe ich die Möglichkeit Spiele anzumelden, Karten zu spielen und Runden zu beenden. Sowie das auslesen von Health, Moral, Mana und den aktuellen Karten auf dem Spieltisch.
Meine bisherigen Probleme:
Das größte Problem stellt für mich das Finden der aktuellen Karten dar. Vielleicht bin ich zu unkreativ um das Wissen, aus den Tutorials die ich für Cracks und WoW gefunden habe, auf dieses Problem zu übertragen, aber ich wäre für jeden Tipp äußerst dankbar. Und das nächste Problem ist, dass ich nicht genau weiß, wie ich am besten Inputs an das Game schicke... Einige Probleme dürften sich zwar recht leicht über PostMessage lösen, aber das Auswählen und Verschieben von Karten stell ich mir auf diese Weise recht umständlich vor. Desswegen frage ich mich, ob man da nicht direckt auf die Funktionen vom Spiel zurückgreifen kann. Wenn ich mich nicht irre haben das einige WoW bots auch so gemacht.

Vielleicht habe ich irgendwo noch nen falschen Ansatz, desswegen würde ich mich über alle Vorschläge freuen!
toppits is offline  
Old 02/20/2014, 16:19   #2
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Wenn das Spiel sich mit nem Server verbindet brauchst du nur die Packets zum z.b. Karten verschieben schicken. Packets findest du durch Reverse Engineering raus. Wenn du davon keine Ahnung hast kannst du die send Funktion hooken und die Packets irgendwo speichern. Es ist sehr wahrscheinlich, dass das, was du bekommst, verschlüsselt ist. Dann musst du auch Reverse engineeren.

Kannst anstatt das zu hooken aber auch wpe oder wireshark nutzen um die Packets zu finden.
th0rex is offline  
Old 02/20/2014, 18:04   #3
 
elite*gold: 1000
Join Date: Apr 2012
Posts: 1,003
Received Thanks: 208
Quote:
Originally Posted by omitma View Post
Wenn das Spiel sich mit nem Server verbindet brauchst du nur die Packets zum z.b. Karten verschieben schicken. Packets findest du durch Reverse Engineering raus. Wenn du davon keine Ahnung hast kannst du die send Funktion hooken und die Packets irgendwo speichern. Es ist sehr wahrscheinlich, dass das, was du bekommst, verschlüsselt ist. Dann musst du auch Reverse engineeren.

Kannst anstatt das zu hooken aber auch wpe oder wireshark nutzen um die Packets zu finden.
Erst lesen, dann schreiben. Er möchte es anders machen.
qkuh is offline  
Old 02/20/2014, 18:56   #4
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Wut ? Er will nicht postmessage nutzen - tut mein beispiel nicht.
Er will Funktionen vom spiel nutzen - reverse engineering und vielleicht hooken (kommt halt drauf an) wie gesagt.
Frage mich was du jetzt daran auszusetzen hast.
th0rex is offline  
Old 02/20/2014, 20:17   #5
 
elite*gold: 1000
Join Date: Apr 2012
Posts: 1,003
Received Thanks: 208
Wenn du packets emulierst, dann greifst du nicht primär auf die spieleigenen Funktionen zu.
qkuh is offline  
Old 02/20/2014, 21:16   #6
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Du anscheinend nicht. Wo ist denn das Problem die z.b. Send Funktion des Spiels aus einer dll in dem Spiel zu callen ? Habe ja nie was von nem externen Programm gesagt.
th0rex is offline  
Old 02/20/2014, 21:27   #7
 
Padmak's Avatar
 
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
Für gewöhnlich muss man noch weitere, kompliziertere Mechanismen des Spiels nutzen, um richtige Packets versenden zu können ( Metin2 z.B. - Sequence-Byte anhängen)
Je nach dem wie das Spiel jedoch gebaut ist, kann man durch hooken der Empfangs-und Sendefunktionen (NICHT send und recv) viel Zeit sparen, weil die Funktionen die Ver- und Entschlüsselung schon übernehmen.

Die aktuellen Karten finden kann tatsächlich kompliziert sein, versuch einfach nach Werten zu suchen, die gerade einzigartig sind (z.B. Name einer Karte, Leben oder sonstiges, kenn das Spiel nicht) und dann von da kannst du dann rückwärts gehen und schauen wie das zusammenhängt. Wird aber wahrscheinlich relativ viel Arbeit sein.
Bist du zu 100% sicher dass das Spiel in C++ oder ähnlichem geschrieben ist und nicht .NET oder sowas?

Padmak
Padmak is offline  
Old 02/21/2014, 07:28   #8


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Oder du könntest schauen wo die Karten denn gezeichnet werden und die dementsprechenden Funktionen mal abklappern und zurückverfolgen. So wäre ich es logisch angegangen aber die Packetmethode finde ich persönlich auch besser.

Mich würde aber auch mal die Vorgehensweise interessieren, um den Ablauf (egal ob Packets oder fix per Draw) dafür nachzubauen. Sprich, ob es hier notwendige Sachen zu beachten gibt oder ob ich einfach wild die Adresse der Funktion als Funktionspointer interpretieren und die dementsprechend aufrufen kann?

Ich nehme mal an, das man hier auch über VirtualQuery und VirtualProtect die Rechte vorher analysieren und anpassen muss bevor man die Funktion wirklich verwendet?
Mostey is offline  
Old 02/21/2014, 15:59   #9
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Kommt alles auf das Spiel an ^^. Musst halt die Funktionen die du brauchst finden, reversen und dann rum probieren ;D. Ich mache aber grundsätzlich immer VirtualProtect bevor ich Speicher von dem Spiel ändere. Wenn du z.B. merkst das die Funktion in einer Klasse ist, kannst du versuchen die Klasse nachzubauen. Dafür musst du aber wissen wo was in der Klasse in dem Spiel ist. Alle was ich nicht weiß mach ich zu char unused_wievieleungenutzeichhabe[länge von dem wo du keine ahnung hast in bytes].
Kann dem Topic Ersteller nur Lenas Reversing für Newbis empfehlen und halt c++ zu lernen. Wurde hier aber schon oft genug gesagt ^^.
th0rex is offline  
Old 02/21/2014, 16:47   #10
 
elite*gold: 0
Join Date: Sep 2012
Posts: 3
Received Thanks: 1
Hey, danke für die vielen Antworten, ihr habt mir unglaublich weitergeholfen!! Auch wenn mir das von Anfang an klar war, muss ich feststellen, dass da wohl ein ganzer Haufen Arbeit auf mich zukommt. Aber ich freue mich schon tierisch drauf und bin richtig gespannt ab wann ich erste Ergebnisse erziele. Auf Lenas ASM tuts bin ich schon getoßen, die sind in der Tat sehr sehr gut, arbeite mich da zur zeit durch.

@Padmak bin mir ziehmlich sicher, dass des Game mit Unity geschrieben wurde
toppits is offline  
Thanks
1 User
Old 02/21/2014, 18:55   #11


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by omitma View Post
Ich mache aber grundsätzlich immer VirtualProtect bevor ich Speicher von dem Spiel ändere.
Das war mir klar, mache ich eigentlich auch immer. Es geht halt hier darum, die Funktion nicht zu verändern sondern nur stumpf aufzurufen. Da meine Kenntnisse sehr begrenzt sind, war ich mir halt nicht sicher ob in diesem Fall ein VP auch nötig ist. Schließlich sind Funktionen ja auch zum Speicher und sollten dementsprechend auch unter das Paging fallen - aber ob aufrufen das benötigt?

Eigentlich relativ sinnfrei das zu diskutieren, da hier ne Codezeile schon für Abhilfe sorgt, würde mich allerdings nur mal interessieren.
Mostey is offline  
Old 02/21/2014, 19:05   #12
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Soweit ich weiß kannst du die Funktionen vom Spiel auch ohne VP aufrufen. Aber probier es doch einfach mal aus ^^ Kann nicht schaden. Interessiert mich jetzt grade auch xD Müssen uns mal so Leute wie Smith, Omdi oder Ende aufklären
th0rex is offline  
Old 02/22/2014, 00:29   #13




 
Omdi's Avatar
 
elite*gold: 93616
Join Date: Apr 2010
Posts: 13,737
Received Thanks: 14,990
Da VirtualProtect aufzurufen ist sinnfrei, da das Spiel diese Funktion auch aufrufen können sollte (EXECUTE Rechte hat -> hat man diese Rechte auch).

In meiner ganzen Laufbahn hatte ich noch nie Probleme Funktionen ohne voriges Aufrufen von VP aufzurufen
Omdi is offline  
Thanks
3 Users
Reply


Similar Threads Similar Threads
Projekt Planung für M2 Brauch hilfe :l
04/16/2012 - Metin2 Private Server - 27 Replies
Hey, Elitepvper ich habe einige Fragen an euch ! Da ich eine Planung habe von Middlerate / Fun PVP Server bräuchte ich einige Vorschläge wie ich ihn Userfreundlich gestalte denn ich habe echt nicht mehr die Gedanken was so bei den Spielern Gut ankommt
Brauche Hilfe beim erstellen meines ersten Hacks , könnt euch was verdienen
06/19/2011 - S4 League - 13 Replies
Also ich habe mir versucht einen Hack mit JakeFrost Hack Creator zumachen , aber fail Habe die Values und glaube auch die richtigen adressen wer lust hat mir weiter zuhelfen kann sich sogar eine PaySafeCard im Wert von 10€ verdienen ich weis das ist nicht viel aba naja :D Bedingung : -Muss selber schon gute Hacks rausgebracht haben - erfahrung mit JakeFrost creator - nett sein :P - Skype haben
Root Server in Planung *HILFE*
12/26/2010 - Metin2 Private Server - 13 Replies
Also ich ahbe mir gedacht, das ich mir einen Root server zulege für meinen Metin2 P-Server. Jetzt bräuchte ich allerdings ein paar Hinweise. Ich wollte mir einen Root-Server von Alfahosting.de kaufen hier mal der Link ! preiswerte Linux- und Windows- Server bei Alfahosting.de Wieviel GB RAM sollten es mindestens sein ? 8GB ; 12GB ; 16GB ?
HILFE PSERVER ORDNERS HILFE ..DIE ERSTEN 5 DIE MIR HELFEN KRIGEN NEN FETTES THX
04/02/2010 - Metin2 Private Server - 6 Replies
Ich zocke meinen Pserver auf den chinaordner . Da habe ich einige probleme . Z.b. Das es nicht auf deutsch ist . Jetzt zu meine frage wie kann ich meinen Pserver auf deutsch spielen Bitte eine Ausführliche ERKLÄRUNG Habe die SUFU benutzt da ist nur schrott rausgekommen .



All times are GMT +2. The time now is 05:27.


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.