Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Start eines Programms verhindern (https://www.delphipraxis.net/30808-start-eines-programms-verhindern.html)

Chris21 29. Sep 2004 16:06


Start eines Programms verhindern
 
Hallo,

wie kann ich fest stellen ob eine bestimmtes Programm gestart wird und diesen Start dann gegebenenfalls verhindern????

Danke schon mal im voraus

Duffy 29. Sep 2004 16:09

Re: Start eines Programms verhindern
 
Hallo Chris21,
wozu braucht man sowas? Wenn einer ein Programm startet, möchte er auch bestimmt damit arbeiten.

bye
Claus

Dax 29. Sep 2004 16:11

Re: Start eines Programms verhindern
 
Könnte es nicht eventuell sein, dass er sowas wie einen "Spyware-Protektor" schreiben will, der diese Programme nicht mehr starten lässt?

BtW: Soweit ich weiss, geht das mit der Registry, weiss aber nicht mehr genau wie.

himitsu 29. Sep 2004 16:17

Re: Start eines Programms verhindern
 
Lass das doch einach deine Firewall, oder ähnliches machen.

Meine FW braucht das gewünschte Programm nichtmal beenden, da die gleich verhindert, dass das Programm überhaupt gestartet wird ^^

Luckie 29. Sep 2004 16:32

Re: Start eines Programms verhindern
 
Was hast du für einen Firewall? Und wenn es der kann würde ich mir überlegen, was das Feature in einem Firewall zu suichen hat. Der soll doch nur die Zugriffe von aund aus dem Internet überwachen. :gruebel:

moritz 29. Sep 2004 17:04

Re: Start eines Programms verhindern
 
Nein, ein Firewall hat durchaus auch die Funktion zu verhindern dass ein Programm ein anderes, evtl. schädliches startet bzw. dass ein Programm ein anderes ersetzt.

Luckie 29. Sep 2004 17:05

Re: Start eines Programms verhindern
 
Die Funktion kann er ja haben, aber in meinen Augen gehört es nicht zu seinen Aufgaben und sollte diese Funktion desegen auch nicht haben. Es heißt ja Firewall und nicht "System-Kontrollprogramm-für alles". :roll: Aber was soll's es wird offtipoc.

Duffy 29. Sep 2004 17:09

Re: Start eines Programms verhindern
 
Hallo alle zusammen,
ich denke ihr redet aneinander vorbei. Ein Personal oder auch Desktop Firewall kann das durchaus wie beschrieben machen. Aber wie gesagt, läuft sie auf dem PC der geschützt werden soll. Sie schützt kein ganzes Netz.

bye
Claus

FAlter 29. Sep 2004 17:11

Re: Start eines Programms verhindern
 
Code:
HKEY_CLASSES_ROOT\exefile\shell\open\command
Standardwert auf
Code:
"PFAD-ZU-DEINER-.EXE" "%1" %*
setzen und in deinem Programm dan prüfen. Klappt nicht immer, aber bei ShellExecute sollte es auch funktionieren.

Luckie 29. Sep 2004 17:18

Re: Start eines Programms verhindern
 
Zitat:

Zitat von Duffy
Ein Personal oder auch Desktop Firewall kann das durchaus wie beschrieben machen.

Ich bestreite ja gar nicht, das er es nicht können soll. Ich sage nur, dass es, in meinen Augen, nicht zu seinem Augfgabenbereich gehört.

Duffy 29. Sep 2004 17:22

Re: Start eines Programms verhindern
 
Hallo Luckie,
Zitat:

Zitat von Luckie
Ich bestreite ja gar nicht, das er es nicht können soll. Ich sage nur, dass es, in meinen Augen, nicht zu seinem Augfgabenbereich gehört.

da gebe ich Dir vollkommen recht.

bye
Claus

Chris21 29. Sep 2004 18:08

Re: Start eines Programms verhindern
 
Danke FAlter,
werd das gleich mal ausprobieren.

Ich denke auch das jemand ein Programm startet um es zu nutzen, aber das ist nicht immer erwünscht (z.B. im Unterricht).
Das Programm soll im Hintergrund laufen und während einer bestimmten Zeitspanne verhindern das Spiele gestart werden (Das Programm soll so das Spielen während Unterrichtsstunden verhindern)

himitsu 29. Sep 2004 19:12

Re: Start eines Programms verhindern
 
Dann kommst du aber besser, wenn du in gewissen Abständen die Titel-/Klassennamen der geladenen Programme besorgst und die unerwünschten beendest.
Der Taskmanager sollte auch nicht aufgerufen werden können, damit man dein Programm nicht so einfach beenden kann.

Da es ja wohl nicht lange dauern wird, bis FAlter's Variante geknackt ist -.-

Luckie 29. Sep 2004 19:20

Re: Start eines Programms verhindern
 
Schreib einen Dienst, der die Fenster, besser Prozesse, überwacht, die nicht gestartet werden dürfen. Findet er einen verbotenen Prozess, dann wird der eben sofort beendet. Die Liste der verbotenen Prozesse speicherst du in einer einfachen Textdatei im Windows Verzeichnis. Dienste konfigurieren und ins Windows Verzeichnis schreiben darf nur der Admin. Nix mit Taskmanager sperren und solche Scherze.

Chris21 29. Sep 2004 19:39

Re: Start eines Programms verhindern
 
Das hört sich sehr gut an Luckie, leider habe ich aber keine Ahnung wie ich das realisieren soll. :wall:

Hättevielleicht irgend jemand ein Beispiel für so etwas?????

jfheins 29. Sep 2004 19:41

Re: Start eines Programms verhindern
 
Erstmal eine Grundlegende Frage:
Arbeiten die Rechner unter Windows NT ff. oder unter Win 9x ???

Chris21 29. Sep 2004 19:47

Re: Start eines Programms verhindern
 
Hallo jfheins

die Rechner laufen mit Windows2000 mit ServicePack4 drauf.

Luckie 29. Sep 2004 19:48

Re: Start eines Programms verhindern
 
Zitat:

Zitat von Chris21
Das hört sich sehr gut an Luckie, leider habe ich aber keine Ahnung wie ich das realisieren soll. :wall:

Hättevielleicht irgend jemand ein Beispiel für so etwas?????

Ein Beispiel? Du bist gut. Das Beispiel wäre das Programm. Damm mach dich über Dienste schlau und arbeite dich da ein.

Chris21 30. Sep 2004 16:03

Re: Start eines Programms verhindern
 
Hi Luckie

so war das nicht gemeint. ICh dachte da eigentlich mehr an ein Tutorial oder ähnliches.
Also falls mir jemand helfen könnten, wäre ich sehr dankbar.

Luckie 30. Sep 2004 16:05

Re: Start eines Programms verhindern
 
Also ein Service Tutorial findest du hier: www.assarbad.org

OregonGhost 30. Sep 2004 17:13

Re: Start eines Programms verhindern
 
Kann man als Admin unter einem NT5-System nicht einfach nur bestimme Programme erlauben, oder bestimme Programme verbieten?
Ich weiß nicht, ob das unter W2K geht, aber ich hab' das vor kurzem für ein paar XP-Rechner gemacht, irgendwo in den lokalen Sicherheitsrichtlinien. Da kannst du erstmal einstellen, dass alle Anwendungen verboten sind, und dann erlaubst du wieder die, die eben doch laufen sollen. Und das aktivierst du dann alles für User, aber nicht für Administratoren und fertig. Da brauchst du doch kein Extraprogramm für und sicherer ist es so auch (weil die Programme wirklich nicht starten und es kann auch keiner dein Programm abschießen, weil's gar nicht läuft (c; )

novelly 30. Sep 2004 18:45

Re: Start eines Programms verhindern
 
hi,

ich würde mal so laienhaft behaupten das eigentlich nur ein hook in frage kommt, sowas was shellexecute oder createprocess zeug abfängt....

wie gesagt nur mal ins blaue gedacht!

schönen abend noch ! :cheers:

c113plpbr 30. Sep 2004 21:43

Re: Start eines Programms verhindern
 
@novelly: Genau, das ist die beste und warscheinlich 'sicherste' methode.
Dazu gibts auch nen beispiel, und zwar wird das gleich mit der Hook-Library mitgeliefert: http://www.madshi.net/
Lad dir dort die MadCollection runter, installier sie, und schau in den Ordner "... \Madshi\madCodeHook\Demos\system wide\VariousDlls", wo du eine Datei namens "HookProcessCreation.dpr" finden wirst ... die halt nurnoch compilieren, injezieren, und "Gott" spielen :mrgreen:
Der Quellcode ist eigentlich ziemlich logisch, sonst einfach hier fragen, oder mich fragen :mrgreen:

ich hoffe, dass dies dir weiterhilft

ciao, Philipp

Luckie 1. Okt 2004 13:06

Re: Start eines Programms verhindern
 
Zitat:

Zitat von c113plpbr
@novelly: Genau, das ist die beste und warscheinlich 'sicherste' methode.

Das ginge auch, ist aber bestimmt ufwendiger zu programmieren und ob es besser ist, ist die Frage. Jeder Hook belastet das System. Und wenn man das nicht richtig programmiert, dann kann man ganmz schnell sein System lahmlegen.

c113plpbr 1. Okt 2004 16:13

Re: Start eines Programms verhindern
 
Zitat:

Zitat von Luckie
Das ginge auch, ist aber bestimmt ufwendiger zu programmieren und ob es besser ist, ist die Frage. Jeder Hook belastet das System. Und wenn man das nicht richtig programmiert, dann kann man ganmz schnell sein System lahmlegen.

Ein Hook ist auch nur eine zusätzlich geladene DLL, die von eben allen Prozessen geladen wird, das tun die meisten Programme sowieso meist "en masse" ...
Klar, wenn man sowas nicht richtig programmiert, kriegt man ohne weiteres mal auch unter WinXP eine Bluescreen, aber soooviel kann da nicht schiefgehen, und wenn was schiefgeht, dann fixt man das halt, bis es funktioniert, bevor man das veröffentlicht, wenn überhaupt.

Und wo ihr grad von Diensten sprecht: Diese belasten das System auch, wenn nicht noch mehr (ständige abfragen auf alle existierenden prozesse oder fenster sind nicht ganz ohne ...). Außerdem kann so das Programm schon in der "wurzel" gekillt werden, denn um createprocess kommt man nicht so schnell rum ... (außer mit nem hook :mrgreen: )

FAlters Methode ist auch nicht die beste, da es ja auch noch neben shellexecute andere möglichkeiten gibt einen prozess zu erstellen ... (nagut, dazu muss natürlich dann erstmal nen programm laufen ... ^^)

ciao, Philipp

HW764 1. Okt 2004 16:35

Re: Start eines Programms verhindern
 
Ich stimme euch zu!

Gruss HW764

Luckie 1. Okt 2004 17:21

Re: Start eines Programms verhindern
 
Zitat:

Zitat von c113plpbr
Ein Hook ist auch nur eine zusätzlich geladene DLL, die von eben allen Prozessen geladen wird, das tun die meisten Programme sowieso meist "en masse" ...

Nur dass bei eienm Hook alle Systemnachrichten noch durch den Hook durchgeschleift werden und das bremmst das System aus.

Zitat:

Klar, wenn man sowas nicht richtig programmiert, kriegt man ohne weiteres mal auch unter WinXP eine Bluescreen, aber soooviel kann da nicht schiefgehen, und wenn was schiefgeht, dann fixt man das halt, bis es funktioniert, bevor man das veröffentlicht, wenn überhaupt.
Nein. Eine Bluescreen wird man nicht bekommen, aber ds System könnte sich ungewöhnlich verhalten.

Zitat:

Und wo ihr grad von Diensten sprecht: Diese belasten das System auch, wenn nicht noch mehr (ständige abfragen auf alle existierenden prozesse oder fenster sind nicht ganz ohne ...).
Nö. Ein Dienst ist auch nur eine weiterer geladener Prozess. Und das abfragen der Prozessliste macht man logischerweise in einem Thread mit der Priorität idle.

c113plpbr 1. Okt 2004 17:30

Re: Start eines Programms verhindern
 
@Luckie: Nein, du verstehst mich falsch. Es gibt einen großen unterschied zwischen Windows-Hooks und API-Hooks ... und ich sprach von einem API-Hook, der die CreateProcessA Funktion abfängt. Das funktioniert nicht so wie ein windowshook, und es kommen da auch keine messages an, es wird einfach STATT der ursprünglichen 'CreateProcessA'-funktion aus der 'Kernel32.dll' MEINE Funktion aufgerufen. In meiner Funktion kann ich dann entscheiden, ob ich die OriginalFunktion (also die aus der 'Kernel32.dll') aufrufen soll, oder es einfach lasse ...

ciao, Philipp


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz