# Windows-Prozesse beobachten



## JPKI (25. Jan 2007)

Tag Leute, ich hätt da ne ganz Windows-spezifische Frage.

Gibt es irgendeine Möglichkeit, um die Prozessliste von Windows 2000, bzw. Windows XP
über eine Java-eigene Klasse oder Methode zu beobachten??

Ich will folgendes machen:

Ich möchte ein Programm schreiben, dass man nicht über den Taskmanager bzw. über den DOS-Befehl
"taskkill" beenden kann. Also will ich die Prozessliste überwachen und die Prozesse "taskmgr.exe" bzw.
"taskkill.exe" ( :meld: ) beenden, wenn sie in der Liste auftauchen.

Bisher hab ich's auf diese Art und Weise probiert:


```
public void run() {

  while (true) {

   try { Thread.sleep(500); } catch (InterruptedException ex) {}
   try { Runtime.getRuntime().exec("cmd /c taskkill /IMG taskmgr.exe");
           Runtime.getRuntime().exec("cmd /c taskkill /IMG taskkill.exe"); } catch (Exception ex) {}
 }
}
```

Ein Thread schickt also jede halbe Sekunde den "Beenden"-Befehl an Windows, egal ob der Prozess aktiv ist
oder nicht.

Ich würd's aber gern so haben wie oben beschrieben.
Wenn mir jemand helfen könnte, wär ich froh.

Danke schonmal im vorraus.

JPKI


----------



## Gast (26. Jan 2007)

google ma nach rootkit, dann kannste deinen prozess so verstecken, dass der gar nicht erst im taskmgr auftaucht


----------



## The_S (26. Jan 2007)

lol, der vorschlag ist jetzt aber nicht wirklich ernst gemeint!? :shock:


----------



## Guest (26. Jan 2007)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> lol, der vorschlag ist jetzt aber nicht wirklich ernst gemeint!? :shock:



naja besser als den taskmgr immer anzuschiessen...


----------



## The_S (26. Jan 2007)

Das man damit gleich tief ins System eingreift und nen schönes Hintertürchen aufmacht, stört dich nicht oder?


----------



## moormaster (26. Jan 2007)

JPKI hat gesagt.:
			
		

> Ich möchte ein Programm schreiben, dass man nicht über den Taskmanager bzw. über den DOS-Befehl
> "taskkill" beenden kann. Also will ich die Prozessliste überwachen und die Prozesse "taskmgr.exe" bzw.
> "taskkill.exe" ( :meld: ) beenden, wenn sie in der Liste auftauchen.



Und wenn ich taskmgr.exe einfach umbenenne und dann ausführer? Oder einen ganz anderen Taskmanager nehme? Genauso gibt es auch Nicht-Microsoft-Tools, welche von der Kommandozeile aus Prozesse beenden können. (bzw. wäre es auch nicht zu schwer, sich so eins in C++ zu schreiben und dann über die WinAPI deinen Prozess zu killen  )

Besonders interessant ist die Möglichkeit, Prozesse zu pausieren... dann kann man dein Programm einschläfern und dann in Ruhe mit einem Tool seiner Wahl abschiessen 

Was soll das überhaupt für ein Programm werden, was man nicht mal beenden dürfen soll?


----------



## Gast (26. Jan 2007)

> Oder einen ganz anderen Taskmanager nehme? Genauso gibt es auch Nicht-Microsoft-Tools



richtig...




> Das man damit gleich tief ins System eingreift und nen schönes Hintertürchen aufmacht, stört dich nicht oder?


für mich macht das keinen unterschied, ob man ein programm versteckt, oder ob man den taskmgr immer killt. 

wer kommt eigentlich auf solche ideen?


----------



## The_S (26. Jan 2007)

Musste JPKI fragen


----------



## Azrahel (26. Jan 2007)

Der hat doch da irgend ne Dummheit damit vor... *lechz* mehr wissen wollen


----------



## JPKI (26. Jan 2007)

Was das werden soll??

Naja, ich will für nen Kollegen ein Programm schreiben, dass den PC zu einer gewissen Uhrzeit herunterfährt,
und ihn danach nicht mehr hochfahren lässt (genauer: das Programm wird in der Registry unter Run eingetragen, startet daher immer mit, überprüft die Uhrzeit und fährt den PC gegebenenfalls gleich wieder runter  :meld: ).

Besagter Kollege ist nämlich (fast) computersüchtig und hat mich um Hilfe gebeten, weil er für's Abitur lernen muss :###  , und den PC in dieser Zeit nur für's Nötigste benutzen will. Naja, und eben darum soll das Programm nicht zu beenden sein.


----------



## JPKI (26. Jan 2007)

Aber mal zurück zu meinem Problem: Weiss irgendwer Rat (wenn's geht ohne dass ich viel googeln muss) ;-)


----------



## Azrahel (26. Jan 2007)

Klar, klau den Lüfter von seinem Prozessor. dann geht das ding sicher nach ner gewissen Zeit aus...


Ne, mal ohne Quatsch, soviel Disziplin muss er schon haben, sonst wird das mit dem Lernen eh nix weil er sich dann mit was andrem von Lernen abhält. Aber das mit dem Timer ist schon ne gute Idee, nur sollte die dann nicht den Rechner runterfahren, sondern nach ner gewissen Zeit einfach mit ner Auditiven oder Visuellen Mitteilung rumnerven.

Alles andre hat nur den Effekt das er sich wie oben schon genannt die Zeit damit vertreibt ein nicht-Win-Tool zu suchen oder das sonst irgendwie von seinem rechner zu kratzen.


----------



## JPKI (26. Jan 2007)

Das is natürlich auch ne gute Idee... ;-) mit dem Prozessorlüfter...

Ich dachte auch schon dran mit nem Magneten über die Festplatte zu gehen oder ein paar Tröpfchen Wasser ins Netzteil zu tröpfeln (*BRUTZEL*) ;-)...

Trotzdem würd's mich ma interessieren, wie (überhaupt OB) man die Prozessliste überwachen kann.


----------



## Eldar (26. Jan 2007)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Das man damit gleich tief ins System eingreift und nen schönes Hintertürchen aufmacht, stört dich nicht oder?


Wie kommst du darauf??? Ein Rootkit ist nur eine Ansammlung von Werkzeugen. Was er davon benutzt ist seine Sache. Nur weil er einen Prozess versteckt hat er damit keinerlei "Hintertürchen" für irgendwen "aufgemacht".


----------



## KSG9|sebastian (26. Jan 2007)

glaub ab Win2k gibts die WMIC-Konsole
start ausführen wmic

da kommste dann auch an ne liste mit prozessen ran und kannst sie darüber abschiesen

WMIC PROCESS kriegste ne Liste aller Prozesse


WMIC PROCESS WHERE(name="abc.exe") DELETE /NOINTERACTIVE

kannste den prozess killen


----------



## JPKI (26. Jan 2007)

Geiles kleines Programm, das kennich ja noch gar nicht...

Damit klappts, danke, is viel besser als taskkill.exe,
außerdem kann ich Prozessen das neu starten untersagen.


----------



## KSG9|sebastian (26. Jan 2007)

Ja..damit kannste ziemich viel tun^^


----------



## The_S (26. Jan 2007)

Eldar hat gesagt.:
			
		

> Hobbit_Im_Blutrausch hat gesagt.:
> 
> 
> 
> ...



Hintertürchen für Viren die sich mithilfe des Rootkits tarnen


----------



## thE_29 (29. Jan 2007)

http://www.java-forum.org/de/viewtopic.php?t=36236




Nachtrag: wenn ich WMIC PROCESS mache, kriege ich das hier:

FEHLER:
Code = 0x8004100e
Beschreibung = Ung³ltiger Namespace

Einrichtung = WMI

Außerdem dauert das immer mind. 3 Sekunden!


----------



## JPKI (29. Jan 2007)

Das is natürlich super.
Dummerweise kann ich nur Java als Programmiersprache, sonst
hätt ich auch über JNI was drehen können... ???:L  :###   

Aber der Tipp ist gut, funktionieren tut's auch und die 3 Sekunden Wartezeit nehm ich gerne in Kauf. Danke.


----------



## JPKI (29. Jan 2007)

Übrigens: Hab mir natürlich die WMIC-Befehle genauer angesehen, bei mir kam nämlich auch die Fehlermeldung ;-)


----------



## The_S (29. Jan 2007)

kleine Anmerkung, unter Windows XP Home gibts WMIC (sofern ich mich recht erinnere) nicht! Mit vorhergehenden Versionen (Win 2000 könnte noch funktionieren) gibt es das ebenfalls nicht.


----------



## JPKI (29. Jan 2007)

Macht nix, benutze sowieso Windows XP Professional. ;-)


----------



## thE_29 (29. Jan 2007)

Naja @JPKI: du kannst ja meines nehmen, dafür brauchst du ja keine C++ Kenntnisse 

Einfach die java sourcen einbauen (packages müssen gleich bleiben) und die dll runterladen und schon gehts!


----------



## JPKI (29. Jan 2007)

Hab ich schon getan, danke.
Ich werd mich bald auch mal an C++ wagen... (mal ganz nebenbei bemerkt)


----------

