Spiel in Java - prinzipiell nicht cheatsicher?



  • Na ok, trotzdem danke.

    Bye, TGGC (Der Held ist zurück)



  • tach,

    hab jetzt nicht alle beiträge gelesen, aber dein problem ist doch zusammengefasst folgendes:

    dein spiel (in java geschrieben) kann man downloaden. es gibt eine online highscoreliste (auf irgendeinem server). hast du die highscore geknackt kannst du dich bei dem server einwählen und dein heldentum zur schau stellen. so weit richtig verstanden?

    wenn ja, sehe ich jetzt nicht so das problem: du musst doch "nur" eine gesicherte verbindung zwischen denen beiden aufbauen. bin jetzt in java und verschlüsselungen etc. nicht so firm, aber irgend ne ssl-sache wirds da schon geben.

    Ja und dass ein Verschlüsselungsalgorithmus von jedermann lesbar ist, dass ist doch standard. jeder gute algorithmus ist allen zugänglich; darin liegt doch genau die stärke.



  • Es geht nicht darum, das der Algorithmus bekannt ist, sondern um den Schlüssel! Wenn das Java Programm sich bei dem php Script authentifiziert (quasi: Hallo, ich bin das Original Java Programm und nicht gecheatet), dann muss es seine Nachricht mit einem geheimen(!) Schlüssel verschlüsseln. Aber wie soll dieser Schlüssel denn geheim bleiben, wenn sich jeder das Programm runterladen und decompilen kann?

    Es ist also gar keine Frage der Verbindung oder des Algorithmus. Wenn man das Programm hackt, dann würde man diese Sachen ja garnicht antesten, sondern einfach die Daten bevor sie verschlüsellt werden. Den richtigen Veschlüsselungsalgo _und_ Schlüssel benutzt man dann einfach aus dem Original.

    Bye, TGGC (Der Held ist zurück)



  • gut, verstanden.

    du musst irgendwie code von deinem server ziehen, den keiner kennt. aber durch reflection u.ä. ist es wohl auch schwierig, da sich ja wiederum auch jeder in dem nachgeladenen code stöbern kann.....naja mir fällt gerade nix ein....aber für alles gibt es eine lösung!



  • das wäre event. eine lösung:
    in der seite wo das java progamm eingebunden ist ein kleines php script einbauen, dass dir in die datenbank etc. einen unique code schreibt. diesen gibts du dann an deine java anwendung weiter. bevor du den highscore schreibst, prüfst du ob der code in der java anwendung mit den der datenbank übereinstimmt.



  • red2k schrieb:

    diesen gibts du dann an deine java anwendung weiter.

    Und damit in die Haende des potentiellen Angreifers. Was soll das also bringen?



  • SG1 schrieb:

    red2k schrieb:

    diesen gibts du dann an deine java anwendung weiter.

    Und damit in die Haende des potentiellen Angreifers. Was soll das also bringen?

    wie soll er an den code rankommen wenn er nur die java anwendung decompilen kann und nicht das php script??



  • Du gibst den "unique code" an die (unsichere) Java-Anwendung weiter.



  • ja und? wenn man es z.B. über parameter macht steht im code ja nur:
    mycode = GetParameter(0);
    und nicht der code.



  • Und was hindert den Angreifer, ebenfalls GetParameter(0) zu machen? Oder das fertige Programm nehmen, und sich mycode (nachdem dieser ausgelesen wurde) ausgeben zu lassen?



  • Vollkommen egal, was im Code steht. Der Angreifer übernimmt den einfach in sein gehacktes Programm, und dieses bekommt dann genau wie das normale Programm den Key von wo auch immer man ihn herholt. Der Angreifer brauch den Schlüssel garnicht wissen, sondern einfach nur seine gecheatete Punktzahl mit dem Originalprogramm verschlüssen. Im einfachsten Fall geht er also an die passenden Stelle, fügt dort "punkte= 999999;" und kompiliert das Programm neu.

    Bye, TGGC (Der Held ist zurück)



  • Dann lass doch das Programm eine Checksumme von sich selbst erstellen und schick die mit.



  • Optimizer schrieb:

    Dann lass doch das Programm eine Checksumme von sich selbst erstellen und schick die mit.

    Könnte aber genaus Checksumme vom Original einmal erstellen und diese schicken.
    Es ist nunmal Tatsache, dass man das gleiche Problem unter Maschienencode hat,
    nur dort ist es durch die Komplexität um einige Ecken schwieriger, was man bei
    Java nicht wirklich behaupten kann, dank den decompilern.



  • Eben, auch so eine Überprüfung des Programms kann man RuckZuck knacken und auf das Originalprogramm "umleiten"...
    Eine Überprüfung immer nochmal zu überprüfen macht die sache nicht sicher, wenn die Überprüfung slbst unsicher ist. Höchstens etwas aufwendiger zu umgehen.

    Bye, TGGC (Der Held ist zurück)



  • Optimizer schrieb:

    Physikalisch ist es die ideale Landung, sich so weit es geht, ohne Schub fallen zu lassen und genau im richtigen Moment vollen Schub zu geben um dann genau mit v = 0 aufzusetzen.

    Mit v = 0 wirst Du niemals aufsetzen! 😉

    Ich meinte ob Spritreserve / gebrauchte Zeit irgendwas an der Punktzahl ändern...



  • Klar kannst du - zumindest rechnerisch - genau den Boden berühren, wenn v = 0 erreicht ist.
    Und ja, ich gehe davon aus, dass das für die Punkte ausschlagebend ist, sonst würde ja das ganze Spiel noch weniger 😉 Sinn ergeben.



  • Worin besteht die Motivation einem Hobby-Projekt - das wirklich viele Realisierungen besitzt - eine ultrasichere Highscore-Liste zu verpassen? So bahnbrechend ist die Entwicklung ja - wenn man es auf den Punkt bringen will - nicht, oder? Ich denke das ist mit Kanonen auf Spatzen geschossen. Wenn jemand wirklich die Punktezahl cheaten will dann lässt er einen Socket-Sniffer laufen und sieht dann so auch die Aufrufparameter und den Server - so what?



  • CengizS schrieb:

    Ich denke das ist mit Kanonen auf Spatzen geschossen. Wenn jemand wirklich die Punktezahl cheaten will dann lässt er einen Socket-Sniffer laufen und sieht dann so auch die Aufrufparameter und den Server - so what?

    Achso? Na dann mach doch mal, wenn das so einfach geht! Bin an jedem Verbesseerungsvorschlag interessiert. (Das ist auch der Grund => Interesse!)

    Bye, TGGC (Der Held ist zurück)



  • Hast du (wer auch immer es probiert hat) schon nach 3 Versuchen aufgegeben? Oder hat es danach doch noch geklappt?

    Bye, TGGC (Der Held ist zurück)



  • Nein ich habe es nicht probiert. Habe doch oben gesagt, dass meine Motivation dafür gleich null ist.


Anmelden zum Antworten