Programm Entwicklung

Karrath

Neues Mitglied
Hallo, ich hoffe sehr auf erfahrene Antworten zu meiner / meinen Fragen eventuell ist ja jemand hier der mich mit Wissen bereichern kann.


Folgendes:

Nehmen wir an ich habe ein Programm mit Kernel Level 0 access.

Ist es möglich dieses Programm das beim booten gestartet wird wie folgt zu verbessern.

1. Es soll non stop prüfen ob der Windows Echtzeitschutz eingeschaltet ist.
2. Sofern der Windows Echtzeitschutz NICHT eingeschaltet ist soll es verhindern das ein bestimmtes Programm das mit verknüpft ist nicht gestartet werden kann.

Programm A läuft nur wenn Programm B beim boot gestartet ist.
Sollte Programm B nachdem boot ausgeschalten werden so muss der PC neugestartet werden damit Programm B wieder aktiv ist und Programm A wieder läuft.
Programm A startet nicht wenn Programm B nicht eingeschaltet ist.

So ist der stand aktuell. Nun die Erweiterung.

Programm B soll non stop prüfen können ob der Windows Echtzeitschutz aktiviert ist.
Programm B soll falls der Windows Echtzeitschutz deaktiviert ist Programm A am starten hindern.

Hoffe auf zahlreiche teilnehmer an dieser Diskussion und freue mich jetzt schon auf eure Weisheiten

lg
 

Mat

Mitglied
Habe ich das richtig verstanden? Die Aussagen sind nicht so ganz klar und im Grunde schreibst du 3 mal das Gleiche:

Zusammenfassungsversuch
Programm A := kontrolliertes Programm
Programm B := Kontrollprogramm (ein Rootkit? ;))

1. Es soll non stop prüfen ob der Windows Echtzeitschutz eingeschaltet ist.
2. Sofern der Windows Echtzeitschutz NICHT eingeschaltet ist soll es verhindern das ein bestimmtes Programm das mit verknüpft ist nicht gestartet werden kann.
  • Wenn Windows Echtzeitschutz aus, soll Programm A (nicht) gestartet werden können

Programm A läuft nur wenn Programm B beim boot gestartet ist.
Sollte Programm B nachdem boot ausgeschalten werden so muss der PC neugestartet werden damit Programm B wieder aktiv ist und Programm A wieder läuft.
Programm A startet nicht wenn Programm B nicht eingeschaltet ist.
  • Wenn Programm B aus, soll Programm A nicht gestartet werden können

Programm B soll non stop prüfen können ob der Windows Echtzeitschutz aktiviert ist.
Programm B soll falls der Windows Echtzeitschutz deaktiviert ist Programm A am starten hindern.
  • Wenn Windows Echtzeitschutz aus, soll Programm A durch Programm B am Starten gehindert werden

Also dein Ziel ist (?) :
  • Wenn Windows Echtzeitschutz aus, soll Programm A nicht gestartet werden können
  • Wenn Programm B aus, soll Programm A nicht gestartet werden können
  • Wenn Windows Echtzeitschutz aus, soll Programm A durch Programm B am Starten gehindert werden

Wie wird der Start im Moment verhindert? Über services und Rechteverwaltung?
 

Karrath

Neues Mitglied
Sorry ist noch etwas neu für mich ich versuch es mal nochmal.

Sagen wir ich habe ein Computerspiel und einen Cheatschutz für dieses Spiel.

Aktuell ist es so das der Cheatschutz auf Kernel Level 0 arbeitet. Und ja es ist ein rootkit so wie ich es verstehe.

Diesen Schutz möchte ich so erweitern das er Zugriff erhält um zu überprüfen ob der Echtzeitschutz aktiv ist.
Sollte dies nicht der fall sein hindert der Cheatschutz das Spiel am starten.

