In deinem Fall würd ich ehrlich gesagt nicht versuchen über die Wissenslücken anderer zu referieren denn, ganz ehrlich…
… wenn man in der IT tätig ist, und nicht mal die korrekte Schreibweise von „cachen“ und „Docker“ kennt, dann ist schon einiges im Argen.
Da wären wir wieder mal beim Bäcker und dem Bauingenieur.
„soweit du weisst“ … sorry dir das sagen zu müssen, aber wenn man glaubt zu wissen dass eine interpreted/JIT Sprache schneller ist als eine native compiled language, dann weiss man falsch.
Echt? tut es das? Na schaun wir mal.
Hier ist eine fizzbuzz implementierung in C#: https://pastebin.com/Pvhwp8iX
Und hier dieselbe Methodik in Go: https://pastebin.com/TtUZjQVD
Also kA, wie du das siehst, aber ich seh da net wirklich nen Unterschied. Abgesehn vielleicht davon dass die C# implementierung 13 SLOC hat, und die in Go nur 9
Anscheinend ne Menge, bei der Anzahl an Posts mit der du hier versuchst Leute von deiner Meinung zu überzeugen.
Edit:
Nett wie ich bin hab ich die effizientere Implementierung in Go getauscht durch eine die genau dasselbe macht wie das C# Beispiel
Dir gehts ums bloß stellen um nichts anderes, entsprechend war das nur eine Reaktion auf dein arrogantes Geschreibsel was selbst von viel Unwissen zeugt, es aber versucht anders dar zu stellen um darzulegen das Profiling von Bots nicht geht, was völlig lächerlich íst.
Bro ich habe Kopfschmerzen, war es zu viel zu googeln ob C# auch switch and Case kann ?
Zudem gehts um den Rest, alleine das Bundeling ist so goil da bekomme ich in der normalen Webseitenprogrammierung Ausschlag. Ich habe keine Nachteile! Das ich ein Framework installieren muss ist bestensfalls nervig aber wenn du dich fix beliest wars das auch schon. Denn du benutzt in der normalen Webseitenprograymmierung auch Frameworks on Mass einfach weil alles allein Programmieren viel zu aufwändig ist. Warum soll ich meine Db Anbindung selber schreiben wenn es Nhibernate gibt, warum soll ich mir in Javascript einen Abbrechen wenn es Typescript und Jquery gibt. Ist halt Schwachsinn. Du bentuzt in der normalen Webseitenprogrammierung auch nicht weniger Frameworks entsprechend ist es überhaupt kein Problem NetCore zu nutzen
.
Ich kenn die schon,verchecke das aber oft, ich bringe auch oft life ,statt Live , das Docker stimmt, denn wie du bestimmt weißt, falls nicht h ttps://www.docker.com/ ,so viel zu Wissenslücken.
Eigentlich will ich hier gar nichts weiter zu schreiben, weil ich weiß was ich kann und einen ziemlich guten Eindruck davon bekommen habe was du kannst. Aber wir scheinen hier ja wieder zumindest teilweise zurück zum Thema zu kommen und da musst du auch mal differenzieren bitte.
Dass Bots das Verhalten von Bots an sich analysiert und zum erkennen dieser genutzt werden kann, wurde hier niemals angezweifelt (im gegenteil, ich habe das selbst in vielen Posts schon als etwas dargestellt, was gemacht werden muss und mit Sicherheit auch gemacht wird). Du hast aber behauptet, dass würde auch auf ein Addon zutreffen, dass Daten aus der API für den Bot aufarbeitet und genau das ist das, was nicht sinnvoll machbar ist. Mehr haben wir (oder zumindest ich) gar nicht bestritten.
Und ganz ehrlich: jemand der meint, man könne kein Bild jede halbe Sekunde grabben und analysieren, der hat sich offensichtlich noch nie damit beschäftigt. Ich sag mal so: Gesichtserkennungssoftware funktioniert auf jedem noch so popeligen Smartphone. Und wenn du dann noch so Sachen raus haust wie:
Sorry, aber du hast offensichtlich sehr große Wissenslücken. Ich hab schonmal gesagt, dass das an sich kein Thema ist. Aber du diskutierst hier am laufenden Band über Dinge, von denen du in der tat sehr offensichtlich nicht besonders viel Ahnung hast. Und da du das auch nicht einsiehst, bringt die ganze Diskussion hier auch nichts. Man könnte ja eigentlich vernünftig diskutieren. Aber wenn da nen Dachdecker zu Bäckern geht und sagt „ich habe einen Brotbackautomaten und guck viel Sendungen wo es ums Backen geht, ich erzähl euch jetzt mal wie man richtig bäckt, weil ihr alle keine Ahnung habt“, dann kann man es auch einfach sein lassen vOv
Für mich ist es was anderes ob man in einem Bild 20 Punkte verarbeitet oder ob man das Bild Pixelgenau verarbeiten muss, was man ja irgendwie hinbekommen muss, wenn man alle evtl beachten will. Ich habe auch nicht geschrieben man kann es auf Addon herunterbrechen, sondern es wäre ein Indikator. Denn Blizzard überprüft alle Bots menschlich. Es geht also nur darum, die Menge so gering wie möglich zu halten. Aber seis drum, du hast Recht wayn.
Geht es noch um Performance von C# gegen eine nativ kompilierte Sprache? Da ist dieser Artikel völlig daneben, weil keine der Sprachen nativ kompiliert wird. Geht es hier jetzt rein um „meine Sprache ist die coolste?“, dann würde ich dir empfehlen dich mal wirklich intensiv auch mit anderen Sprachen zu beschäftigen und diese auch mal für größere Projekte anzuwenden. Es gibt kein „meine Sprache ist die coolste“, was eigentlich jeder Entwickler wissen sollte. Es gibt für jeden Anwendungsfall die entsprechend passende Sprache. Ich hab aber keine Lust mich hier mit dir über solche Themen zu streiten. Du bist absolut uneinsichtig und unbelehrbar. Dann bleibt dein Horizont halt da, wo er ist. Muss mich nicht jucken.
Ging es nie. Mir ging es immer um die Vorteile von der Webentwicklung mit Net Core und der herkömmlichen Programmierung von Webseiten! Denn ich wurde ja ausgelacht das wir auf Basis von Net Core programmieren, was deutlich auch Webentwicklung ist, vielleicht hat sich an der Stelle die Diskussion auseinander entwickelt weil das nicht klar war.
Ich weiß jede Sprache hat Vor und Nachteile und andere Einsatzzwecke.
Ach komm schon dir war doch zum Anfang noch nicht mal klar wasn Pixelbot ist
Ich frage mich weiterhin warum es in der Geschichte von World of Warcraft keinen einzigen großen (komplexen) Bot gab der nur über Pixelscan funktioniert hat, obwohl hier die Softwareentwickler erzählen wie awesome das doch wäre.
Wie gesagt, ich will hier niemandem die Kompetenz absprechen, aber es muss doch einen Grund haben das quasi alle bekannten Bots eine andere Technik nutzen.
PS: Auf fachlicher Ebene kann ich als schäbiger WInfo Student mit euch nicht mithalten, daher versuche ich es erst gar nicht
Falsch. Ich habe tatsächlich selbstständig theoretisiert, dass man Infos für einen Bot auf diese Weise aufbereiten könnte. Das es das tatsächlichschon gibt, zeugt nur davon, dass auch andere schon auf die Idee gekommen und dass es offensichtlich funktioniert.
Ich habe aber etwas getan, wozu du nicht in der Lage bist: ich habe zugegeben, dass ich nicht wusste, dass das schon gängige Praxis ist. Du könntest auch ruhig mal zugeben, wenn du etwas nicht weißt. Das tut nicht weh. Stattdessen hast du hier schon, und sorry wenn ich das mal so deutlich sagen muss, literweise Gülle abgeladen.
Ist das lesen von Texten, die nicht als „Zeichenkette“ sondern als Bild vorhanden sind, deutlich komplizierter als erstmal Daten zu verarbeiten, die eh schon in verarbeitbaren Formen vorhanden sind. Solange es nicht tatsächlich nötig ist, den schwereren Weg zu gehen, geht man den einfacheren. Allerdings gibt es mittlerweile auch für dieses Problem fertige Libraries. Das ist also auch nicht mehr so sonderlich kompliziert. Man übergibt der Library ein Bild und bekommt Zeichenketten zurück, die man dann noch ein bisschen parsen muss.
Kann hier niemand wissen, ob es solche Bots nicht schon gibt. Ich würde ehrlich gesagt davon ausgehen, dass es sie schon gibt. Schau gerne mal den Reddit Post an, den ich in einer meiner ersten Beiträge im Thema hier verlinkt habe. Da berichtet ein Bot Author über sein Machwerk (allerdings im Kontext von EVE Online, nicht WoW). Von diesem Bot wusste da auch vorher niemand. Nur weil der Author selber sich dazu entschieden hat auszupacken, weil er mit dem Spiel aufhört, ist das überhaupt bekannt geworden. Ich bin mir absolut sicher, dass auch in WoW Bots gibt, die nicht zugänglich gemacht wurden (egal ob kommerziell oder nicht). Da kann auch keiner sagen, wie die funktionieren. Man könnte das argument auch umdrehen: wieso sind denn nur Bots bekannt, die eben Techniken wie das Lesen des Speichers eines anderen Prozesses nutzen? Aber auch da der disclaimer: wenn es denn überhaupt nur solche Bots sind.
Geht es hier schon lange nicht mehr ums eigentliche Thema (leider).
Zu 1) Ja klar, ich bin mir sicher das es dutzende kleinerer Privatprojekte gibt die auf die Art arbeiten. Die Frage ist halt wie Komplex die im Vergleich zu Bots wie Hbuddy sind.
Zu 2) Aber mal ehrlich wenn es relativ problemlos möglich wäre, dazu der Aufwand vertretbar ist und man noch dazu weitaus weniger Risiko hat gebannt zu werden, wäre das ganze doch auch kommerziell im großen Ausmaß verfügbar. Da steckt ein riesiger Markt hinter, wir sprechen hier von Einnahmen im hohen Sechsstelligen, teilweise wohl sogar Siebenstelligen Bereich.
Zu 3) Zum eigentlichen Thema ist doch alles gesagt, hier sitzen Minimum zwei Softwareentwickler die sich scheinbar mit der Materie auskennen, darum finde ich es einfach Interessant mal ein wenig über die Technik dahinter zu reden.
Ohne, dass ich mich darüber jetzt im Detail informiert hab aber soweit ich hier herauslesen kann, ist die Firma hinter Hbuddy verklagt worden, oder? Da würde ich meinen Bot dann auch nicht mehr an die große Glocke hängen. Den würde ich ganz inoffiziell direkt den Goldsellern andrehen, die dann damit ihr Geld verdienen… vorausgesetzt ich habe tatsächlich vor damit Geld zu verdienen. Der genannte EVE Bot wurde in erster Linie einfach nur zur persönlichen Bereicherung von ausgewählten Spielern gebaut und auch nur an die weiter gegeben.
Das mit dem Aufwand dafür muss man natürlich auch differenziert betrachten. Wenn ich einen Bot haben will, der das Spiel von A-Z komplett alleine Spielen kann, dann ist das natürlich sehr aufwändig. Wenn er nur an ganz bestimmten Spots automatisiert Mobs umboxen können soll, dann ist das alles andere als aufwändig.
Die Technik spielt dabei aber keine Rolle. Ein Bot braucht bestimmte Informationen für seine Aufgabe. Wichtig ist nur, dass er an die Informationen heran kommen kann. Wie er das macht, spielt dabei erstmal keine Rolle.
Und da ist Screengrabbing durchaus eine valide Methode. Wer das nicht glaubt, der soll sich bitte erstmal wirklich mit Screengrabbing auseinandersetzen und sich vielleicht einfach mal Beispiele für sowas anschauen. Simple Dinge wie Gesichtserkennung oder Live-Photo Filter aus diversen Social-Apps kennt da sicherlich jeder als Beispiele, die auch technisch ähnliche Dinge tun.
Ich habe sogar weiter oben ein Video verlinkt, wo gezeigt wird wie man das in Python für GTA V macht. Ich habe ebenfalls schon das Projekt Universe von OpenAI genannt, was das VNC-Protokoll, welchen eigentlich fürs Screensharing gedacht ist, für genau diesen Zweck nutzt. Um es kurz runter zu brechen: OpenAI ist eine Non-Profit Organisation, die sich in erster Linie mit der Weiterentwicklung von KI im allgemeinen befasst. Die haben mit Universe im Grunde eine Umgebung erschaffen, die genau darauf aus ist: KI unter anderem Spiele spielen zu lassen. Dabei werden die Anwendungen in einer geschlossenen Umgebung laufen gelassen und rein über VNC gesteuert. Da gibt es nichts anderes als Screenreading.
In erster Linie geht es bei dem Projekt um Reinforced-Learning-Algorithmen, was hier zugegebenermaßen auch nicht ganz zum Thema passt… aber allein der Screenreading Aspekt davon sollte Beweis genug dafür sein, dass man per Screengrabbing brauchbar an Informationen kommt. Das ganze ist übrigens frei verfügbar. Das kann sich jeder im Detail anschauen und sogar ausprobieren.
Gibts auch:
Es ist schlicht noch einfacher es anders zu machen.
Ich habe weiter oben schon umrissen wie bots ohne screengrabbing in der Lage sein können sich durch WoW zu „navigieren“. Eva hat beschrieben wie simple LUA Addons dazu genutzt werden können Daten aus der API aufzugreifen und quasi für einen Bot „aufzubereiten“.
Und wenn wir, zwei nicht-bottende ITler, hier in unserer Foren-Freizeit mit ein bisschen rumlabern auf solche Ideen kommen, dann kannst du davon ausgehen, dass Leute die sich in realitas damit befassen sich das schon vor langer Zeit gedacht haben.
WoW ist nunmal kein schwieriges Spiel. Es ist vorhersagbar, die API ist mächtig, und viele Dinge die Bots tun lassen sich durch relativ simple Regeln codieren.
Wozu einen Screengrabber schreiben wenn es ein simpler Rule-Bot tut?
Es kommt halt die 80-20 Regel zum Einsatz: Mit 20 % des Aufwands lassen sich meist schon 80% des Ergebnisses erreichen. Und bei husch-pfusch-jobs und freizeitprojekten, und was anderes sind die meisten Bots nicht, reicht das schon.
Das heisst aber nicht dass Screengrabber schwer zu schreiben wären, oder dass man, wie gewisse copypaste-Developer die dotNet fürs Backend benutzen () „Dogger“ schreiben ( ) und glauben C# wäre dasselbe wie eine opcode compiled language () glauben, auf „den RAM zugreifen“ müsse um das hinzukriegen.
Das habe ich doch gar nicht bestritten zumindest nicht in diesem Zusammenhang:
Es ging darum einen Bot zu programmieren der sich menschähnlich verhält und auch nicht einfach zu enttarnen ist. Das mit Screengrabbing einfache Bots in einer Einmannshow zu realisieren sind, stand nie zur Debatte und wurde auch nie angezweifelt.
Du hast vergessen, dass man etwas wie C++ nehmen muss um auf den RAM zugreifen zu können ().
Nein, aber in dem Zusammenhang, um den es hier die ganze Zeit geht:
Was ein vergleichbarer Workload wie die genannten Beispiele ist (im Bezug auf Screengrabbing). Ob der Bot das komplette Spiel alleine spielen kann oder nicht und ob er sich menschenähnlich verhält oder nicht, hat auch beides absolut nichts miteinander zutun.
Das grabben an sich dient nur zur Informationsbeschaffung. Wie der Bot dann mit diesen Informationen umgeht und diese nutzt, um sein Verhalten zu steuern, hat absolut nichts damit zutun, wie er an diese Informationen heran kommt. Und nur weil du mit deinem C# deinen Server schnell auslasten kannst, bedeutet das noch lange nicht automatisch, dass Screengrabbing zu performance hungrig ist, als dass man damit an die nötigen Infos kommen könnte. Das mag vielleicht vor 15 Jahren mal so gewesen sein aber heute gewiss nicht mehr. Und natürlich bedarf das gewissen Optimierungsmaßnahmen. Man grabbt z.B. nicht einfach den ganzen Bildschirm in FullHD sondern nur Teile, die man auch wirklich sehen muss. Und die bricht man dann in der Regel auf greyscale runter und, wenn für den bestimmten Bereich sinnvoll machbar, skaliert auch das Bild noch kleiner.
Konkretes Beispiel: wenn ich wissen will, ob an meiner Cursorposition gerade ein Klickbares Objekt ist, dann grabbe ich vielleicht 2x2 Pixel an der Stelle, wo sich der cursor gerade befindet. Die vergleiche ich dann in greyscale mit Werten, die ich vorher gespeichert habe und weiß dann, ob mein cursor gerade ein Schwert, ein Zahnrad oder der olle Handschuh ist. Wenn es ein Schwert ist, grabbe ich noch den Bereich des obersten Schriftzugs des Tooltips, das sind vielleicht 300x15 Pixel. Da lasse ich dann Tesseract (eine von Google entwickelte freie OCR Library) drüber gucken und hab nen string mit dem Mob Namen und weiß womit ich es zutun hab. Wenn der Name nicht einem für die Gegend gängigen Mob entspricht, dann hab ich es mit einem feindlichen Spieler zutun. Grundsätzlich ist es immer gut zu wissen, wie viel Leben man selbst und das aktuelle Ziel noch hat. Ich sag jetzt einfach mal die Lebensleiste ist 300 Pixel lang, also grabbe ich 300x1 Pixel und zähle einfach von links nach rechts wieviele Pixel davon einen helleren greyscale Wert haben und wieviele einen dunkleren.
Wie ich die ganzen Infos dann nutze um darauf zu reagieren, ist ein ganz anderes Thema.
Ist doch wunderbar, wenn man sich selber demontiert ! Bis jetzt konntest du ja noch den Anschein von Seriösität wahren, das ist jetzt wohl vorbei. Ich habe nicht gesagt man benötigt unbedingt c++ aber mit C++ ist es halt ziemlich einfach.
MIr ging es nur darum, ich habe mehrmals betont, das irgendein Gammelbot damit ohne weiteres machbar ist, das war nie Gegenstand der Diskussion.
Das sagt mir, dass du dich niemals wirklich mit sowas beschäftigt hast.
Ja, und gerne nochmal so deutlich wie es mir möglich ist: es spielt keine Rolle ob man am Ende einen dummen oder einen schlauen Bot schreibt. Fakt ist, dass man in beiden Fällen Informationen benötigt und in beiden Fällen über Screengrabbing an die Informationen heran kommt.
Bedeutet wohl nicht das man unbedingt c++ benötigt oder steht das da ?
es ist nicht schwer.
h ttps://www.fachinformatiker.de/topic/74630-wert-im-speicher-auslesen/ oder findest du das schwer ?
Schwer finde ich einzig und allein daran die richtige Adresse zu finden.
Ich bezweifele ja auch nur das man einen wirklich guiten umfangreichen Bot schreiben kann und das nur mit screengrabbing. Das man einen im Kreis laufendenBotTötenden Bot schreiben kann sieht man wohl zur Genüge. Das habe ich nie angezweifelt es ging um wirklich gute Bots daraus entstand die Diskussion nämlich. Als Vergleich habe ich HBuddy angeführt ein wirklich umfangreicher Bot, der wahrscheinlich nicht grundlos darauf gesetzt hat den Ram auszulesen statt Screengrabbing zu betreiben.
Den RAM eines anderen Prozesses auszulesen ist Vieles aber definitiv nicht trivial.
Zumal C++ und „einfach“ in einem Satz zu verwenden schon argwöhnisch ist.
Edit:
Den RAM eines Prozesses auszulesen und auf einen dangling pointer zu verweisen (was unter ordentlichen Betriebssystemen sowieso sofort terminiert wird) sind zwei komplett verschiedene Paar Stiefel.
Guck mal wie das mit Python geht, oder mit NodeJS, oder mit deinem C#. Das ist im Grunde überall das selbe. Da du da jetzt C++ hervorhebst zeigt einfach nur, dass du kein Plan hast wovon du überhaupt quatschst. Das von dir verlinkte Beispiel unterstreicht das auch noch denn genau so macht man es nicht. Und daher hast du auch einfach keine Kompetenz um hier wirklich sinnvolle Beiträge zu leisten. Wenn dieser Satz jetzt in deinen Augen an meiner Seriösität sägt, dann ist mir das ehrlich gesagt ziemlich egal.
Es steht dir ja frei das zu bezweifeln, aber damit liegst du halt einfach falsch.
Und wie wir sehen lautet die Antwort auf diese Frage: Nein.
Herrlich! Ich hab GEWUSST dass so ein Beispiel von dir kommt, in dem Moment in dem du das erste mal den Namen „C++“ erwähnt hast.
Dann schreib das mal, mein Freund. Und dann änderst du bitte den Wert des pointers (keine Angst du darfst googeln was das ist) auf einen Speicherbereich ausserhalb deines eigenen Programms, und schaust was passiert wenn du ihn dereferenzierst
Sag hallo zu deinem neuen besten freund SIGSEGFAULT