Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 09:25

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

Advertisement



Vorgehensweise bei Botprogrammierung

Discussion on Vorgehensweise bei Botprogrammierung within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jun 2014
Posts: 24
Received Thanks: 8
Vorgehensweise bei Botprogrammierung

Moin,
bin recht neu mit C# unterwegs und habe mir direkt als erstes größeres Projekt mal vorgenommen einen Minibot zu programmieren. Zu Anfang soll er erst einmal einen Login bei einem Spiel (League of Legends Client) automatisch ausführen können und dann ein paar Knöpfe drücken.

Ich mache mir derzeit Gedanken wie die beste Herangehensweise aussieht. Ich habe mich etwas eingelesen und festgestellt, dass tatsächlich meist ein ganzer Bildschirm gescreent wird und dieser dann Pixel für Pixel mit einem Quellbild verglichen wird um letztendlich die Position des Buttons/Feldes (oder was man auch sucht) zu bestimmen. Diese Vorgehensweise hat mich doch sehr verwundert, da das sicher recht viel Computerressourcen in Anspruch nimmt. Daher hatte ich mir überlegt, dass man doch einen "Initialpunkt" der Anwendung (also in meinem Falle der Client vom Spiel League of Legends) herausfindet und diesen Punkt intern als (0,0) festlegt. Von da aus könnte man nun vorher definieren das Usernamefeld soll hier angeklickt werden (100,100) etc.

Wäre das eine sinnige Vorgehensweise oder ist das ganze eh veraltet und sollte man bei so etwas anders vorgehen ? Falls sinnig: Wie kann man das handlen den Initialpunkt sofort erneut zu finden, wenn der Loginclient verschoben wird (also das Fenster in dem Eingaben passieren sollen). Gibt es da sowas wie EventHandler wenn ein bestimmter Prozess verschoben wird. Kann man generell irgendwie auf Eigenschaften von anderen Prozessen zugreifen (z.B. Finde zu meinem Prozess 100 (League of Legends Client) die Größe/Start Koordinate) ?

Freue mich über jeden Tip zur Herangehensweise. Bin recht perfektionistisch, nehme mir hoffentlich nicht zu viel vor.

Viele Grüße
eldorax is offline  
Old 07/16/2014, 04:15   #2
 
elite*gold: 0
Join Date: Aug 2007
Posts: 4,043
Received Thanks: 2,551
Quote:
>bin recht neu mit C# unterwegs
>größeres Projekt
>Bin recht perfektionistisch, nehme mir hoffentlich nicht zu viel vor.
Du dir selbst einen Gefallen und lern zuerst die Sprache. Du wirst auf eigentlich simple Probleme stoßen die dir mit deinem jetzigen Wissensstand unlösbar erscheinen. Es ist egal wie klein der Bot sein soll. Wenn du die Sprache nicht kannst wird es wohl auf C&P rauslaufen und dabei lernt man sehr wenig.
Rainvair is offline  
Thanks
1 User
Old 07/16/2014, 04:21   #3
 
elite*gold: 0
Join Date: Jun 2014
Posts: 24
Received Thanks: 8
Quote:
Originally Posted by Rainvair View Post
Du dir selbst einen Gefallen und lern zuerst die Sprache. Du wirst auf eigentlich simple Probleme stoßen die dir mit deinem jetzigen Wissensstand unlösbar erscheinen. Es ist egal wie klein der Bot sein soll. Wenn du die Sprache nicht kannst wird es wohl auf C&P rauslaufen und dabei lernt man sehr wenig.
Naja es ist nicht so, dass ich garnichts kann, nur habe ich keine Erfahrung mit Bots. Grundlagen wie Datentypen, OOP, Schleifen, Bedingungen etc. behersche ich schon. RMI, JDBC (MySQL Datenbankkomunikation) kenne ich mich auch einigermaßen aus. Also ich denke, dass ich bereit für Neues bin. Und es ist nicht so, dass ich den bisherigen Teil meiner Arbeit nicht verstanden habe; Wie sollte ich sonst die gesehene Vorgehensweise in Frage stellen beziehungsweise über den richtigen Ansatz grübeln...
eldorax is offline  
Old 07/16/2014, 09:46   #4
 
G0dLesZ's Avatar
 