Aktuell hindert der Cheatschutz das Spiel nicht am starten. Sollte etwas schädliches erkannt werden wird der Nutzer markiert und ein Hardware ID Bann wird ausgerufen nach Auslesung der Daten. Danach ist es generell nicht mehr möglich überhaupt das Spiel zu starten.
 

Mat

Mitglied
Ah, OK. Also das Spiel spricht im Moment nicht aktiv mit dem Cheatschutz, sondern Schutz und Spiel laufen getrennt voneinander?

Oft wird das so gemacht, dass das Spiel eine Library mit lädt, die sich über eine Schnittstelle erst die Erlaubnis vom Schutz holt und dann startet.

Siehe zum Beispiel ganz grundlegendes DRM per Steam, Origin oder Ähnlichem (da ist es erst einmal daran gebunden, dass ein Launcher läuft, der bestätigen kann, dass dein Account die Spiele besitzt).

Dann gibt es manchmal noch die zusätzlichen Schutzprogramme und eigenes DRM der Spielehersteller, die dann meistens als services im Autostart stecken.

Hast du Zugriff auf den Code von beiden Programmen? Spiel und Schutz?
 

Karrath

Neues Mitglied
Der Schutz wird im boot aktiviert.

Das Spiel startet auch nur wenn der schutz beim boot aktiviert wurde.

Wird der Schutz nachdem boot deaktiviert so muss der Computer neugestartet werden damit der Schutz wieder aktiviert ist und das Spiel startet. Andernfalls startet das Spiel auch nicht.

Um das Spiel zu starten wird ein log in benötigt (ähnlich wie bei Steam zb.)
Schutz und Spiel überprüfen die log in Daten.

Also der Schutz spricht mit dem Spiel und umgekehrt.


Die Frage ist nun ob ich den Schutz weiter ausbauen kann.

Die meisten günstigen Hacks/Cheats benötigen einen deaktivierten Windows Echtszeitschutz. Wenn es also möglich wäre das der Schutz erkennen kann ob dieser aktiviert oder deaktiviert ist wäre das sehr hilfreich.

Die Funktion wäre dann:

Schutz sucht nach Echtzeitschutz
Echtzeitschutz an = Schutz erlaubt Spiel start
Echtzeitschutz aus = Schutz verhindert Spiel start



Kann man das coden? Und wenn es möglich ist dies im aktuellen Code einzufügen ist das rechtens? Darf man überhaupt nach sowas scannen oder gibts da Probleme mit Microsoft oder ähnlichem
 

Lowl3v3l

Mitglied
devCommunity-Experte
Ich wüsste gern was du vorhast. Wenn du selbst sowas entwickelst : lass es.
Entweder ist was du tust unethisch oder es ist technisch keine gute Lösung für das was du zu tun versuchst.

Wenn die Programme einfach nur bidirektional kommunizieren sollen, weil eines einen Service für das andere zur Verfügung stellt, bieten sich eine Pipe oder ein Socket an.

Du hast auf einem Windows-System überhaupt als User keinen Zugriff auf Ring 0, und dir die Privilegien zu holen reißt riesige Sicherheitslöcher ins System.

Kopierschutzmechanismen zu umgehen IST zumindest nach bürgerlichem Recht aburteilbar und u.U. extrem teuer, wenn irgendjemand dort weiß was er tut kannst du nicht mal eben Programme ändern weil die bei allem irgendwelche Checksummen und Hashes prüfen, und wenn du dich zu brachial wie Malware verhälst kanns durchaus sein, dass Windows abschmiert oder du bleibenden Schaden, zumindest an der Software, verursachst.

mfg
 

Karrath

Neues Mitglied
Es geht um den Gaming Bereich. Anti Cheat Schutz.

Entwickeln könnte ich nicht selbst wenn ich es wollen würde dafür fehlt mir das Wissen.

Es geht um ein Projekt das noch verbesserung braucht. Und ich möchte mich jediglich informieren was und ob es möglich wäre.

Der Anti Cheat Schutz soll auch nicht auf Windows Datein zugreifen, verändern oder sonstiges.

