Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Windows/Linux Native/Flash Sockets (https://www.delphipraxis.net/164678-windows-linux-native-flash-sockets.html)

glotzer 24. Nov 2011 15:17

Windows/Linux Native/Flash Sockets
 
Hallo alle zusammen,
ich hab hier ein bischen ein schwierigeres Problem:
Ich bin gerade am planen um ein Programm für ein Multiplayerspiel zu schreiben,
welches die Chat-logs des Spieles aufzeichnet und gewisse Statistiken erstellt.
(ja, ich habe mit dem Betreiber darüber gesprochen und es ist nicht gegen die AGBs)

Das Problem ist nur an die Daten zu kommen: dazu muss ich den Netzwerktraffic zwischen Client und Server abfangen,
und dann das Protokoll parsen.
Letzteres ist nich weiter schwierig da local mittels Proxy bereits erfolgreich getestet.

Einziger Haken: nicht jeder der späteren Anwender wird Lust haben sich einen 2. PC hinzustellen und ihn als Proxy zu verwenden, nur um an die Statistik zu kommen. Mal abgesehen davon das ich Probleme hab den Spiel- und den "normalen"-Traffic auseinander zu halten.
Also muss ich irgendwie an die Daten kommen bevor sie gesendet werden. Da der Client (leider) in 4 verschiedenen Versionen (windows 32 bit native, windows flash, linux 32bit native, linux flash) existiert denke ich mal das das nicht sooo einfach wird.
Linuxsupport ist nur 2.-rangig, erstmal geht es mir algemein um eine Idee wie man sowas am besten macht.

Meine Ideen bisher:

1. Die Send und Recive funktion der Sockets hooken:
Will ich nicht umbedingt, da dies wohl ziemlich schwer ist, abgesehen davon das ich darüber im www so gut wie keine Informationen gefunden habe.
Außerdem denke ich das das spätestens beim Flashplayer probleme macht rauszufinden was vom Spiel und was von z.B. Youtube ist.

2. Einen Proxy auf dem System hosten und die Serveradresse im Client-RAM auf localhost umbiegen, dann eben weiterleiten
Hier hab ich das Problem das ich keine Ahnung hab wie ich bei Flash etwas im RAM ändern könnte, da es ja in einer VM läuft.

Jetzt frag ich mich ob ich wirklich eine der beiden Ideen umsetzen sollte, wo ich aber das Problem hätte ob es
wenigstens irgend ein halbwegs aktuelles Beispiel wie man (Sicher, ohne Abstürtze/Bluescreens und Treiberinstalation) die Sockets hookt, bzw den Flash-RAM ändert gibt.

Oder hat wer eine viel Bessere Idee?


Danke für die Gedult so viel Text überhaupt zu lesen,
hoffentlich kann mir wer helfen :D


Crosspost: Entwickler-Ecke

Dawn87 24. Nov 2011 15:44

AW: Windows/Linux Native/Flash Sockets
 
Früher gab es die Möglichkeit einen LSP für so etwas zu schreiben:
http://www.microsoft.com/msj/0599/la...edservice.aspx

Allerdings konnte davon immer nur einer gleichzeitig aktiv sein. Da müsstest Du mal recherchieren ob das noch aktuell ist und eventuell eine akzeptable Einschränkunge wäre. Eventuell kannst Du auch WinPCAP einsetzen, das nutzt z. B. WireShark (früher hieß es Etherreal) um Pakete abzufangen.

Ich verstehe nicht, wozu Du einen zweiten PC brauchst?!

Von Idee Nr. 2. würde ich Abstand nehmen, da ich mir sehr gut vorstellen kann, das dir die Heuristik einiger Virenscanner da in die Quere kommen könnte.

Noch ein Link zu WinPCAP:
http://www.magsys.co.uk/delphi/magmonsock.asp


Edit:
Der LSP ist wohl auch nicht unbedingt zu empfehlen:
Zitat:

Sniffing network traffic through LSP can sometimes be troublesome since anti-virus vendors typically flag such activity as malicious — a network packet analyzer is therefore a better alternative for capturing network traffic.
http://en.wikipedia.org/wiki/Layered_Service_Provider

Beste Grüße,
Stefan

glotzer 24. Nov 2011 16:39

AW: Windows/Linux Native/Flash Sockets
 
alsooo:
Zitat:

Zitat von Dawn87 (Beitrag 1137725)
Ich verstehe nicht, wozu Du einen zweiten PC brauchst?!

dieser ist mit dem ersten über LAN verbunden, darauf läuft ein DNS server der bei allen interesanten URLS die eigene IP antwortet, und auf den entsprechenden Ports läuft ein Server der einfach alles mitloggt und dann weiterleitet. Ich bin mir ziemlich sicher das das auch mit einem PC ginge, aber da ist mir die Arbeit und unsicherheit zu groß um damit zu experimentieren.

Zitat:

Zitat von Dawn87 (Beitrag 1137725)

DAS sieht doch richtig gut aus :D Danke da werd ich mich mal mit beschäftigen und hier wieder melden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz