AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte TaskWatch 1.0
Thema durchsuchen
Ansicht
Themen-Optionen

TaskWatch 1.0

Ein Thema von Harry M. · begonnen am 25. Mai 2005 · letzter Beitrag vom 26. Mai 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Harry M.
Harry M.
Registriert seit: 29. Okt 2004
TaskWatch 1.0

TaskWatch überwacht alle laufenden Prozesse Ihres PC's. Wird ein Programm gestartet,
bekommt der Anwender ein Konfigaratiosmenü in dem er wählen kann, ob dieser Prozeß
nur in dieser Sitzung, immer, oder nie ausführt werden darf.

Screenshots:
http://www.8ung.at/projetilware/TaskWatch%20(1).jpg
http://www.8ung.at/projetilware/TaskWatch%20(2).jpg

Download:
http://www.8ung.at/projetilware/TaskWatch.rar (426kb)
Gruß Harry
www.H-Soft.info
 
perle

 
Delphi 7 Enterprise
 
#2
  Alt 26. Mai 2005, 07:10
Hi an sich keine schlechte Idee.

Aber wenn ich einen Verbesserungsvorschlag machen darf, dann benutz bitte keinen Timer um abzufragen, ob ein neues Fenster geöffnet wurde. Das lässt sich z.B. mit Hooks viel besser lösen.
  Mit Zitat antworten Zitat
static_cast
 
#3
  Alt 26. Mai 2005, 10:33
Hallo,

das Programm ist ja eine ganz interessante Sache, nur wie wird überwacht?

- Fängt das Tool den start eines Programms ab oder
- Wird das Programm gestartet und dein Tool merkt es dann ers wenn der Prozess läuft?

Beim dem zweiten genannten Fall wäre das Tool eigentlich total unnütz, wenn ich das so sagen darf, denn das (in diesem fall gehe ich von einem Bösen Programm aus) hätte ja schon längst schaden anrichten können oder dinge im System verändern.

Aber sonst wäre es wohl eine gute einsatzmöglichkeit bei Eltern auf ihrem PC um zu verhindern das Kinder irgendwelche Programme starten können.

Gruß,
Daniel
Daniel M.
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.
 
#4
  Alt 26. Mai 2005, 11:01
Danke für Lob und Kritik.

Zitat von perle:
Das lässt sich z.B. mit Hooks viel besser lösen.
Dann wirds aber auch koplizierter.

Zitat von static_cast:
...das Programm ist ja eine ganz interessante Sache, nur wie wird überwacht?...
- Fängt das Tool den start eines Programms ab oder
- Wird das Programm gestartet und dein Tool merkt es dann ers wenn der Prozess läuft?

Beim dem zweiten genannten Fall wäre das Tool eigentlich total unnütz, wenn ich das so sagen darf, denn das (in diesem fall gehe ich von einem Bösen Programm aus) hätte ja schon längst schaden anrichten können oder dinge im System verändern.
Also ein Timer prüft, ob alle Processe die laufen "zulässig" sind. Ich würde auch schon gerne vor dem Starten den Processes ansetzten. Aber soweit reicht es leider noch nicht. Sicher kann man bis die Abfrage geklärt ist, oder der Process automatisch beendet wird Schaden anrichten. Aber der Schutz liegt vielmehr darin "vor ständig laufenden" Programmen. Nicht für jene, die nur für einen Bruchteil einer Sek. aktiv sind.
Harry
  Mit Zitat antworten Zitat
perle

 
Delphi 7 Enterprise
 
#5
  Alt 26. Mai 2005, 12:36
Zitat:
Ich würde auch schon gerne vor dem Starten den Processes ansetzten
Hooks ^^ Ich glaube es sind CBT Hooks mit denen das geht.

Ansonsten durch Hooken bestimmter API's wie z.b. CreateProcess etc
  Mit Zitat antworten Zitat
Olli
 
#6
  Alt 26. Mai 2005, 12:39
Zitat von Harry M.:
Zitat von perle:
Das lässt sich z.B. mit Hooks viel besser lösen.
Dann wirds aber auch koplizierter.
...aber besser. Es ist doch besser dich ruft derjenige an, der etwas zu melden hat - als Metapher - als daß du ganz Deutschland abtelefonierst bis du denjenigen dran hast, der was zu melden hat. Oder?

