Auf Sockets einer Fremdanwendung zugreifen. (Socketscanner)



  • Hi zusammen.

    Ich habe vor, für ein Online-Game ein Statistik-System zu bauen mit Visual C++. Aus den Daten, welche vom Game-Server kommen, kann ich so z.B. Erfahrungspunkte usw. auslesen und mit diesen auch dann ein paar Statistische Daten machen.

    Allerdings weiß ich nicht, wie man an z.B. den Socket-Stream der Datei Game.exe dran kommt (die nimmt z.B. Kontakt auf mit IP 123.45.67.89 Port 6900 auf ... also UDP).

    Mein Ziel ist es mit dieser Frage eigentlich nur, wie man an die Daten eines Fremdstreams drankommt. Hat da jemand Ahnung (hoffe, das ich hier richtig bin). Hab leider noch nie mit so einer Socket-Funktion gebaut.

    Hab mal was von Port-Listening gehört, aber bisher nur in der Form, das ich nen eigenen Socket gebaut habe und dessen Daten dann verarbeitet habe.



  • Unter Windows geht das mit ner library (libpcap?!).



  • Also bei libpcap hab ich gelesen, das es für Linux-Systeme ist, und nicht für Windows. Aber generell scheint das schon die richtige Richtung zu sein.
    Dann fand ich unter der Google-Eingabe "libpcap windows" das Programm WinPcap.
    Allerdings nachdem ich es mir zog und installierte, bemerkte ich, das gerademal rpcapd.exe und Uninstall.exe drin waren (Version 4.00).
    Also von .dll, .ocx oder was auch immer keine Spur. Nach dem starten der ersten .exe ging ein Konsolenfenster auf mit der Meldung "Press CTRL+C to stop the server".
    Leider war die Seite von WinPcap komplett auf englisch. Ich hab zwar nur wenig Probleme mit Englisch (sonst würd ich ja auch nicht proggen), aber bei so manchen Fachbeschreibungen fehlt mir einfach das Wissen und die Lust, etwas durch die Übersetzerseiten zu jagen (zudem, das manche es noch unverständlicher übersetzen).

    Ich sag mal am besten, was ich ganz genau vorhabe:

    Und zwar will ich einen Char- und Stat-Viewer für das Spiel Ragnarok Online bauen. Der Server sendet z.B. beim Angreifen eines Monsters Packets mit folgenden Daten:
    01-07-FF-00-FF-01-01-02-02
    besser gesagt: 1 Byte Funktionsbeschreibung (z.B. 01 = Angriff)
    3 Byte Character-ID (z.B. FF-00-FF = ID 16711935)
    dann je nach dem, was das erste Byte ist die dazugehörigen Daten (in dem Fall 0101 = 257 Schaden an Monster 02-02 (Monster-ID 514))
    das Umwandeln hier ist generell kein Problem. Packet-Tabelle hab ich, und die Lizenz für die Software wird auch kein Problem sein (hab da nen guten Kontakt).
    Die Datei heißt richtig ragexe.exe, und diese stellt eben auch die Verbindung zur IP 123.45.67.89:6900 her (als Beispiel... hab gerade nicht die Daten parat, nur der Port stimmt aufjedenfall).
    An den Daten, die reinkommen, kann man auch dann letztendlich erkennen, ob man ein Monster killt, oder ein Item aufhebt, Schaden erhält, oder was auch immer.

    Also mit libPcap, bzw. WinPcap kommt ich nicht großartig weiter. Da gabs dann noch WinDump, aber wie "Dump" ja schon sagt, verändert es Streams, dabei soll es nur ne Read-Only-Funktion, -Library, oder was auch immer sein.

    Vielleicht gibts ja noch ne Alternative, die auch nicht schwer zu integrieren ist.



  • Was du brauchst ist ein pog, dass sich zwischen ich und den Server klinkt und dir die Daten kopiert. Ich hab aber leider nicht die Erfahrung mit UDP. Sollte aber prinzipiell nicht so schwer sein. Haste mal bei Codeguru oder Code-Projekt nach UDP geschaut?

    Aber ob das so ohne probleme geht ist die andere Frage. Da das nen Spiel ist hast du unter umständen das Problem, dass dein Tool als Hack oder Cheat angesehen wird, da du auf die Daten zugreifst die du bekommst / Sendest. Ergebnis: Du fleibst vom Server oder dein Account (???) wird gesperrt. Am besten du kunschaftest das vorher mal aus! Nicht dass du dir die arbeit umsonst machst, weils nachher nicht geht.



  • Also soweit ich informiert bin, werden die Quelltexte vorher geprüft (also hängen da wirklich Experten hinter, die ihre Finger mit in der Software haben). Ich schätze mal, das diese das kompillieren, und ggfs. prüfen werden, ob die Download-Version nicht verändert wurde (MD5-Checksum oder so). Ich bin allerdings auch nicht der einzige, der Software für das Spiel entwickelt hat. Gibt da bereits schon Shopping-Programme, Charviewer (kleinere Version), ServerWatch, usw., die absolut legal sind, auch wenn diese nicht von offizieller Seite kommen. Grundbedingung ist generell eh, das nur der Stream gelesen wird... niemals Daten darüber zur Server- oder Clientsoftware übermittelt werden dürfen (also wie bei nem GameBot, der Charactere steuert)... das hab ich auch eh nicht vor. Hab gerade auch mal zu einem Entwickler Kontakt aufgenommen, der mir da sicherlich viel mehr zu sagen kann (zu Socketfunktion, sowie zur Lizenzierung). Ich hoffe, das ich da ne hilfreiche Antwort bekomme. Leider hatte dessen Software keine DLL (möglicherweise wurde die in die .exe eingebettet). Allerdings ist es dort auch nur ne Konsolenanwendung. 😞
    und bei mir sollte es schon mit WinForms, Dialogen usw. sein.

    Ich hoffe wiegesagt, das ich da weitere Hilfe bekomme, ansonsten muß ich mal bei weiteren Entwicklern fragen, und mich ansonst hier zurückmelden.

    Edit: Codeguru usw. sind interessante Links, thx! 👍


Log in to reply