myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Programm eingriffe Registreren
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Programm eingriffe Registreren

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
KeBo KeBo ist männlich
myCSharp.de-Mitglied

Dabei seit: 26.10.2018
Beiträge: 8
Entwicklungsumgebung: VS 2017, VS Code
Herkunft: Deutschland


KeBo ist offline

Programm eingriffe Registreren

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Forum.

Ich bastel gerade in c#
eine kleine Anwendung das in der Lage sein soll cheats (Spiel Schummel Tools)
zu erkennen.

Ich habe zwar eine Methode gefunden wie man es auf einem einfachen weg lösen kann.
Ich denke, aber man kann diese sehr leicht umgehen, in dem man einfach denn Prozess Name ändert.
Denn noch würde ich euch gerne mal um Ratschläge Ideen und sonstiges fragen.

C#-Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;

namespace Client_Projekt2018
{
    class anticheat
    {

        public bool CheatToolAktiv = false;

        private bool ProcessIsRunning(string processname)
        {
            return Process.GetProcessesByName(processname).Length > 0;
        }


        public void AntiCheatSystem()
        {
            CheatEngine();
            ArtMoney32();

        }

        public void CheatEngine()
        {
            bool CheatEngine = ProcessIsRunning("cheatengine-x86_64");
            if ( CheatEngine == true)
            {
                CheatToolAktiv = true;
                //DatenbankAPI userAcoount isBanned = 1
            }

        }

        public void ArtMoney32()
        {
            bool ArtMoney64 = ProcessIsRunning("am803");
            bool ArtMoney32 = ProcessIsRunning("am803");
            if (ArtMoney32 == true)
            {
                CheatToolAktiv = true;
               //DatenbankAPI userAcoount isBanned = 1
            }
            else if (ArtMoney64 == true)
            {
                CheatToolAktiv = true;
                //DatenbankAPI userAcoount isBanned = 1
            }

        }






    }
}

Hier ist die Problematik aber das sobald das anticheat Tool gestartet wird und der cheat meine Software direkt erkennt ach der hat denn cheat am Laufen also ban ich ihn.

Genau das sollte nicht passieren, sondern der Spieler soll erst gebannt werden, wenn auch wirklich das spiel manipuliert wird.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von KeBo am 29.10.2018 13:25.

29.10.2018 12:44 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.174
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Dafür kann es keine pauschale Antwort geben.

Einen Cheat-Schutz kommt ganz auf das Spiel an.
I.d.R. sind solche Lösungen, wie Du sie versuchst, nie vom Erfolg gekrönt.

Moderne Spiele speichern gewisse Dinge an einigen Stellen ab; nicht nur an einer.
Erfolgt dann von Außen (zB. beim Eingriff in den Speicherbereich) eine Änderung; dann deutet das auf eine verbotene Manipulation hin.

Letzten Endes sind jedoch Anti-Cheat-Tools oft nichts anderes als eine Art Virenschutz:
Es werden gewisse Heuristiken und Hashsummen geprüft.

Daher rennen Anti-Cheat-Entwickler auch immer den Cheat-Schreibern hinterher.

Was letzten Endes Deine Frage ist, das kann aus Deinem Beitrag nicht entnommen werden.
Jedoch gehöre solche Erkennungstools und dessen Logik deutlich in den Profi-Bereich.
29.10.2018 13:27 Beiträge des Benutzers | zu Buddylist hinzufügen
KeBo KeBo ist männlich
myCSharp.de-Mitglied

Dabei seit: 26.10.2018
Beiträge: 8
Entwicklungsumgebung: VS 2017, VS Code
Herkunft: Deutschland

Themenstarter Thema begonnen von KeBo

KeBo ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Okay dann gäbe es noch die Möglichkeit das über eine Art Screenshot tool zu lösen.

Der Benutzer startet das anticheat Tool. sobald das anticheat Tool bemerkt, dass ein spiel gestartet wurde.
Macht er nach 10 min das erste Bild nach weiteren 10 min das zweite und dann jede stunde ein weiteres. Somit erkennt man zumindest schon mal, welcher cheat es ist (beispiel x22 da wird oben rechts oder links der Hack Name angezeigt. Auch könnte man es so lösen, dass eine Video Datei erstellt wird. Die 5 Minuten geht, da die settings ja meistens am Anfang gesetzt werden. Oder aber man einen wallhack erkennt. Usw.

Aber wie würde ich hier vorgehen mit openGl? oder gibt es da eine bessere varieante?
29.10.2018 13:43 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.174
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Sei Dir bewusst, dass Du damit in die Privatsphäre des Benutzers eingreifst und Du Dich rechtlich bei Screenshots und Videos absichern musst.
Vor allem wenn die Bilder hochgeladen oder verarbeitet werden, damit in Dein Zuständigskeitsbereich fällt und evtl. nicht nur das Spiel zu sehen ist.
Das kann ganz schnell ganz dünnes Eis werden...

Sei Dir auch bewusst, dass es durchaus aufwändiger sein kann einen Cheat zu erkennen, als ein Spiel zu entwickeln...
Vielleicht fängst Du nicht gleich mit einem komplexen Thema wie der Cheat-Erkennung an ;-)
29.10.2018 13:47 Beiträge des Benutzers | zu Buddylist hinzufügen
KeBo KeBo ist männlich
myCSharp.de-Mitglied

Dabei seit: 26.10.2018
Beiträge: 8
Entwicklungsumgebung: VS 2017, VS Code
Herkunft: Deutschland

Themenstarter Thema begonnen von KeBo

KeBo ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Okay daran habe ich natürlich nicht gedacht aber danke für diesen Hinweis.
Das würde bedeuten das es möglich sein muss nur von diesem Game Prozess eine Aufnahme zu machen und alle anderen zu ignorieren. Ich denke, wenn man eine gewisse Klausel in die AGB’s packt dann sollte das ausreichen aber da muss man dann noch mal mit einem Anwalt sprechen.

Ist es denn generell möglich nur eine Anwendung zu dokumentieren?


Denn so etwas wie Desktop oder ähnliches soll natürlich nicht mit inbegriffen sein.

//EDIT: ja da hast du recht das scheint echt sehr kompliziert zu sein. dann muss erst mal so ein "LOW" schutz ausreichen. und die anderen fuktionen im tool etwas mehr ausgebaut werden. ;)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von KeBo am 29.10.2018 13:55.

29.10.2018 13:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.174
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Letzten Endes bringt es Dir das intelligenteste Tool nichts, wenn ein potentieller Bösewicht Dein Überwachungstool austrickst.
Und leider muss man sagen, dass .NET (oder auch zB Java) hier keine geeignete Plattform für sowas ist, weil jeder binnen Sekunden dank Tools wie ILSpy an den indirekten Quellcode Deines Überwachungstools kommt und diese im dümmsten Fall manipulieren kann.
Und wenn jemand Cheats schreiben kann, dann weiß derjenige auch wie .NET funktioniert und was ILCode ist.

Und leider ist .NET noch für den Desktop nicht so weit, dass man C# wirklich nativ kompilieren kann.
Im Web-Bereich rund um ASP.NET und Mobile Plattformen gibt es hier große Fortschritte.

Von daher muss man an der Stelle ehrlich sein und Dich eher in Richtung C++ für solch ein Tool verweisen.
29.10.2018 14:15 Beiträge des Benutzers | zu Buddylist hinzufügen
trashkid2000 trashkid2000 ist männlich
myCSharp.de-Mitglied

Dabei seit: 27.12.2010
Beiträge: 155


trashkid2000 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von Abt:
Und wenn jemand Cheats schreiben kann, dann weiß derjenige auch wie .NET funktioniert und was ILCode ist.

Oh ja.

Zitat von Abt:
Von daher muss man an der Stelle ehrlich sein und Dich eher in Richtung C++ für solch ein Tool verweisen.

Und dieser weiß dann auch ganz sicher, wie man in Assembler ein paar JMP's oder NOP's einbaut...
29.10.2018 22:34 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 13.174
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Sicher; nur ist Assembler schon eine deutlich höhere Hürde als ILCode... ;-)
Vor allem für das Level "Script Kiddies", die dann doch die Mehrheit bei sowas bilden.
30.10.2018 20:35 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Jahr.
Der letzte Beitrag ist älter als ein Jahr.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 15.11.2019 15:45