Programm darf nicht über den TaskManager beendet werden können



  • TiltMaster schrieb:

    Und die Software auf eine Sekunde stellen ist logischerweise Unsinn da die Spieler die Software zum Selbstschutz verwenden.

    Das unterstellt dass du den User nicht vor dem User schützen musst.
    Dann musst du auch die Software nicht vor dem User schützen.
    So einfach ist das.

    TiltMaster schrieb:

    Die Idee von SG1 finde ich schon ganz gut. Gibt es eine API Funktion um eine bestimmte Anwendung als ein anderer Benutzer zu starten?

    Ja, genügend. CreateProcessAsUser z.B.
    Nur, wenn der Spieler die nötigen Berechtigungen hat um die Software zu installieren, dann hat er auch immer die nötigen Berechtigungen um sie wieder loszuwerden.
    Heisst: Wenn die Software z.B. mit Admin oder SYSTEM Berechtigungen laufen soll, dann muss der User zum Installieren Admin sein. Und wenn er Admin ist, dann kann er auch andere Prozesse killen die als Admin laufen.

    Vermutlich gibt es schon einen Weg dem User die Sache ziemlich schwer zu machen - trotz Admin etc. Nur bringt es eben nix. Weil genau da der Punkt erreicht ist wo du doch anfangen solltest über Psychologie nachzudenken. Weil der User das Ding einfach deinstalliert wenn es ihn nervt.

    TiltMaster schrieb:

    Alternativ könnte ich noch den TaskManager manipulieren so das die eine Anwendung nicht beendet werden kann.

    Ich glaube nicht dass du das könntest*. Davon abgesehen wäre das ja wohl so ziemlich das letzte.

    *: Ich meine mit deinem aktuellen Kenntnisstand. Ich will dir nicht die Fähigkeit absprechen das erlernen zu können.



  • Nochmal konkret: Das Onlinespiel ist nicht von dir? Du willst eine Sicherung für Suchties einbauen, damit die nicht so viel spielen? Dann hab ich das falsch verstanden.
    Besser als so eine 0815 Sicherung gehts nicht.



  • hustbaer schrieb:

    Das unterstellt dass du den User nicht vor dem User schützen musst.
    Dann musst du auch die Software nicht vor dem User schützen.
    So einfach ist das.

    Doch der User muss vor dem User logischerweise geschützt werden. Ich erkläre es nochmal genauer:
    Bevor der User anfängt zu Pokern sagt er das er maximal 1 Stunden spielen möchte und wenn er z..b. x $ verloren hat dann soll die Poker
    Software geschlossen werden (in diesem Fall Pokerstars).
    Warum macht man so etwas? Leute die nicht ernsthaft Poker spielen verstehen es vermutlich nicht aber ich erkläre es mal. Angenommen
    der Spieler macht dumme Fehler oder verliert mit einer sehr starken Hand gegen einen anderen Spieler weil der z.b. durch Glück am
    River eine bessere Hand gemacht hat. Da durch kann es passieren das der Spieler wütend wird und anfängst schlecht zu spielen.
    Damit er nicht ewig lange weiterspielt um die Verluste wieder rein zu holen schließt sich die Software wenn er x $ verloren hat und wenn
    die eine Stunde zu Ende ist. Das hat logischerweise den Vorteil das der Spieler in seinem momentanen Zustand nicht poker kann.
    Er muss also z.b. x Stunden warten bevor das Program ihm die Poker Software wieder freigibt. Logischerweise darf es dem User nicht
    möglich sein über normale Windows Mittel die Software in diesem Zeitraum zu entfernen.

    hustbaer schrieb:

    *: Ich meine mit deinem aktuellen Kenntnisstand. Ich will dir nicht die Fähigkeit absprechen das erlernen zu können.

    Doch kann ich 🙂 . Ich verfüge auch über Reverse Code Engineering Kenntnisse. Aber ich bin schon ein paar Jahre raus aus dem ganzen.
    Sobald man im TaskManager einen Eintrag anklickt und auf "Prozess Beenden" klickt dann wird die Prozess ID der Anwendung in den Speicher geladen. Ich könnte einfach über eine Code Injection oder eine DLL Injection die Prozess ID´s filtern. Wenn die ID im Speicher
    steht von der Anwendung die nicht beendet werden soll kann ich z.b. ja einfach eine 0 an die Speicheradresse schreiben. Dann gibt
    der TaskManager eine Fehlermeldung aus da klickt der User auf OK und das wars. Mit dem TaskManager kann er dann jedenfalls nicht mein Programm beenden.

    Alternativ könnte man noch einen Kernel Treiber schreiben der einfach den Prozess vor dem TaskManager versteckt. Aber ich wollte eigentlich eine weniger Aufwendige Lösung .....



  • Wenn du das Programm mit Systemrechten ausstattest, dürfte es nicht mehr über den Taskmanager zu beenden sein.



  • Als Admin kann man wunderbar Prozesse killen die mit SYSTEM Account laufen. Ganz normal über den Task-Manager. Klick, Del, Enter - weg. Das alleine reicht also schonmal nicht.



  • Weil ich's gerade gelesen habe und es zum Thema passt:
    https://blogs.msdn.microsoft.com/oldnewthing/20040216-00/?p=40603/
    Darin werden ein paar Möglichkeiten angesprochen was man machen kann um seinen Prozess "schwieriger zu killen" zu machen.

    Programs can try to make themselves more difficult to kill (deny PROCESS_TERMINATE access, deny PROCESS_CREATE_THREAD access so people can’t CreateRemoteThread(EndProcess), deny PROCESS_VM_WRITE so people can’t scribble into your stack and make you doublefault, deny PROCESS_SUSPEND_RESUME so they can’t suspend you), (...)



  • hustbaer schrieb:

    Als Admin kann man wunderbar Prozesse killen die mit SYSTEM Account laufen. Ganz normal über den Task-Manager. Klick, Del, Enter - weg. Das alleine reicht also schonmal nicht.

    Hast recht, ging wohl nur unter Windows NT nicht. 😉



  • Ja.
    Und mit manchen Prozessen geht es immer noch nicht. Weil die vermutlich so Dinge machen wie im Zitat in meinem letzten Beitrag beschrieben.
    (Die kann man dann zwar auch irgendwie killen, aber halt nicht einfach übern Task-Manager.)
    Grundsätzlich geht es aber erstmal. Was auch gut ist. 🙂



  • Ist nur ein Hirnfurz: Aber installier die Überwachungssoftware doch als Dienst und bau halt was, dass den Dienst nach dem Beenden wieder startet. 🤡



  • Dienst is doof wenn man in der Session von nem angemeldeten User rummachen will.
    Ganz normaler Autorun Prozess passt schon gut.


  • Mod

    Und auch, da baut man sich zwei Programme, die sich einfach gegenseitig überwachen...



  • Am Ende sehe ich dafür trotzdem keinen Grund. - Wenn der Spieler selbst entscheided, ob und wie lang er spielen will und sich dann nicht daran hält, warum ihn hindern?

    Ähnliches Beispiel: Während meiner Ausbildung waren auf allen PC's der Berufsschule Programme installiert, über die die Lehrer die Eingaben sperren konnten. - Das Programm hatte auch keine weiteren Sicherheitsvorkehrungen und es genügte die Windows Firewall zu aktivieren. - Hat den Lehrern zwar nicht gepasst (merkten die da einige Counter Strike spielten), aber sahen sie am Ende dann auch nicht so eng.

    Was ich sagen will ist: Steck doch nicht so viel Zeit darein, etwas zu entwickeln wie man das Beenden verhindern kann, wenn der Nutzer es sowieso auf freiwilliger Basis nutzt.


  • Mod

    inflames2k schrieb:

    Am Ende sehe ich dafür trotzdem keinen Grund. - Wenn der Spieler selbst entscheided, ob und wie lang er spielen will und sich dann nicht daran hält, warum ihn hindern?

    Das ist doch der ganze Sinn der hier angesprochenen Thematik. Wenn der Spieler die Selbstdisziplin hätte, nicht über seinem Limit zu spielen, dann bräuchte er das Programm überhaupt gar nicht erst. Wenn der Spieler bereit ist, sein selbst gesetztes Limit zu brechen, dann muss die hier gesuchte technische Hürde so hoch sein, dass der Spieler sie nicht überwinden kann.

    Wie versiert ist der Spieler denn? Die meisten regelmäßigen Helfer hier im Forum dürften in der Lage sein, so ziemlich jedes Hindernis zu überwinden, dass sich jemand hier ausdenken kann. Aber sie sind auch nicht typische Durchschnittsnutzer. Viele Durchschnittsnutzer dürften schon an den bereits vorgeschlagenen Schutzmechanismen scheitern.


Anmelden zum Antworten