Inventar
-
Wie lässt sich das Elend den umgehen? Wahrscheinlich auch wieder mit checksummen usw?
-
tomy86 schrieb:
Aber mit diesen Informationen, kann man speziell danach Forschen und eben diese Dinge lernen

Wenn dich das interessiert, dann würde ich dir empfehlen dich etwas mit Assembler und Maschinensprache zu beschäftigen.
Also die Grundlagen von Assembler lernen und ein paar kleine Übungsprogramme schreiben.
Dann angucken wie der Maschinencode der für die einzelnen Assemblerbefehle generiert wird aussieht.
Und dann gucken wie das Assembler- bzw. Maschinencode aussieht der von C++ Compilern so ausgespuckt wird.
(Mit Visual C++ geht das z.B. sehr schön, da kannst du jederzeit während des Debuggen die "Disassembly" View dazuschalten, und dann Schritt für Schritt durch die einzelnen Maschinencode-Befehle steppen und dabei mitverfolgen was die CPU eigentlich wirklich macht.)Du musst darin kein Profi werden, aber wenn du mal ein grundlegendes Verständnis dafür hast, hiflt dir das vermutlich sehr selbst zu verstehen wie bestimmte Dinge funktionieren. Und warum bestimmte Dinge eben grundsätzlich unmöglich abzusichern sind.
Und zwar wirklich zu verstehen, nicht nur so "ah OK das klingt irgendwie einleuchtend".
-
tomy86 schrieb:
Wie lässt sich das Elend den umgehen? Wahrscheinlich auch wieder mit checksummen usw?
Siehe das was ich über Konsolen geschrieben habe.
Ohne die Hilfe eines "geschlossenen Systems" (Dongle, Konsole), kannst du das gar nicht verhindern.
Du kannst es nur schwieriger/aufwendiger machen.Ich meine, überleg dir das mal.
Die CPU führt das Programm aus. Die CPU kann also verstehen was da steht, was sie machen soll. Das selbe was die CPU macht, kann man so, mit Zettel und Papier auch machen. Anders gesagt: grundsätzlich lässt sich jedes Maschinencodeprogramm lesen. Mehr oder weniger gut.
Und wenn du das Programm lesen kannst, dann kannst du es auch ändern. Und wenn du es ändern kannst, dann kannst du die Passwortabfrage rausnehmen.Was Prüfsummen angeht: die sind auch nur erschwerend, verhindern aber nix. Du kannst ja im Originalprogramm "nachlesen" was der Server für eine Prüfsumme erwartet. Dann schreibst du das Programm halt um so dass es die Daten aus dem modifizierten Datenfile nimmt, die Prüfsumme aber über das originale Datenfile berechnet.
Oder dass es das original Programm lädt und über das original Programm die Prüfsumme berechnet, obowhl ein modifiziertes Programm ausgeführt wird.Du musst verstehen dass das Problem hier ein grundsätzliches ist. Da kann man nix trixen oder irgendwie schlau sein und es dann doch schaffen. Es ist grundsätzlich unmöglich ein Programm, das auf einem normalen PC läuft, soweit abzusichern, dass es unmöglich wird es zu modifizieren.
Man kann nur dafür sorgen dass es schwer und aufwendig wird es zu modifizieren.
-
Ah ok, ich danke für den Tipp. Dann werde ich mich wohl erstmal damit auseinandersetzen.
-
Ja, das es immer iwo Wege gibt, das weiß ich leider auch. Aber wenn ich jetzt z.B. einfach mal an WoW oder Onlinespiele im allgemeinen denke, dann muss man feststellen, dass dort solche Eingriffe sehr selten bis gar nicht vorkommen. Ohne gültigen und bezahlten Account läuft da gar nix. Zumindest habe ich noch nie was davon gehört, das WoW gehackt worden wäre. Genauso ist es unmöglich, dass man Werte von Waffen usw ändern kann. Da frage ich mich, wie machen die das? Ich denke, das liegt daran, das die Daten vom Server kommen und deswegen war eingangs meine Frage, ob man solche Dinge über eine DB laufen lassen sollte?
-
tomy86 schrieb:
Ich denke, das liegt daran, das die Daten vom Server kommen und deswegen war eingangs meine Frage, ob man solche Dinge über eine DB laufen lassen sollte?
Nein, das Spiel läuft auf dem Server. Alles, was bei dir lokal läuft, dient nur der Ein- und Ausgabe. Eine Datenbank würde dir nicht helfen.
-
tomy86 schrieb:
Ohne gültigen und bezahlten Account läuft da gar nix.
Weil diese Dinge nicht in dem Programm das auf deinem PC läuft überprüft werden, sondern vom Server.
Und das Programm das am Server läuft kannst du nicht manipulieren.
Das ist dann wieder so ein "geschlossenes System".tomy86 schrieb:
Genauso ist es unmöglich, dass man Werte von Waffen usw ändern kann. Da frage ich mich, wie machen die das? Ich denke, das liegt daran, das die Daten vom Server kommen und deswegen war eingangs meine Frage, ob man solche Dinge über eine DB laufen lassen sollte?
Ich denke dass nicht die Daten über Waffen/etc. "vom Server kommen", sondern dass der Server die Berechnungen selbst macht.
Ein paar weniger wichtige Dinge werden die Clients selbst berechnen, aber wer jetzt durch einen Angriff wie viel Schaden nimmt, oder wann ein Cooldown abgeschlossen ist...
Das wird der Server entweder selbst berechnen und dann das fertige Ergebnis an die Clients schicken, oder zumindest die Berechnungen der Clients überprüfen.
-
Wenn du dem allgemeinen Trend folgen willst, sollte deine Frage eigentlich lauten:
Wie speicher ich Daten, damit man Sie gut ändern (modden) kann?
Kein schlechter Trend, wie ich finde.
-
Würde sowas dann auch mit C++ auf dem Server gemacht, oder würde da dann PHP einspringen?
-
Jockelx schrieb:
Wenn du dem allgemeinen Trend folgen willst, sollte deine Frage eigentlich lauten:
Wie speicher ich Daten, damit man Sie gut ändern (modden) kann?
Kein schlechter Trend, wie ich finde.Nun ja, ich halte nicht wirklich viel von Cheatern. Und somit ist mein größtes bestreben keine Möglichkeit zu bieten um dies zu ermöglichen!
-
Du kannst am Server als Sprache verwenden was du willst.
Bei einem Spiel wie WoW wird man aber ziemlich sicher nicht PHP verwenden, zumindest nicht für das Spiel selbst. (Bei Accountverwaltung etc. wäre PHP möglich.)
Und zwar weil PHP dafür einfach zu langsam ist.Es gibt aber vermutlich Spiele wo der Serverteil nicht in C++ geschrieben ist, sondern vielleicht in Java oder C#.
-
tomy86 schrieb:
Nun ja, ich halte nicht wirklich viel von Cheatern. Und somit ist mein größtes bestreben keine Möglichkeit zu bieten um dies zu ermöglichen!
Multiplayer != Singleplayer.
Singleplayer soll ein Spieler doch ruhig machen können was er mag.Und sogar bei Multiplayer ist doch nur wichtig, dass für alle Teilnehmer die selben Regeln gelten. D.h. wenn jemand irgendwo privat einen gemoddeten XYZ-Server betreiben mag, mit veränderten Regeln (für alle Spieler), dann würde ich das auch nicht cheaten nennen.
-
Wie kann ich den C++ auf einem Server benutzen? Ich habe davon bis jetzt noch nix gehört. XAMPP hat soweit ich weiß kein Modul um C++ einzubinden?
Würde es dort auf dem Server große Unterschiede geben, was das Kompilieren an geht?
Genauso Frage ich mich, wie man sowas realisieren könnte? Also nicht im speziellen, sondern eher obs mans Sinnbildlich 2 Programme schriebt und diese dann von einem Übergeordnetem Programm zusammen gesetzt werden oder wie würde der Server mit dem Client arbeiten?
-
Ein "Server" ist nicht zwingend ein Webserver.
Irgendein Programm, was auf Input von gewissen Ports wartet und dem man so übers Internet Daten schicken kann, ist ein Server.
-
hustbaer schrieb:
tomy86 schrieb:
Nun ja, ich halte nicht wirklich viel von Cheatern. Und somit ist mein größtes bestreben keine Möglichkeit zu bieten um dies zu ermöglichen!
Multiplayer != Singleplayer.
Singleplayer soll ein Spieler doch ruhig machen können was er mag.Und sogar bei Multiplayer ist doch nur wichtig, dass für alle Teilnehmer die selben Regeln gelten. D.h. wenn jemand irgendwo privat einen gemoddeten XYZ-Server betreiben mag, mit veränderten Regeln (für alle Spieler), dann würde ich das auch nicht cheaten nennen.
Ja das weiß ich. Aber ohne Multi kommt man heute eh zu nix mehr. Und somit ist es unumgänglich sich damit auseinanderzusetzen.
-
Nathan schrieb:
Ein "Server" ist nicht zwingend ein Webserver.
Irgendein Programm, was auf Input von gewissen Ports wartet und dem man so übers Internet Daten schicken kann, ist ein Server.Ah ok, habe es jetzt als Webserver verstanden, also den Server allgemein. Danke für die Info.
Gibt5 es da ein zu empfehlendes Programm mit dem man das local Simulieren kann, wie mit XAMPP?
-
tomy86 schrieb:
Ja das weiß ich. Aber ohne Multi kommt man heute eh zu nix mehr. Und somit ist es unumgänglich sich damit auseinanderzusetzen.
Doodle Jump hat soweit ich weiss keinen (online) Multiplayer Mode.
tomy86 schrieb:
Gibt5 es da ein zu empfehlendes Programm mit dem man das local Simulieren kann, wie mit XAMPP?
Du brauchst überhaupt nix spezielles.
Du schreibst ein Programm, das am Server laufen soll.
Und du schreibst ein Programm das den Client darstellt.Und dann lässt du die beiden einfach auf dem selben PC laufen.
Das einzige was du dazu anpassen musst, ist die IP-Adresse zu der sich der Client verbindet.
Die kannst du einfach aus einem externen File einlesen, oder auch im Debug-Mode bei Programmstart vom User abfragen.
-
Ich glaube bei Doodle Jump wäre das auch zu viel des guten

Aso, klar klingt logisch. Hatte jetzt wieder Webserver und PHP im Kopf, was ja nur auf dem Server läuft. Hat sich sehr fest gesetzt bei mir

-
Bei Webservern geht das ebenfalls. Man kann auch Webserver in C++ schreiben. Die müssen einfach nur über Port 80 HTTP Anfragen verstehen und verarbeiten können.
Ein Server kann jeder Computer sein, auch der, auf den du gerade Forenbeiträge schreibst.
-
@tomy86
Wieso sollte ein Webserver oder PHP nur auf nem Server laufen?
Du kannst Apache, IIS oder welchen Webserver du auch immer verwenden willst auch einfach lokal auf deinem PC installieren.
Sind schliesslich auch ganz normale Programme.(OK, IIS ist ne Windowskomponente, und MS hat die IIS Versionen die auf Desktop-Windowsen laufen etwas kastriert - z.B. dass man nur eine einzige Webseite laufen lassen kann. Aber grundsätzlich geht es und reicht es zum Testen.)