Die Frage bleibt die gleiche, ob es möglich ist das der Anti Cheat erkennen kann ob der Echtzeitschutz aktiviert ist und den Spiel start dann freigibt oder halt den zugang / start des Spiels verweigert.
 

Mat

Mitglied
Achso, jagut.. das ist ganz normal über die Windows-API abfragbar..zum Beispiel in Powershell: (Get-MpPreference).DisableRealtimeMonitoring --> false wenn an, true wenn aus
 

Karrath

Neues Mitglied
Danke damit kann ich was anfangen :)

Daraus folgt nun die erweiterte Frage macht es überhaupt sinn das so etwas kontrolliert wird und start freigibt / verhindert? Oder ist es viel zu einfach zu umgehen?
 

Mat

Mitglied
Du schreibst, dass du es selbst nicht entwickelst.. aber dadurch dass du die bestehende Lösung erweiterst, entwickelst du es ja dann am Ende doch irgendwie selbst. Deswegen verstehe ich auch noch nicht so ganz, was genau du vorhast. Also denke, wie von @Lowl3v3l erwähnt, auch an Sicherheit und mögliche rechtliche Fragen (die musst du im Hinterkopf behalten).

Ich beziehe mich mal nur auf den rein technischen Aspekt der Echtzeitschutz-Prüfung:
Du müsstest auch noch andere Einstellungen des Defenders überprüfen. Zum Beispiel, ob der Schutz für bestimmte Verzeichnisse und Anwendungen deaktiviert ist:
Code:
Get-MpPreference | select -ExpandProperty "ExclusionPath"
Get-MpPreference | select -ExpandProperty "ExclusionProcess"
Get-MpPreference | select -ExpandProperty "ExclusionExtension"
Kann man das leicht umgehen?
Die Info vom Windows-Schutz ist zuverlässig. Aber nur weil der Echtzeitschutz an ist, heißt es nicht, dass du einen Cheatschutz hast. Ich habe diverse Programme, die für Reverse Engineering oder Cheats benutzt werden könnten, aber der Echtzeitschutz duldet sie alle.

Du bräuchtest also eine ganz lange Blacklist mit "verbotenen" Dateihashes. Und auch die lassen sich leicht ändern. Ab einem gewissen Punkt müsste deine Schutzanwendung entweder alle Dateien auf dem Rechner scannen, immer wieder, oder den Arbeitsspeicher überwachen. Da fängts schon an mit den problematischen Zugriffen auf das System des Users.
 

Lowl3v3l

Mitglied
devCommunity-Experte
Simples Blacklisting wird wohl auch kaum reichen.

Ich zumindest würde sowas dann einfach DoSen indem ich mein Programm zum Cheaten mit jedem Compiler in jeder Version die mir einfällt übersetze. Wenn das nicht hilft fang ich an, es selbst leicht zu permutieren(die Kardinalität der Turing-Maschinen mit demselben endlichen Output ist unendlich), und wenn das nicht hilft und ich wirklich cheaten will bau ich einfach wie in den guten alten 90er-Jahre-Viren ein polymorphes Programm, das bei jedem start seinen Code etwas permutiert oder neu verschlüsselt(für nen geübten Assembly-Programmierer ist die reine Polymorphie, selbst wenn man keinen polymorphen Virus im Source hat, eine Sache von einem Wochenende), oder wenn man RICHTIG übertreiben will gleich ein metamorphes, bei dem nur die formale Grammatik des Programms identisch bleibt, da ists dann gleich ganz vorbei... Und spätestens wenn sich jemand die Arbeit macht bräuchte man behaviour-analysis, und das ist was das du a.) nicht mal eben in ein Windows reingefummelt bekommst und b.) das nicht einmal die großen Schlangenöl-Schmieden auch nur einigermaßen hinkriegen und das c.) massivste Performanceeinbußen für das ganze System bringt.

Das meinte ich übrigens mit "technisch die falsche Lösung" ;) Sobald jemand bei einem Spiel wirklich cheaten will(es die Zeit wert ist und oder Geld bringt) der ein bisschen was im Kopf hat haben alle klassischen Anti-Cheat-Tools gelitten. Schlicht und ergreifend.

Sofern es sich um ein monetarisiertes Online-Spiel handelt wäre es sicherlich produktiver, das serverseitig zu handlen und ggf. ein Report-System dazu zu zimmern(und ich bekäme Angst, wenn du an so einem entwickelst und dann diese Fragen stellst).

Wenn es kein teures Onlinespiel ist das du da entwickelst, wo richtig Kohle im Spiel ist... würde ich Cheater einfach ignorieren oder die Community das per Votekick lösen lassen. Wenns offline ist ist das gleich komplett unnötig.
 
  • Like
Reaktionen: Mat

Karrath

Neues Mitglied
Danke für eure Antworten ist natürlich viel Input und ich hab sicherlich 80% der fachbegriffe noch nie in dem zusammenhang gehört oder gelesen :D

Ich glaube wenn ich der Publisher wäre würde ich nicht hier im Forum solche Fragen stellen :D


Man weiß ja nie auf wen man trifft und ob die Leute sich auch mit Online Spielen auskennen. Aber ich nenne mal Namen eventuell hilft das.

Riot Games hat einen neuen Anti Cheat entwickelt. Dieser heißt Vanguard.

Ich bin ein riesen Fan des neuen FPS Titels der im Sommer rauskommen wird. Leider ist das Spiel jetzt schon verpestet mit Cheatern.
Jeder darf aktuell Riot Ideen und Vorschläge senden. Bevor ich mich aber komplett zum Idioten mache wollte ich erstmal Daten und Erfahrungen sammeln. Ich werde übrigens nicht dafür bezahlt sondern mache dies in meiner Freizeit und aus Liebe zur Gaming Community.

Ockhams Rasiermesser Theorie beginnt immer damit das der einfachste weg auch die einfachste Lösung bietet. So fang ich mit meiner recherche bei 0 an und stelle erstmal die dümmste Frage (Echtzeitschutz).
 

german

Aktives Mitglied
devCommunity-Experte
Vorwarnung: Ich habe mit Spielen absolut nix am Hut und kann auch nur auf die technische Seite eingehen...

