Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Prozess schützen
dcna91
myCSharp.de - Member

Avatar #avatar-2576.png


Dabei seit:
Beiträge: 48
Herkunft: Zürich

Themenstarter:

Prozess schützen

beantworten | zitieren | melden

Ich wollte dieses Problem vor ein Paar Jahren lösen, aber konnte damals keine Lösung finden. Nun interessiert mich die Frage wieder.

Ich möchte mein Programm Prozess ganz einfach vor einem Kill schützen. Ich möchte nicht das der Benutzer es auf irgendeiner Weise den Prozess, z.B. über den Task Manager abschiessen kann. Das aus Schutz, weil ich die Software für eine Schule schreibe und die Benutzer sehr aggressiv gegen solche Massnahmen vorgehen.

Geht das evtl. über ein Windows Service oder sonst irgend ein Windows Hook? bzw. eine Ausblendung des Prozesses wäre auch schon sehr hilfreich.

Wichtig hierbei ist nur das ich die Möglichkeit habe die Software anfangs als Administrator zu starten! Das ist kein Problem. Die Benutzer die an den PC's arbeiten haben dann keine Lokale Admin Rechte mehr.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von dcna91 am .
private Nachricht | Beiträge des Benutzers
Bodie
myCSharp.de - Member



Dabei seit:
Beiträge: 33
Herkunft: NRW

beantworten | zitieren | melden

Du kannst ja versuchen das Programm hinter einem Prozess zu "verstecken".
Benenn es einfach so, wie ein ähnlicher System Prozess.

Zusätzlich kannst du in Form1.Designer.cs

this.ShowInTaskbar = false;
setzen.

So kannst du zumindest ausschließen, dass das Programm direkt erkannt und geschlossen wird. Vor ganz pfiffigen Schülern wird es allerdings mit dieser Methode nicht sicher sein.

Gruß,

Bodie
Wer immer das tut, was er schon kann,
bleibt immer das, was er schon ist.
private Nachricht | Beiträge des Benutzers
zero_x
myCSharp.de - Member

Avatar #avatar-2567.gif


Dabei seit:
Beiträge: 1.044
Herkunft: Koblenz

beantworten | zitieren | melden

Hallo dcna91,

soweit ich weiß, kann man das mit einem Hook auf die entsprechende Funktion in der Win32-API machen. Darauf reagiert man und unterbindet dann das killen.

zero_x
zero_x | myCSharp.de - gemeinsam mehr erreichen

Für längere Zeit inaktiv.
private Nachricht | Beiträge des Benutzers
Narf
myCSharp.de - Member



Dabei seit:
Beiträge: 7

beantworten | zitieren | melden

Prozess abschiessen unterbinden
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.358

beantworten | zitieren | melden

Wenn die Benutzer keine Admin-Rechte haben, dann können diese doch gar nicht über den TaskManager den Prozess killen (wenn dieser von einem Admin-Konto aus erstellt wurde).
private Nachricht | Beiträge des Benutzers
Bodie
myCSharp.de - Member



Dabei seit:
Beiträge: 33
Herkunft: NRW

beantworten | zitieren | melden

Doch, können sie.
Dies hat bei uns an der Schule auch immer funktioniert, obwohl wir Schüler keine Admin-Rechte hatten.

Gruß,

Bodie
Wer immer das tut, was er schon kann,
bleibt immer das, was er schon ist.
private Nachricht | Beiträge des Benutzers
Joetempes
myCSharp.de - Member

Avatar #avatar-3309.jpg


Dabei seit:
Beiträge: 888
Herkunft: Germany

beantworten | zitieren | melden

Zitat von Bodie
Doch, können sie.
Dies hat bei uns an der Schule auch immer funktioniert, obwohl wir Schüler keine Admin-Rechte hatten.

Falsch! Da must Du was verwechseln.

@dcna91
Starte Deinen Prozess als System-Dienst und schon können User die kein administratives Recht haben diesen nicht beenden.

Grüße
private Nachricht | Beiträge des Benutzers
Jelly
myCSharp.de - Member



Dabei seit:
Beiträge: 1.114
Herkunft: Burden (Luxemburg)

beantworten | zitieren | melden

Zitat von Bodie
Dies hat bei uns an der Schule auch immer funktioniert, obwohl wir Schüler keine Admin-Rechte hatten.
Dann hattest du eventuell lokale Adminrechte, oder die Kiste war einfach zu offen konfiguriert.

Unter XP und später sollte ein normaler Benutzer nicht so ohne weiteres in der Lage sein, irgendein Dienst unter dem System Konto abzuschiessen.
private Nachricht | Beiträge des Benutzers
Bodie
myCSharp.de - Member



Dabei seit:
Beiträge: 33
Herkunft: NRW

beantworten | zitieren | melden

Mag sein, dass ich hier etwas durcheinander bringe oder die Situation bei uns eine andere war.

Aber in der Theorie ist es natürlich so, dass ein "normaler" User nicht in der Lage sein sollte dies zu tun.

Gruß,

Bodie
Wer immer das tut, was er schon kann,
bleibt immer das, was er schon ist.
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2.296

beantworten | zitieren | melden

Erinnert mich ein wenig an das Programm was unsere Lehrer meinten uns vorsetzen zu müssen während der Ausbildung. - Nannte sich Mastereye und unsere Lehrer waren Tatsächlich der Meinung die können uns den Bildschirm sperren und das Programm könne nicht umgangen werden. - Schwupps Firewall an und dann wars das auch schon. Also ich denke in welcher Hinsicht auch immer, irgend ein Pfiffiger Schüler wird auch das umgehen können-
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von inflames2k am .
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

Zitat
Also ich denke in welcher Hinsicht auch immer, irgend ein Pfiffiger Schüler wird auch das umgehen können-
Damit hast du prinzipiell recht aber wenn die Benutzerrechte korrekt gesetzt sind, dann tut man sich unter windows schon extrem schwer und wenn es ein schüler trotz korrekt gesetzter rechte schafft, dann hat er sich es verdient und ist in der schule ohnhin fast fehl am platz ;-)

ps: das mit der firewall deaktivieren und aktivieren ist auch eine rechtesache....
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2.296

beantworten | zitieren | melden

Ist aber auch schon interessant wenn man in einer Beurfsschule an einem Rechner sitzt und die Firewall aus ist, weil den Port nur freizugeben wäre für unseren Admin ja zu einfach gewesen *g*. Der lies lieber die Passwortlisten neben uns liegen.
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
Floste
myCSharp.de - Member

Avatar #avatar-2376.jpg


Dabei seit:
Beiträge: 1.130
Herkunft: Norddeutschland

beantworten | zitieren | melden

Ich hatte mal lust dazu und hab mal de unsaubere variante mit hooks implementiert. Und weil es in c++ sauberer und schneller geht, habe ich es auch in c++ gemacht^^

Resultat ist im Angang. Ich hab mal als test das Abschießen des taskmanagers aus einem anderen prozess (inklusive tricks wie createremotethread und co) verhindert. Es ist ein check eingebaut, das sich das programm selber beenden darf. Außerdem wird das Senden von WM_Close und WM_quit nicht verhindert, aber das sollte kein problem darstellen, man kann seine eigene anwendung entsprechend anpassen.

wirklich wasserdicht ist das system nicht, es lässt sich mit ca. 7 zeilen c++ umgehen, aber nur wenn man weiß, wie es funktioniert.

Verwendung:
1. compilieren
2. ins systemverzeichnis kopieren
3. im Schlüssel "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows" den wert AppInit_DLLs auf den dllnamen setzen

es ist aber wie gesagt die unsaubere variante und man muss ziemlich aufpassen. Deshalb ist es in 99% der fälle b ersser rechte zu verteilen.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Floste am .
Attachments
Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

Wenn man im Taskmanager auf "Prozesstruktur beenden" geht, dann sollte dein schutz dennoch nicht funktionieren oder?
Floste
myCSharp.de - Member

Avatar #avatar-2376.jpg


Dabei seit:
Beiträge: 1.130
Herkunft: Norddeutschland

beantworten | zitieren | melden

vermute, dass es auch das abkann, aber ich probiere es gleich mal aus...

[EDIT]
2 meldungen: "zugriff verweigert" und "mindestens ein prozess aus der prozessstruktur konnte nicht beendet werden"

also hat der schutz es abgefangen...
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Floste am .
Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!
private Nachricht | Beiträge des Benutzers
zero_x
myCSharp.de - Member

Avatar #avatar-2567.gif


Dabei seit:
Beiträge: 1.044
Herkunft: Koblenz

beantworten | zitieren | melden

Hallo Floste,

es wäre nett, wenn du dein Beispielprojekt in den .NET-Komponenten und C#-Snippets veröffentlichen kannst. Andere, die danach suchen, wären bestimmt froh, wenn sie sowas finden. Es gibt bestimmt Interessenten.

zero_x
zero_x | myCSharp.de - gemeinsam mehr erreichen

Für längere Zeit inaktiv.
private Nachricht | Beiträge des Benutzers
Floste
myCSharp.de - Member

Avatar #avatar-2376.jpg


Dabei seit:
Beiträge: 1.130
Herkunft: Norddeutschland

beantworten | zitieren | melden

es ist aber weder besonderrs sauber, noch funktioniert es unter x64 (das portieren ist auchnicht trivial) noch ist es c#
Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!
private Nachricht | Beiträge des Benutzers