elite*gold: 0
Join Date: Feb 2006
Posts: 38
Received Thanks: 23
Vorgehensweise für Pixel Detection

Um möglichst viel zu lernen, nenne ich keine Bibliotheken, die dir deratige Aufgaben teils vollkommen abnehmen.

1. Finde den Prozess des Ziels mittels
2. Erstelle C# Zeiger auf die native Methode
3. Nutze die Eigenschaft des gefundenen Prozesses und ermittle die Position des Hauptfensters

So hast Du schonmal die Position und Größe des Hauptfensters der Anwendung.
Alle weiteren Funktionen, z.B. der Bezug eines Screenshots eines definierten Bildschirm Bereichs, kannst Du dann mittels Start X/Y des Rechecks verändern.
Screenshots vom Bildschirm machst Du dann z.B. mit .

Alles weitere ist einfache Bot Logik und wird meist in einer Endlos-Schleife entwickelt.
Diese könnte in etwa so aussehen:
Code:
// .IsRunning ensures the target application is still running and accessible
while (Bot.IsRunning) {
    // Do some bot work here

    // Don't let the process eat all of your hair
    Thread.Sleep(10);
}
Die Endlosschleife wird dann, abhängig von verwendetem UI (Console, Windows Forms, WPF), einem eigenen Thread ablaufen, wärend das UI im UI-Thread trotzdem aktualisiert wird.
G0dLesZ is offline  
Thanks
1 User
Old 07/16/2014, 17:53   #5
 
elite*gold: 0
Join Date: Jun 2014
Posts: 24
Received Thanks: 8
So danke für Antwort, ich habe das soweit auch gut hinbekommen. Ich habe übrigens schon ein Bot Framework/Library entdeckt :P.

Ich würde nun gerne die Positionen der einzelnen Buttons/Felder die ich später einmal ansteuern möchte herausfinden. Dazu habe ich mir gedacht, dass ich einen EventHandler steuern möchte, der jedesmal bei einem mausclick eine Methode aufruft. Das gelingt mir noch nicht ganz, im Internet finde ich nur Möglichkeiten wie man z.B. Events abfeuert wenn er sich über ein Element des selben programms abfeuert. Ich möchte jedoch das Event jedesmal auslösen (oder jedesmal wenn ich innerhalb des Rechtecks meines Prozesses klicke).

Kurz: Wie mache ich ein Mouseevent was jedesmal bei einem Click abgefeuert wird / oder jedesmal abgefeuert wird, wenn der Click innerhalb meines Prozesses (die Fläche kenne ich ja) geschiet.

Gruß, und danke für eure Hilfe
eldorax is offline  
Old 07/16/2014, 18:04   #6
 
tolio's Avatar
 
elite*gold: 2932
The Black Market: 169/1/0
Join Date: Oct 2009
Posts: 6,966
Received Thanks: 1,097
tolio is offline  
Thanks
1 User
Old 07/16/2014, 18:08   #7
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Ich würde an deiner stelle einen der vielen opensource emulatoren des lol clienten nehmen. Habe bis jetzt sehr gute in c# gesehen. Müsstest dich dann in die Dokumentation reinlesen.

Für das neu finden des Fensters kannst du findwindow benutzen. Mit den c# clienten wäre das aber überflüssig.
th0rex is offline  
Old 07/16/2014, 18:14   #8
 
Crossside's Avatar
 
elite*gold: 0
Join Date: Dec 2013
Posts: 2,095
Received Thanks: 506
Das einfachste wäre es das ganze nicht mit "Maussimulations klicks" zu lösen.
Es ist total umständlich das ganze mit irgendwelchen Pixelscans usw zu lösen, es ist nur ***** langsam. Zusätzlich wird es zu erheblichen Problemen kommen wenn verschiedene User verschiedene Bildschirm / Window größen haben, oder das Spiel an einer andern Stelle aufm Bildschirm usw..
Kurz gesagt - du reitest dich in zig Tausende Probleme rein so..
Würde es komplett anders angehen..

Wie du vorgehen solltest (imho):

1) Spiel öffnen, ins Loginfeld dein Name eingeben
2) Im Prozess nun den Name per Reversen suchen + damit finden was im Feld drinsteht
3) Pointer zu dem Prozess-Eintrag raussuchen + aufschreibe
4) In C# per Memory Writing deine gewünschte Login-Id (email / nickname) reinschreiben lassen

