Autoit online Rangliste

  • Tach leute

    Ich arbeite grad an ein spiel und ich würde gerne dort eine online-Rangliste erstellen.
    Aber da gibt es einige probleme z.B das viele den vorgang manipulieren können; zumindestens wenn man es auf der leichten Methode macht.
    (Datei runter laden, ändern, hochladen) z.B die passwörter (file shar hoster) duch ein decopiler auslesen o.a

    Naja ich weis das man es mit PhP schaffen kann das Daten sicher übermittelt werden können ohne das andere die chancen haben das die die passwörter knacken.
    Nur leider habe ich nicht viel ahnung von php...
    was ich eig. brauche ist ein php script und eine erklährung wie ich es anwende (soo dumm bin ich nicht, einfach kurz und knapp).

    Ich nehme auch gerne andere Methoden an, wenn ihr eine kennt (Sollte aber sicher sein^^ wenn möglich)

    Ich währ extrem Dankbar wenn ihr mir helfen könntet.

    ps. wenn es fertig ist würde ich es bzw. werde ich es auch hier reinstellen.

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Es gibt keine Möglichkeit das ganze sicher zu machen...

    Der Internet Verkehr kann immer aufgezeichnet werden und wenn die Daten verschlüsselt sind muss das PW im Script sein was auch nicht sicherer ist :S

  • Ich rede nicht von 100%iger sicher heit, aber meine theorie währ, dass man die dateneingaben mit der URL weiter gibt( z.B "www.hoster.de/php?name=beispiel&Level=120&prestige=3" ) und das dann ein php script ein eintrag in der liste erstellt.

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Ich kann dir mit php nicht weiter helfen...
    Aber ich kann dir sagen das ist keine Sicherheit die URL kann mit stinkt normaler Software sichtbar gemacht werden und für ein Fake Eintrag müsste man die URL ja nur abändern und in den Browser eingeben

    Wenn du wirklich willst das nicht gefaked wird musst du dir was schlaues überlegen dies jedoch hier im Forum zu posten würde die Sache gleich wieder unsinnig machen.
    Zudem dürfen die Überprüfungsmechanismen (Mehrzahl!) nicht im Script ersichtlich sein.

    Blödes Bsp. in einem Game kann man Punkte sammeln die Anzahl punkte werden übertragen.
    Das Game wird nun so programmiert dass immer eine ungerade Anzahl Punkte vorhanden ist.
    Wird eine gerade Zahl übertragen muss es ein Fake sein

    Natürlich ist das so Schwachsinn aber so was in der Art was der "Faker" eben einfach nicht wissen kann weil das nicht direkt im Script steht.

    Wenn du einen eigenen Server Betreibst kannst du für erkannte Faker eine "private" Rangliste machen z.b. mit Hilfe der IP
    Der 08/15 Skiddie wird sein Fake-Eintrag also da sehen und erstmals zufrieden sein^^

    Solche Sachen können funktionieren aber es ist auch da nur ne Frage des Aufwands und nicht mal annähernd sicher.

    Persönlich würd ich dir jedoch komplett davon abraten. investiere die Zeit in das Spiel!
    Denk an die grossen Game Entwickler wo Spezialisten Kopierschutzmechanismen einbauen und 2 Wochen nach release gibt's ein Crack :rolleyes:

  • Erst mal danke für die antworten^^
    klar klar ich was das man dann einfach den link umändern kann...
    aber es müsste eine sichere möglichkeit geben...
    ein fake währ aber nicht soo schlimm wie als wenn jmd mein server "hackt"...
    Ich werd mal schauen... vlt finde ich ja eine möglichkeit.
    aber 1. möglichkeit kann ich schonmal abhacken
    wenn jz 2 auf einmal die rangliste runterladen und gleichzeitig wieder hochladen kann es zu daten verlust kommen... deswegen will ich eine sichere möglich keit,
    also in dem sinne das ein web-script den eintrag macht und nicht der user zuhause... das mein ich mit sicher(genug) is ja kein 1000€ spiel^^

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Das andere Problem lässt sich lösen

    überprüfen ob ein Lock-File da ist wenn ja warten
    Wenn nicht ein Lock-File hoch laden mit Random Inhalt
    Danach kurz wartet und das File wider laden Inhalt Prüfen wenn gleich dann Rangliste laden --> ändern --> hoch laden
    Dann das Lock-File wieder löschen
    Wenn nicht glich dann von oben beginnen

    Theoretisch kann sein das das Lock-File dann nicht mehr gelöscht wird deshalb ganz am Anfang bei der Überprüfung ob es vorhanden ist keine Endlosschlaufe sonder 3-4 versuche danach Lock-File laden Inhalt speichern warten nochmal laden Inhalt vergleichen wenn gleich dann Lock-File löschen und nochmal von ganz vorne beginnen.

    Hoffe das war einigermassen verständlich xD

  • hmm nicht dirrekt ;D was meinste denn genauer mit "lock file"

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Wie wäre es, wenn du die Daten verschlüsselt an ein PHP Script in der URL übergibst. Das PHP Script entschlüsselt die Daten und prüft sie auf Korrektheit (Ich kenne mich jetzt zwar nicht so mit PHP aus aber Daten ver-u. Entschlüsseln müsste doch irgenwie gehen. Es kann ja ein ganz einfaches Verfahren sein, z.B. werden alle Einsen durch ein A ersetzt, Zweier durch ein B...). Somit muss jemand wissen, wie du die Daten verschlüsselst, bevor er die Übertragung manipulieren kann.

  • sowas ähnliches will ich ja, aber erstmal brauch ich ein php script der daten in einer datei schreibt und überschreibt (also das der name nicht doppelt vorkommt)
    Ich hätte es mir so gedacht:
    Programm schickt daten per URL verschlüsselt weiter -> php schreibt den noch verschlüsselten eintrag rein -> Autoit läd die datei runter -> Entschlüsselt -> Sortiert -> und zeigt den eigenen platz und die top 10 an
    Php sollte am besten die daten mit volgender Struktur reinschreiben: z.B (verschlüsselt) sry sieht kompliziert aus ;D
    URL= https://autoit.de/www.beispiel.de\index.php?NAME=0223FEFGRHG0F&PRESTIGE=600F0H01&LEVEL=061999991123&EXP=1231231231231230202F
    Name----------------|PRESTIGE|Level------------|EXP................................

    0223FEFGRHG0F|600F0H01|061999991123|1231231231231230202F ; so sollte am besten das php script die daten in die datei schreiben, und am besten wenn der name schon existiert einfach den lätzten eintrag löschen und neu hinzufügen oder die daten ändern.

    Wie ihr sieht liegt das problem eigentlich nur die daten so zu hosten das keiner die daten zum host bekommt und das es zu kein datenverlust führt.

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Erstmal: Sicher ist garnichts.

    Meine Idee wäre eine art "Replay" zu erstellen und dieses Hochzuladen.
    Darin sind alle Ausgangsvariablen gespeichert, alle Sachen die der Spieler macht und in Zeitabständen von z.B. 2-3sek auch einige Variablen.
    Fertig hochgeladen müsste dieses Replay zuerst überprüft werden (ob die Ausgangsvariablen stimmen usw) und anschließend im Schnelldurchlauf abgespielt werden.

    Wenn man die Bedingungen ändert (z.B. Startkapital im Skript (dekompilliert) erhöht, und damit spielt) wird das direkt bemerkt.
    Wenn man anderweitig iwie schummelt fällt das in der Regel beim Abspielen des Replays auf (negatives Geld oä, wenn man was baut ohne Geld zu haben).
    Der Endstand bei den Punkten wird nicht mit übermittelt. Der ergibt sich aus dem Replay.

    --> Man kann den Kram auch unverschlüsselt übermitteln, da jeder so viel hochladen kann wie er will. Nur gültige Replays werden in die Online Rangliste aufgenommen.

    Wie man das im Endeffekt realisieren kann weiß ich nicht^^
    Aber das wäre meine Idee. Und ich denke die ist relativ sicher...

    lg
    M

  • Auf jeden Fall dürfen die User nicht wissen, wie und wohin du die Daten überträgst. Geheimhaltung ist in diesem Fall nämlich noch wichtiger als Verschlüsselung Denn wenn man nicht weiß, wie etwas funktioniert oder dass es überhaupt existiert, kann man es auch nicht manipulieren.

  • Mit Lock-File meine ich einfach ein File das so heisst kann auch anders heissen ist Wurst nur immer gleich.
    Lock wegen englisch für Schloss es schliesst sozusagen den Upload für alle andern User solange es existiert;)

    @ Marsi das wäre in der Tat recht sicher jedoch sehr sehr aufwändig

    Cheater Dieter das Verschlüsseln bringt nix verstecken ist viel der bessere Ansatz jedoch darf man dann hier im Forum nicht drüber schrieben sonst is das ganze wider für nix.

    Jedoch ist es nicht möglich den Übertragungsort zu verstecken dass kann sowiso herausgefunden werden
    Ich überprüfe öfters mal wohin gewisse Programme Daten senden bzw. von wo sie welche abrufen das ist nicht ohne erheblichen Aufwand zu verstecken
    Man müsste schon ein fremdes auf dem PC sicher vorhandenes Programm manipulieren das es einem die Gewünschten Daten holen geht und auch das findet man wenn man danach sucht.

  • Gegen Dekompillieren kann man eh nicht gerade viel machen... Hatte SEubo nicht mal nen Obfuscator geschrieben?
    Hier mal ne kleine Spielerei von mir. Leicht zu umgehen, aber man kann ja nen bisschen kreativ sein und noch mehr einbauen ;)

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    ;=========================>
    MsgBox(0, "hi", "Warte auf User...")
    If IsWSAHook() Then
    MsgBox(0, "WSA-Hook detected", "Bitte stellen sie sämtliche Sniffer aus!")
    Else
    MsgBox(0, "Alles in Ordnung", "Ich finde ihre Ehrlichkeit toll!")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Func IsWSAHook()
    $lpSendAddress = _WinAPI_GetProcAddress(_WinAPI_GetModuleHandle("Ws2_32.dll"), "send")
    $struct = DllStructCreate("byte", $lpSendAddress)
    If Dllstructgetdata($struct, 1) = 0xE9 Then
    return True
    Else
    return false
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _WinAPI_GetProcAddress($hModule, $sProcess)
    Local $aReturn
    $aReturn = DllCall('kernel32.dll', 'ptr', 'GetProcAddress', 'ptr', $hModule, 'str', $sProcess)
    If @error Then Return SetError(@error, 0, 0)
    Return SetError(0, 0, $aReturn[0])
    EndFunc ;==>_WinAPI_GetProcAddress by smashly of http://www.autoitscript.com/forum/topic/13…-call-function/

    [/autoit]


    Diese Funktion detected die meisten Hooks, unter anderem auch WPE Pro. Allerdings ist es trotzdem leicht zu umgehen, wenn man den Code hat.

  • Danke für die weiteren antworten^^
    @acc4iload
    achso meinst du das, hmm ja währ glaube ich eine möglichkeit aber wie gesagt ich möchte ungern die host daten ins script packen.
    @@night@
    In einem anderen forum hab ich ein programm gefunden das zumindestens das dekompillieren beschwert....
    aber wie gesagt is auch keine 100%ige sicherheit.
    Aber dein scriptchen funkt auch nur wenn es audgeführt wird^^
    also dein script prüft ob jmd ein dekomp. am laufen hat o. wie? die
    Ws2_32.dll sagt mir nichts^^
    @Cheater Dieter
    Ja das hatte ich auch vor nicht zu verraten wie das system arbeitet, aber wenn son kiddi kommt und mein script aus der exe zieht(Dekompillien) änderts es eh nich viel drann
    @Marsi
    Ja das währ wohl eine möglichkeit sich gg cheater zu schützen^^

    Ps. wenn einer sich mit php oder eine andere web sprache z.B Java genug auskennt, der so ein system schreiben kann
    dass daten in einer datei geschrieben werden und ältere einträge vom gleichen benutzer löscht, währen glaube ich einige dankbar
    denn ich habe ja schon vor der erstellung dieses thema einige zeit gesucht und auch bemerkt das einige andere sowas auch gern hätten.
    ich glaube nicht nur ich hab das problem.

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Zitat

    also dein script prüft ob jmd ein dekomp. am laufen hat o. wie? die


    Falsch. Mein Skript kontrolliert, ob ein fremdes Programm die send-Funktion für Netzwerkpakete gehookt hat. Die meisten Sniffer machen das (Wireshark z.B. nicht). Das macht es schwieriger den Netzwerkverkehr deines Programmes zu überwachen.

  • achso na dann währ es eine praktische neben funktion^^ danke

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes: