Seite 1 von 2

Prozess / Task vor beenden schützen ???

Verfasst: 21.02.2006 23:26
von osta
Hallo.
Ich schreibe grad ein Prog für unsere Schule (d.h. es läuft schon, muss aber noch verbessert werden). Es macht ein paar Sachen, wie z.B. sperren von Websites usw....
Das funktioniert auch wunderbar, aber:

Die kleinen Freaks wollen immer das Programm beenden...

Also hab ich erstmal den Taskmanager deaktiviert (mit Win98=>Als Bildschirmschoner registrieren=>Strg+Alt+Entf sinnlos)...

Aber da haben sie sich einfach einen Task Manager runtergeladen....

Also hab ichs mit DoubleProcessing probiert (dh. der eine Prozess kontrolliert, ob der andere noch läuft und startet ihn ggf neu....)

Aber dann gibt es auch Task Manager, die zwei Prozesse gleichzeitig beenden können.....

Wie kann man ein Programm so schreiben, dass es nicht zu schliessen ist (Win98!!!).... Es gibt ja Programme (Norton AV), die das können.

Ansonsten wie kann man trixen? Vielleich in ne DLL, die dann bei AttachProcess n Thread erstellt, der auch weiterläuft, wenn das Programm sie freigibt?

Bitte nur Sachen, die dabei helfen und keine Anderen wege..... ( wie z.B. das downloaden von Programmen unterbinden usw....)

Danke

Verfasst: 21.02.2006 23:38
von Macros
Wenn das Programm fertig ist, kannst du´s hier reinstellen?
Wäre nützlich für meinen Programmierkurs.

edit: Taskmanager-Programme in "Red-list" aufnehmen, die jeden Programmdurchlauf gekillt wird.

Verfasst: 22.02.2006 10:06
von Shardik
Eine kurze Suche über Google findet folgende Website, die eine nützliche Übersicht über verschiedene Methoden bietet (mit Unterscheidung zwischen Win9x und WinNT/2000/XP):
http://www.codeproject.com/system/preventclose.asp

Ein VisualBASIC-Codebeispiel für Win98:
http://www.activevb.de/tipps/vb6tipps/tipp0097.html

Verfasst: 22.02.2006 23:15
von yuma
der professionellste Weg dürft sein einen Systemtreiber zu schreiben...

Da braucht man dann doch schon ein bissel mehr knowHow um diesen Weg auszuhebeln...

Doch leider ist es nicht trivial einen solchen Treiber zu programmieren...

Ein anderer Weg wäre, dass Du Dein Programm dem Taskmanager vorenthältst, d.h. kein Eintrag angezeigt wird (kann aber sein, dass die heruntergeladenen Taskmanager das trotzdem anzeigen können)...

Gruß
yuma

PS: Deine Lösung würde mich interessieren!

Verfasst: 22.02.2006 23:20
von AND51
Zur Strafe beim Beenden deines Programms alle laufenden Prozesse "svchost.exe" killen, da ist die RPC-Prozedur bei, die - beendet - das ganze System in 59 Sek. zwangsläufig runterfährt. Dann tuste dein Programm in den Autostart, sodass es quasi wenn es ausgeht, den PC mit ausmacht.
Um das ganze zu schützen sind, wenn gebraucht, PC-Wächterkarten angebracht.

Wenn die könnten würden die an unserer Schule gleich 3 davon in jeden PC stecken, diese dummen Lehrer / Administratoren von unserer Schule.... :evil: :twisted: :roll:

Verfasst: 23.02.2006 00:48
von KTX82
AND51 hat geschrieben:Zur Strafe beim Beenden deines Programms alle laufenden Prozesse "svchost.exe" killen, da ist die RPC-Prozedur bei, die - beendet - das ganze System in 59 Sek. zwangsläufig runterfährt.
...
Nur blöd wenn jemand den Trick mit "shutdown -a" weiß, der den Countdown abbricht :mrgreen:
PS: Die svchosts gibts doch bei Win98 gar nicht, oder irre ich mich? /:->


Ist denn auf allen Rechnern das Gruppenrichtlinien Zeug mitinstalliert?
Darüber ließe sich bestimmt auch was erreichen.

Verfasst: 23.02.2006 10:22
von osta
Zur Strafe beim Beenden deines Programms alle laufenden Prozesse "svchost.exe" killen, da ist die RPC-Prozedur bei, die - beendet - das ganze System in 59 Sek. zwangsläufig runterfährt.
...
Ist nicht das Problem, aber wie soll man denn einen Code ausführen (svchost.exe beenden), wenn der Prozess gekillt wird (da is nix mit Messages ans Window, vonwegen, achtung speichern sie ihre Daten.....) der Prozess wird ja aus dem laufen gekillt
der professionellste Weg dürft sein einen Systemtreiber zu schreiben...

Was soll dieser Treiber bewirken? Also irgendwie muss es ja gehen, weil NAV schafft's auch.
Eine kurze Suche über Google findet folgende Website, die eine nützliche Übersicht über verschiedene Methoden bietet (mit Unterscheidung zwischen Win9x und WinNT/2000/XP):
Register Service Process nützt bei den gedownloadeten nix.
Da steht was von einem Hook, dass es garnicht erst im TaskManager erscheint. Weiss jemand, wie das geht?
edit: Taskmanager-Programme in "Red-list" aufnehmen, die jeden Programmdurchlauf gekillt wird.
Hab ich schon gemacht, aber wie gesagt, die laden sich welche runter, und die haben 1000 verschiedene Namen...
Um das ganze zu schützen sind, wenn gebraucht, PC-Wächterkarten angebracht.

Wenn die könnten würden die an unserer Schule gleich 3 davon in jeden PC stecken, diese dummen Lehrer / Administratoren von unserer Schule....
Das ist kein Problem. Ich bin offizieller System Admin und hab die Passwörter für unsere Wächter. Ich schreib das Programm ja für unsere Schule (im Auftrag....).

Verfasst: 23.02.2006 14:37
von AND51
osta hat geschrieben:
Zur Strafe beim Beenden deines Programms alle laufenden Prozesse "svchost.exe" killen, da ist die RPC-Prozedur bei, die - beendet - das ganze System in 59 Sek. zwangsläufig runterfährt.
...
Ist nicht das Problem, aber wie soll man denn einen Code ausführen (svchost.exe beenden), wenn der Prozess gekillt wird (da is nix mit Messages ans Window, vonwegen, achtung speichern sie ihre Daten.....) der Prozess wird ja aus dem laufen gekillt

Code: Alles auswählen

RunProgram("taskkill.exe", "/F /IM svchost.exe", "")
Beendet den/die Prozesse namens svchost.exe, außerdem werden durch /F die Prozesse gezwungen, sich zu beenden. Das ganze bekommt seinen unglaublich wüzigen Geschmack noch, wenn man es mit dem Parameter /T verfeinert, denn dann wirkt sich das auch auf die Unterprozesse aus.

Mit diesem Einzeiler brauch ich kein Taskmanager, sondern könnt ein PB Programm schreiben, welches gezielt dein Programm beendet. Die Tatsache, dass die Leute irgendwelche Taskmanager benutzen, lässt darauf schließen, dass die sich nicht ganz so gut mit PC auskennen wie du, sonst würden sdie sich wahrscheinlich auch ein EinzeilerProgramm oder so etwas ähnlcihes schreiben.

Andere Idee: Tarne dein Programm: Nenne es auch svchost.exe und lasse es mit dem Benutzernamen SYSTEM oder NETZWERK(DIENST) starten, so weiß keiner, welches echt svchost.exe Prozesse sind, und welche nicht...

Verfasst: 23.02.2006 14:40
von Macros
AND51 hat geschrieben:

Code: Alles auswählen

RunProgram("taskkill.exe", "/F /IM svchost.exe", "")
Wenn dein Program gekillt wurde gibts kein Runprogram() mehr :wink:

Verfasst: 23.02.2006 14:44
von AND51
Stimmt auch. Also entweder die alternative Methode mit dem tarnen nehmen, oder bei jedem Schleifendurchlauf verdächtige Programm killen, ohne Rücksicht auf Verluste. Dieser Mechanismus sollte halt nicht schon bei Paint oder so anspringen, sondern nur bei Programmen, die irgendwo, sei es Titelleiste oder Dtaiename, das Wort "Taskmanager" oder so enthalten.