Zitat von Harry M.:
Also ein Timer prüft, ob alle Processe die laufen "zulässig" sind. Ich würde auch schon gerne vor dem Starten den Processes ansetzten. Aber soweit reicht es leider noch nicht.
Dafür würden deine Möglichkeiten im Usermode auch nicht ausreichen!

Was du bräuchtest wären (alle im DDK dokumentiert):
- PsSetCreateProcessNotifyRoutine (NT3/NT4/W2K/WXP/2K3)
- PsSetCreateThreadNotifyRoutine (NT4/W2K/WXP/2K3)
- PsSetLoadImageNotifyRoutine (W2K/WXP/2K3)
... sowie mindestens eine undokumentierte API, die ich jetzt nicht im Kopf habe. Ohne diese undokumentierte API bekommst du zwar Benachrichtigungen aber kannst den Prozess nicht vor dessen Ausführung killen. Die effektivste Methode, nämlich PsSetLoadImageNotifyRoutine() kannst du erst ab Windows 2000 einsetzen. Ansonsten bliebe dir noch eine letzte Methode, die zB von Bei Google suchenTrustNoExe eingesetzt wird - SSDT-Hooking bestimmter APIs um schon beim Laden des Images auch auf NT4-Systemen anzusetzen! Um es vorwegzunehmen: nein, es reicht nicht aus NtCreateProcess*() zu hooken, da man Prozesse auch anders erstellen kann. Einzig ein Image laden muß man immer um einen Prozess auszuführen (Forking geht natürlich auch anders ...).
Fazit: nochmal neu Programmieren lernen (nämlich KM-Treiber - die sind was komplett anderes als Usermode-Programme oder auch Services)!

Zitat von Harry M.:
Sicher kann man bis die Abfrage geklärt ist, oder der Process automatisch beendet wird Schaden anrichten. Aber der Schutz liegt vielmehr darin "vor ständig laufenden" Programmen. Nicht für jene, die nur für einen Bruchteil einer Sek. aktiv sind.
... im Bruchteil einer Sekunde kann Malware schon ziemlich viel Schaden anrichten.

@perle: vergiß es ... ohne KM-Treiber kommst du da nicht sinnvoll und "ganzheitlich" weiter.
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.
 
#7
  Alt 26. Mai 2005, 12:45
Oh danke für die vielen Wegweiser. Mal sehen was ich damit umsetzten kann.
Harry
  Mit Zitat antworten Zitat
perle

 
Delphi 7 Enterprise
 
#8
  Alt 26. Mai 2005, 12:49
Zitat:
nein, es reicht nicht aus NtCreateProcess*() zu hooken, da man Prozesse auch anders erstellen kann
darum steht da ja auch CreateProcess etc.

Zitat:
@perle: vergiß es ... ohne KM-Treiber kommst du da nicht sinnvoll und "ganzheitlich" Mr. Green weiter.
schon, aber besser als seine Methode ist es allemal.
Kommt auch immer auf die Skills an die jeder Mitbringt.
  Mit Zitat antworten Zitat
Olli
 
#9
  Alt 26. Mai 2005, 12:53
Zitat von perle:
darum steht da ja auch CreateProcess etc.
Statt CreateProcessA/W ist dann aber NtCreateProcess und NtCreateProcessEx (ich denke mal *Ex reicht) konsequenter, weil die Win32-APIs ja auf letzteren aufsetzen

Zitat von perle:
schon, aber besser als seine Methode ist es allemal.
Kommt auch immer auf die Skills an die jeder Mitbringt.
Das stimmt wohl.

Nachtrag: NtCreateProcessEx() existiert erst ab Windows XP!!!
Und ich habe gerade nachgeschaut (in NTDLL), die benutzen verschiedene Service-Indices, also muß man auch beide hooken. Wie's auf Kernelebene aussieht, habe ich noch nicht nachgeschaut.
  Mit Zitat antworten Zitat
perle

 
Delphi 7 Enterprise
 
#10
  Alt 26. Mai 2005, 13:00
Zitat:
Statt CreateProcessA/W ist dann aber NtCreateProcess und NtCreateProcessEx (ich denke mal *Ex reicht) konsequenter, weil die Win32-APIs ja auf letzteren aufsetzen Wink
sofern es ein NT-System ist.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz