Ein bestimmtes Programm blocken



  • Hallo liebe Community,
    habe eine Frage und wollte gerne wissen ob es möglich ist ein bestimmtes Programm zu killen wenn der Prozess offen ist oder es versucht zu injecten (Cheat Engine). Denn ich habe das Problem das einige User damit bei mir auf dem Server dupen, ich habe es schon auf der Client Side behoben, der aber auch teilweise schon gebypasst wird. Hoffe auf einige hilfreiche Ratschläge wie ich mein Problem lösen kann.

    MfG



  • PS: Hier ein kleiner Ausschnitt was ich schon gemacht habe.

    http://pastebin.com/m77GYvmw



  • Welche Frage zu C++ hast du?



  • Du gehst das Problem völlig von der falschen Seite an. In einer korrekten Implementation kann man mit einem Programm wie Cheat Engine nicht viel ausrichten.

    Wichtige Spiellogik hat absolut NIEMALS etwas im Client verloren und das musst du unverzüglich in Ordnung bringen. Deine Bank ruft schließlich auch nicht täglich bei dir an und fragt welchen Kontostand du heute gerne hättest.

    Das Problem mit irgendwelchen Schutzmaßnahmen vertuschen zu wollen ist von Anfang an zum Scheitern verurteilt. Das liegt schlicht daran, dass ein Nutzer volle Hoheit über seinen eigenen Rechner hat, inklusive aller Programme, die darauf ausgeführt werden (d.h. er kann deinen Client nach Belieben verändern) und du eben nicht.



  • Also würde es reichen wenn ich read/write memory Serverseitig blockiere und damit sollte zum größten Teil gegen Leute die sich nicht so gut auskennen das Problem behoben sein???

    MfG



  • Was soll read/write Memory sein? Du solltest die wichtige Spiellogik auf den Server auslagern. Clients sollen also beispielsweise nicht senden können, dass sie gerade 100 Stück von *super duper teures Item hier* aufgenommen haben, sondern der Server sendet dem Client solche Infos. Irgendwelche Cheat Tools auf dem Client könnten dann höchstens die Anzeigen manipulieren aber das bringt ja nichts.



  • Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Könnte mir denn jemand erklären, wie ich es am besten lösen kann das Cheat Engine/Ollydb kein Einfluss auf meinen Server hat?Würde mich um hilfreiche Ratschläge freuen,der mir das erklärt eventuell auch über Skype.

    MfG



  • Betreibst du den Server oder kann jeder einen Server aufmachen? Im letzteren Fall gibt es keinen zuverlässigen Schutz, da der Server Betreiber die Server Software manipulieren kann oder direkt die Spielstände ändern. Wenn nur du einen Server betreibst musst du, wie hier schon 2mal gesagt, alle wichtigen Dinge auf den Server auslagern. Das dazu wahrscheinlich umfassende Umstrukturierung notwendig ist sollte klar sein.



  • Richard123 schrieb:

    Könnte mir denn jemand erklären, wie ich es am besten lösen kann das Cheat Engine/Ollydb kein Einfluss auf meinen Server hat?

    Alle wichtigen Berechnungen auf den Server auslagern, oder zumindest alle Anfragen überprüfen und entsprechend verwefen. Und die Daten die der Client bekommt auf das Mindestmaß reduzieren.

    Beispiele gegen Cheats:

    • In einem Egoshooter Position anderer Spieler nicht senden wenn sie für den Client eh nicht sichtbar sind.
    • Wenn der Spieler Sachen ablegt erst prüfen ob er diese auch im Inventar hat statt alle Anfragen auszuführen
    • Wenn der Spieler handelt nur den Kauf durchführen wenn der Spieler auch genug Geld hat
    • usw.

    Kommt halt immer drauf an was das für ein Spiel ist. 😃



  • Also ganz so einfach ist die Sache nicht.
    Ja, es gibt theoretisch Möglichkeiten wie man die meisten Betrügerreien verhindern kann ohne prüfen zu müssen was am Client so vorgeht. Allerdings sind viele davon nicht praktikabel.

    z.B. bei Wall-Hacks. Klar, Positionen von Gegnern nicht mitschicken die der Spieler nicht sehen kann klingt erstmal wie eine tolle Idee.
    Ist aber nicht so einfach. Erstmal müsste der Server dazu ziemlich viel Rechenpower darauf verwenden zu checken was sichtbar ist und was nicht. Und dann müsste die Logik auch noch ausreichend schlau sein um zu entscheiden was in den nächsten 2-3 Frames sichtbar werden kann. Der Spieler bewegt sich halt und die Gegner bewegen sich auch, und der Client macht üblicherweise Dead-Reckoning.
    Wenn man das nicht berücksichtigt würden Gegner oft aus dem Nichts "aufpoppen" wenn Spieler und Gegner ausreichend flink rumlaufen.
    Und wenn man es berücksichtigt, dann muss man erst wieder Gegnerpositionen schicken bevor der Spieler sie sehen kann. Und dann hätter der Spieler mit Wall-Hack wieder einen unfairen Vorteil.
    Heisst für mich: ich wüsste nicht wie man das praktikabel verhindern könnte, ohne am Client zu checken ob diverse Cheat-Tools laufen.

    Und Gegner sind ja nichtmal das einzige was man mit Wall-Hacks sehen kann. Je nach Spiel könnte es auch durchaus interessant sein andere Dinge zu sehen. Also vielleicht ob diverse Türen offen sind, wo diverse Items rumliegen etc.

    Oder man am Client vielleicht aus den Source-Positionen die an irgendwelche 3D Sound APIs gefüttert werden Dinge rausrechnen und dann visualisieren.

    Und dann natürlich diverse Scripts die dem Spieler helfen "nur" schneller zu reagieren. Wie soll man sowas am Server überhaupt checken?

    ----

    Es hat schon einen guten Grund dass es Tools wie PunkBuster gibt, mit denen man gucken kann ob am Client bestimmte "unerwünschte" Programme laufen. Und dass diese Tools auch von den grossen Jungs die die grossen Spiele entwickeln eingesetzt werden.

    Und ja, natürlich bieten diese Tools keinen absoluten Schutz - nichtmal annähernd. Aber sie sind halt besser als nix.


Anmelden zum Antworten