haste das done, machst das gleiche mit dem Password.
Anschließend einfach nur noch die Funktion raussuchen die aufgerufen wird wenn du ingame auf "Login" klickst, und aufrufen.

Done.

Kein bescheuertes Pixel rumgesuche, kein Bescheuertes Pixel-zählen um rauszufinden wo welche Eingabefelder stehen, kein nerviges ständiges Anpassen der Größenverhältnisse der Eingabefelder bei Patches des Spiels was die Eingabefelder verschiebt / neu anordet usw.
Meiner Meinung nach ist mein Vorschlag ne viel bessere Methode - setzt natürlich raus das man nicht nur Copy Paste Noob Style sich nen Bot zusammenklicken möchte um vor seinen Freunden angeben zu können und zu sagen "EY LEUTTEEE SCHAUT WAS ICH GEILES GEMACHT HABBB"..
Da kannst dann rly auch dein Pixel-Matsch-Scan nehmen für..
Nur mal eine Anmerkung - Pixel-bots sind meistens der totale Müll, Arschlangsam, Verbuggt und von Leuten erstellt die keine Ahnung vom Programmieren haben und es sich so leichter machen wollen.
Es ist aber garantiert nicht ne gute Methode um ein Bot zu proggen, glaub mir.
Definitiv der falsche Ansatz.

p.s: brauchst mir bitte keine pm schreiben, ich werde dir nicht detailierter / privat helfen.

grüße
Crossside is offline  
Thanks
1 User
Old 07/16/2014, 20:40   #9
 
elite*gold: 1
Join Date: Aug 2013
Posts: 1,898
Received Thanks: 1,346
Zudem sind die Pixel witziger weise niemals auf allen Systemen gleich. Es werden immer Leute Probleme damit bekommen. Kanns mir auch nicht erklären :/
Black Tiger ツ is offline  
Old 07/17/2014, 02:01   #10
 
elite*gold: 0
Join Date: Jun 2014
Posts: 24
Received Thanks: 8
Danke für den Hinweiss Crossside. Genau das gleiche dachte ich mir ja eben auch, dass das nicht das wahre sein kann. Aber mit dem Rest bin ich wohl auch maßlos überfordert. Spätestens wenn es dann ingame darum geht gewisse Sachen auszuführen wie z.B. einen checkPoint einzunehmen würde ich mit der Methode wahrscheinlich auf Grenzen stoßen. Kann mir wer die 4 genannten Schritte genauer erklären?

1) Spiel öffnen, ins Loginfeld dein Name eingeben
2) Im Prozess nun den Name per Reversen suchen + damit finden was im Feld drinsteht
3) Pointer zu dem Prozess-Eintrag raussuchen + aufschreibe
4) In C# per Memory Writing deine gewünschte Login-Id (email / nickname) reinschreiben lassen

Wie gehe ich an so etwas heran ? Stichwörter womit ich mich beschäftigen kann?

Gruß
eldorax is offline  
Old 07/17/2014, 02:14   #11
 
Crossside's Avatar
 
elite*gold: 0
Join Date: Dec 2013
Posts: 2,095
Received Thanks: 506
Quote:
Originally Posted by eldorax View Post
Wie gehe ich an so etwas heran ? Stichwörter womit ich mich beschäftigen kann?
1) Reverse Engineering
2) C#
3) C++
4) Game Hacking
5) Assembler
6) Memory Writing & Reading

Wenn du mit sowas überfordert bist, lass es (noch) bleiben.
Lern es richtig, eigne dir oben genannte Dinge an, und dann kannst immer noch ein LoL Bot o.ä proggen, davor wird es nichts anständiges.

