# Datenpakete auslesen / Ram auslesen



## obi (17. Sep 2009)

Moinsen ich habe eine frage ob meine Idee überhaupt Umsetzbar ist und falls ja wie man da ran gehen sollte.

Ich möchte aus einem Online Spiel die gesendeten Datenpakete die bei mir ankommen prüfen. Zum Beispiel auf welcher Position ich mich befinde, oder falls das Datenpaket gesendet wird das man tot ist das ich da mit ner If Abfrage drauf reagieren kann.

Ich habe mich mal umgeguckt und bei c++ scheint es so zu sehn das sie solche Sachen aus dem Arbeitsspeicher rauslesen, ich glaube dass das mit Java nicht möglich ist oder doch ?

Falls nicht wollt ich deshalb Fragen ob es die Möglichkeit gibt dann direkt die Datenpakete zu filtern bzw. sie "durchzulesen".

Auf meiner Suche bis jetzt bin ich auf das DatagramPacket und die Sockets gestossen. Sind die dafür geeignet ? Ich weiß halt nicht was dafür verwenden muss.

mfg


----------



## HoaX (17. Sep 2009)

Du willst eine Netzwerkverbindung eines anderen Programms belaufen quasi? jpcap ist dann dein Freund. Ob du allerdings durchsteigst was in den Paketen steht und deine Postition bedeutet musst du selbst rausfinden...


----------



## ARadauer (17. Sep 2009)

hoax hat recht, mit jpcap geht das.. hab damit schon mal einen sql sniffer geschrieben.

um welches Spiel geht es den? Ist das Protokoll offen?´Wenn nicht wird das extrem schwer..


----------



## obi (18. Sep 2009)

World of Warcraft, jaja nerd ich weiß...spielen tue ich das Spiel nicht mehr aber ich brauch was handfestes zum coden um mal was neues zu Lernen und weiter zu kommen, und da alle Bots für das spiel meistens was kosten und nicht in java geschrieben sind habe ich mir vorgenommen dies zu endern und einen opensource bot zu schreiben. Vieles habe ich schon geschafft indem ich Pixelausgelesen habe usw. Doch Sachen wie laufwege werden damit kaum gehen da ich nicht prüfen kann auf welcher Position ich mich befinde.

Die Datenpakete bestimmten kann ich ja mit dem Programm "CheatEngine", ich müsste halt mit meinem Programm nur bestimmten können wann das Datenpaket gesendet wurde von dem Spiel bzw. wann ist es Erhalte und dann kann ich drauf reagieren. Ich schau mir mal jpcap an danke.


----------



## dayaftereh (18. Sep 2009)

Ich denke das ist sehr Sportlich und ein große Projekt, würde sagen schwer, was machst du wenn die Paket verschlüßelt, ich würde mich mal mit UDP befassen, ich glaube nämlich das das Spiel nicht über TCP/IP die Position verschickt, wegen dem Overhead, und dan würde ich mir mal Wireshark hollen um mir überhaupt mal ein solches Paket an zu schauen, weil ich dennke da wird nicht driene sethe in stehe an position x,y sondern er delta daten, also nur die Veränderungen, ich denke so eine Protokoll ist schwer aus zu lesen, sonst würde jeder mal ein Bot schieben!


----------



## obi (18. Sep 2009)

Ein Freund von mir der sich damit schon länger beschäftigt als ich ( aber in c++ ) meinte dazu:



> Alle Eingehenden und ausgehenden Pakete sind durch RC4 verschlüsselt, diese müsstest du erstmal entschlüsseln. Der Key steht irgendwo in der Net Klasse von WoW. Einfacher wäre es einen Hook auf die SendPacket und ReceivePacket Funktion von WoW zu packen, dann hätte man gleich alle Daten unverschlüsselt, ist allerdings unter Java ebenfalls nicht möglich.
> 
> Da nur die ersten 2 Bytes aller einkommenden Pakete verschlüsselt sind (nur der OpCode wie SMSG_BLA), könntest du versuchen den Rest des Paketes ohne den Header zu erkennen, ist aber nun leider nicht 100% zuverlässig.
> 
> Ausgehend sind die ersten 6 Bytes verschlüsselt, dort enthalten im Header sind der OpCode (4 Bytes) und die restliche Größe vom Paket (2 Bytes).




Die Ram auslesen geht mit Java nicht was ?


----------



## ARadauer (18. Sep 2009)

> Einfacher wäre es einen Hook auf die SendPacket und ReceivePacket Funktion von WoW zu packen, dann hätte man gleich alle Daten unverschlüsselt, ist allerdings unter Java ebenfalls nicht möglich.


mit jni oder jna vielleicht, aber ich denke für sowas ist java generell nicht so geeignet...


----------

