Habe gerade mal im Schnelldurchlauf gelesen über was hier geredet wird und es ist mir ein Rätsel, warum ihr alle versucht den Launcher-Login über PHP laufen zu lassen. Wenn im Script auh nur der kleinste Logikfehler drin steckt kann jeder "YouTube-Tutorial"-Nutzer sich serverseitigen Zugriff verschaffen. Zudem ist PHP nicht gerade die schnellste und zuverlässigste Methode.
Die beste und sicherste Methode ist ein serverseiter Dienst. Dieser muss natürlich selber gecodet werden. Vorteile gibt es eine Menge wie z.B. die Stabilität und vorallem das einfachere Überwachen. Gleichzeitig kann dieser als Patcher-Dienst arbeiten wenn man nicht dafür zwei Dienste laufen lassen möchte. Zudem könnt ihr den Launcher-Dienst mit dem Login-Dienst verbinden und Dinge wie Multiclienting abfangen.
Bevor ich es vergesse:
Jeder, der seinen Launcher selber schreibt, sollte darauf achten, dass er Informationen nicht "hard coded". Sprich, die IP, die Store-URL, MD5-Hashes für die FileSecurity und vorallem den Namen der game.exe.
All diese Informationen sollten vom Launcher-Dienst kommen. Sobald der Name der game.exe im Launcher hard coded ist, kann man den Client unendlichfach auf ein- und demselben Rechner starten.
MD5-Hashes für beispielsweise .shn-Dateien oder der game.exe sollten ebenfalls local in einer Datei gesichert werden. Hab ich alles schon gesehen, ist mir ein Rätsel wer auf solche dummen Ideen kommt.
Fazit: Alles was nicht clientseitig sein MUSS, sollte auf jedenfall serverseitig ablaufen. Alles was serverseitig abläuft kann nicht von außerhalb manipuliert werden und genau da liegt der Sicherheitskern^^
EDIT: Für alle, die ihr eigenes FileSecurity Tool schreiben: Um MultiClienting durch PackageManipulating und/oder Bypasses zu verhindern, solltet sich dieses nach dem Start der game.exe NICHT schließen, sondern solange aktiv bleiben, bis das Spiel vom Nutzer beendet wird. Dabei sollte es z.B. jede Minute auf doppelte Prozesse checken oder kann z.B. alle 5 Min. ein schnelles Speicher-Abbild der game.exe erstellen um zu überprüfen, ob im RAM Manipulationen an der game.exe gemacht wurden.
Sollte der Nutzer versuchen, die FileSecurity (während das Spiel aktivi st) per Taskmanger zu "killen", beenden sich alle game.exe-Prozesse mit. Dies ist mithilfe von ProzessBinding möglich, erfordert aber natürlich gutes und logisches Programmieren, sowie gute Kenntnisse in der jeweiligen Programm-Sprache, ist dafür auch ziemlich sicher.
MfG,
ChubbyCrab