grüße
Crossside is offline  
Old 07/17/2014, 07:40   #12


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by Crossside View Post
Das einfachste wäre es das ganze nicht mit "Maussimulations klicks" zu lösen.
Es ist total umständlich das ganze mit irgendwelchen Pixelscans usw zu lösen, es ist nur ***** langsam. Zusätzlich wird es zu erheblichen Problemen kommen wenn verschiedene User verschiedene Bildschirm / Window größen haben, oder das Spiel an einer andern Stelle aufm Bildschirm usw..
Kurz gesagt - du reitest dich in zig Tausende Probleme rein so..
Würde es komplett anders angehen..
Ansonsten würde sich eine eigene Packet Schnittstelle auch rentieren. Hat man den Algorithmus zur Verschlüsselung (bzw. Entschlüsselung) gefunden, kann man auch sicherlich prima den Client emulieren, ohne ihn überhaupt gestartet zu haben. Ist allerdings auch viel mehr Arbeit.
Mostey is offline  
Old 07/17/2014, 07:48   #13
 
Crossside's Avatar
 
elite*gold: 0
Join Date: Dec 2013
Posts: 2,095
Received Thanks: 506
Quote:
Originally Posted by Mostey View Post
Ansonsten würde sich eine eigene Packet Schnittstelle auch rentieren. Hat man den Algorithmus zur Verschlüsselung (bzw. Entschlüsselung) gefunden, kann man auch sicherlich prima den Client emulieren, ohne ihn überhaupt gestartet zu haben. Ist allerdings auch viel mehr Arbeit.

Glaube das dürfte definitiv zu overkill für ihn sein, vorallem weil er keine Erfahrung im Reversen + Assembler hat.. da dürfte das schwer bis fast unmöglich sein mit seinem jetzigen Kenntnisstand^^

Sauberer & genialer ist deine Methode, muss ich zustimmen.
Clientless Paketbot ist halt um einiges Patch resistenter + besser (sofern mans richtig macht).
Crossside is offline  
Reply


Similar Threads Similar Threads
[Biete] Programmierkurse | Vom Einstieg bis zur Botprogrammierung! [VB.Net]
08/27/2013 - elite*gold Trading - 22 Replies
http://4.bp.blogspot.com/-OMRmIbNBq5Q/UM7BGP-agiI/ AAAAAAAABsM/bP6it3pCjAU/s200/vb-logo.png VB.Net Programmierkurse - Vom Einstieg bis zur Botprogrammierung! Ich biete euch hier meine Programmierkurse an. Es sind keine Vorkenntnisse oder bestimmte Software nötig, jeder mit einer Internetverbindung & einem PC/Laptop kann teilnehmen. Wichtig! Wenn ihr Begriffe, welche ich hier anpreche, nicht versteht, ist das nicht weiter schlimm, fragt einfach nach. Wieso ich?
Kleine Frage zur Botprogrammierung
01/09/2013 - Metin2 - 5 Replies
Hallo, Mal angenommen ich lasse Metin2 unter Windows XP in VirtualBox laufen. Wenn ich nun außerhalb von VB einen Bot laufen lasse, der den die Maus bewegt (in VB kann man ja einstellen, dass die Maus nicht gefangen wird) und so einen Angelbot programmiere, wird er vom HS erkannt?? Würde vorm PC sitzen falls ein GM schreibt. Danke schonmal für antworten.
.. Patcher Vorgehensweise?
12/15/2012 - Metin2 Private Server - 3 Replies
Heey Community, ich wollte mich mal an nem Patcher Design machen, nur leider weiß ich nicht so recht wie ich anfangen soll. Ich habe bereits nach gescheiten TuTs gesucht, diese jedoch nicht gefunden. Patcher die mir vom Aufbau her gefallen gibt es anscheinend auch nicht. Nun wollte ich wissen wie die Vorgehensweise ist, wenn man nen Patcher gestalten will. Das größte Problem dabei ist glaube ich, dass ich nicht coden kann. :pimp: Ich hoffe mir kann jemand helfen!
Zygor's Guide - Vorgehensweise
03/30/2009 - WoW Guides & Templates - 3 Replies
Hallo Leute, da ich oft Fragen bekomme wie man denn Zygor's Guide installiert und benutzt. Deshalb eröffne ich jetzt mal ein Guide dazu :D Ich benutze selber Zygor's Guide und muss zugeben das ich am Anfang sehr misstrauisch war, aber als ich mit diesen Guide eine halbe Stunde spielte habe ich mich in diesen Guide "verliebt" :) Zygor's Guide Download: Zygor's Guide Download Passwort: epvpers



All times are GMT +1. The time now is 09:26.


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.