Klar kann man den Status abfragen. Und natürlich kann man Events abfangen ( https://docs.microsoft.com/en-us/wi...virus/troubleshoot-windows-defender-antivirus Event 5001). Diese Lösungsansätze beziehen sich auf Windows 10 und den Windows Defender. Drittanbieter sind außen vor, andere Plattformen auch. Und jeder User der administrative Rechte auf seiner Kiste anfordern kann, bekommt den ganzen Kram auch irgendwie ausgehebelt. Bspw. in dem er Services oder Scheduled Tasks deaktiviert die auf solche Events reagieren. Ich bin da völlig @Lowl3v3l 's Meinung. Da lokal irgend etwas ausschließen zu wollen, ist eher vergebliche Mühe.
 

Mat

Mitglied
Riot Games hat einen neuen Anti Cheat entwickelt. Dieser heißt Vanguard.

Ich bin ein riesen Fan des neuen FPS Titels der im Sommer rauskommen wird. Leider ist das Spiel jetzt schon verpestet mit Cheatern.
Jeder darf aktuell Riot Ideen und Vorschläge senden.
Dann gibt es da ganz genau eine Antwort, und zwar die hier:
Sofern es sich um ein monetarisiertes Online-Spiel handelt wäre es sicherlich produktiver, das serverseitig zu handlen und ggf. ein Report-System dazu zu zimmern
Riot Games haben ja sicher schon langjährige Erfahrung mit Anticheat- und Reporting-Systemen. Die machen diese Feedback-Aktion wahrscheinlich nur für User Engagement oder als Abstimmung mit der Community, wie einschneidend sie bei den Maßnahmen vorgehen können.

Find ich ja lobenswert, dass du versuchst, dich erstmal zu informieren statt direkt zu "blamieren". Aber ich denke nicht, dass man dich auslachen wird, wenn du was "dummes" vorschlägst. Einfach machen.

Könntest dich darauf konzentrieren, dir Verbesserungen für das Reporting-System zu überlegen. Oder benutz einfach Machinelearning zur Auswertung des Spielerverhaltens gemeldeter Spieler. Mit Cheatwahrscheinlichkeit etc. Dafür müssen natürlich alle Replays mit allen Inputs und Tastenanschlagsverzögerungen etc. auf dem Server gespeichert werden. :p Hmm.. ich meine mich zu erinnern, dass Warframe soetwas in der Art gemacht hatte, damit die Bots von Usern das Navigieren lernen können.
 

aligator

Neues Mitglied
Zu dem Thema hab ich erst kürzlich was gelesen: https://www.golem.de/news/kernel-tr...doom-eternal-veroeffentlicht-2005-148528.html

Und ich kann dazu nur sagen: find ich überhaupt nicht gut. Ein Programm das nicht zwangsläufig zur Funktion meines PCs beiträgt sollte niemals auf so tiefer Ebene laufen.

Warum?
Weil jeder code der auf dieser Ebene läuft ein potentielles Risiko ist, erst recht wenn es nicht open source ist und somit nicht auf Fehler kontrolliert werden kann.

Es gibt ja noch eine andere Programmkategorie, die auf tieferer Ebene läuft: Antivierensoftware.
Und diese ist auch ein gutes Beispiel dafür, dass es keine gute Idee ist. Es ist schon diverse male vorgekommen, dass eine Antivierensoftware derart krasse Sicherheitslücken gehabt hat (kannst du gerne mal googeln), dass man sich fragen muss, ob man mit sowas wirklich sicherer ist.

Übertragen auf Cheat-Schutz: Warum sollte ich einem Spiel erlauben mit irgendwas mehr wie normalen Userrechten auf meinem PC zu laufen? Das ist ein Riesen Sicherheitsrisiko.
Anti-Cheat schön und gut, aber irgendwo ist dann doch die Grenze was so eine Software können dürfen sollte und was nicht.
Im Endeffekt installiert man sich ja damit ein Sicherheitsrisiko nur um ein bischen zu spielen und Spaß zu haben.

Denn potentiell könnte diese Software ja alles und das ist nicht gut. Da kann der Hersteller noch so viel versprechen das er es nicht tut. -> is mir zu gefährlich.


--> bitte kein Anti Cheat mit mehr Rechten als normale Userrechte.
 

Karrath

Neues Mitglied
Mein Fachwissen ist zu gering um einschätzen zu können was du mit Sicherheitsrisiko meinst. Ist mein PC durch den Anti Cheat leichter zu Hacken? oder kommen leichter Viren auf meinen PC?

Den Artikel hab ich auch gelesen aber ich frag mich dann warum wird da jetzt so ein riesen deckel aufgemacht? Seit Jahren arbeiten anti cheat systeme so es ist nix neues. Ich meine BattleEye und EAC machen dies schon ewig.

Das Leute angst haben ihre Daten werden geklaut bzw gesammelt und weiter verkauft okay kann ich verstehen. Doch dazu muss ich sagen niemand ist gezwungen es ist eine freiwillige entscheidung wem das zu heikel ist muss dieses Spiel ja nicht spielen.

Ganz ehrlich mich zb interessiert das nicht sollten die Daten sammeln auch wenn sie sagen sie tun es nicht.

Ich mein wie viele von uns sind auf sozialen Netzwerken? Haben ein Smartphone einen Smart TV oder eine Alexa`?
Wir nutzen google chrome und bekommen zugeschnittene Werbung bei Facebook angzeigt.

Es ist nicht wirklich ein Aspekt den ich fühlen kann jetzt bei dem Anti Cheat Schutz zu schreien "HILFE MEINE DATEN" und im nächsten Moment poste ich ein Foto von meiner Familie beim Essen markiere den Ort und erzähle der ganzen öffentlichkeit wann ich wo wie was mache ?!


Aber ich möchte hier auch niemanden auf seinen Schlips treten kann ja jeder machen wie er will und das lenkt hier gerade auch das Thema zu etwas anderem. Das gehört eher zu Datenschutz den wir alle schon ewig nicht mehr haben.

Ich wüsste halt gerne wie kann man aktiv gegen Cheats / hacks vorgehen. Versteh nicht was bei Online Spielen so unsicher ist das es immer wieder scheitert? Kann mir das irgendwer erklären?
 

Mat

Mitglied
Nicht Sicherheitsrisiken mit Datenschutzproblemen vergleichen.

Wenn der Entwickler einen Fehler bei seinem Anticheat-Programm macht, dann kann das von einem Angreifer ausgenutzt werden. Weil die Anwendung schon Gesamtzugriff auf dein System hat, kann der Angreifer mit vollen Rechten alles bei dir machen und auch dein gesamtes Netzwerk und deine Haustiere infizieren.

Ich wüsste halt gerne wie kann man aktiv gegen Cheats / hacks vorgehen. Versteh nicht was bei Online Spielen so unsicher ist das es immer wieder scheitert? Kann mir das irgendwer erklären?
Das Problem sind offene Systeme. PCs sind nunmal so und das ist auch gut so. Es gibt unendlich viele Möglichkeiten, zu cheaten und die kann man unmöglich alle abfangen. Warum das so ist, hat @Lowl3v3l beschrieben. Selbst wenn du ein geschlossenes System wie z. B. eine Playstation oder eine Soulja Boy Game Console hast, sind auch da noch viele hacks möglich (mechanisch und digital).
 

Lowl3v3l

Mitglied
devCommunity-Experte
Gegen Cheats kann man gar nicht vorgehen. Code auif so tiefer Ebene laufen zu lassen ist schon deshalb ein Risiko, weil niemand vernünftigen Code schreibt. Wenn ich dir erzählen würde, wie der Code in Medizingeräten und Kernkraftwerken meines Wissens so aussieht würdest du nie mehr ruhig schlafen. Einer der Gründe, warum kein Code mehr Rechte haben sollte als nötig. Es müssen nicht einmal Lücken für Malware sein. Oft genug ist das zeug so schlampig programmiert, dass Fehler darin dir das OS zerschießen. Und ich persönlich finde "ich hab das spiel geupdated, nun fährt mein Windows nicht mehr hoch" ein weniger lustiges Szenario.

Und zum Datenschutz-Teil : Ich zumindest suche mir gern aus, wer all welche Daten, einschl. Passwörter etc. bekommt, danke sehr. Datenschutz ist nicht halb so einfach wie du es dir vorzustellen scheinst. Generell ist das wichtigste Thema da "Datenautonomie". Seine Daten aufzugeben ist okay, wenn man es informiert und freiwillig tut, sonst nicht. Genauso wie bei Sex. Deine Argumentation ist grad : "Ich kann jederzeit missbraucht werden, also ist mein consent ja unwichtig". Nein, ist er nicht.

Warum macht das mit dem Anticheat niemand vernünftig? Weil es nicht geht. Nicht-manipulierbare Systeme zu bauen ist praktisch(im Fall von General-Purpose-Computern mit Administratorzugriff auch theoretisch, weil der Satz von Rice diktiert, dass man keine Software bauen kann, die in anderer Software deterministisch, sicher und in endlicher Zeit erkennen kann, was ihr Ziel ist) unmöglich und selbst für die paar Edge-Cases in denen es gut ginge will niemand den Preis zahlen.
 
Oben Unten