[EDIT: Für alle, denen das zu viel Text ist: der relevantere Teil (meine konkreten Fragen) befindet sich weiter unten und ist Fett gedruckt.]
Da ich sie selbst nicht umsetzen kann, die Idee aber prinzipiell für brauchbar halte und glaube, dass dies auch für Andere interessant sein könnte, möchte ich euch hier eine Programmidee vorstellen:
Ich stelle mir ein Programm vor, das nach Programmstart einen Dateipfad zu einer beliebigen .exe abfragt (den User fragt) und diese Anwendung dann "begleitet" ausführt. Sinn des Programmes soll es sein, dass wenn die gewählte .exe Datei Dateien erstellen möchte, eine andere Datei ausführen möchte (.exe, .bat, .vbs oder irgendetwas anderes), einen Service erstellen möchte, ins Internet gehen oder Änderungen in der Registry vornehmen möchte, dass das Programm dann diese Aktionen unterbindet und den User fragt "darf er das?" und erst wenn der User dies mit "jop, geht in Ordnung" bestätigt, soll die Datei die gewählte Aktion durchführen dürfen.
Dabei soll dem User aber auch genau angezeigt werden, welche Dateien, in welchem Verzeichnis und wohin extrahiert werden, was gelöscht wird und zu welchen Seiten/Servern die .exe kommuniziert (bevor die .exe das macht und bevor der User das bestätigt - damit er weiß, was er da bestätigt)
Sinnvoll wäre auch, dass dieses Programm dauerhaft im Hintergrund läuft und bei dem Start einer .exe erst fragt, ob die .exe überhaupt gestartet werden soll und dann bei (fast) jeder Kleinigkeit (siehe oben) erneut eine Bestätigung einholt.
Damit das Nutzen des favorisierten Browsers nicht zur Tortur wird, sollte die Funktion bestehen, eine bestimmte .exe als "vertrauenswürdig" zu markieren, die dann folglich nicht mehr geprüft wird.
Warum das ganze?
Heruntergeladene Dateien beinhalten oft unangenehme Überraschungen (z.B. noch viel mehr Programme, die man nie haben wollte oder wunderschöne Werbeanzeigen, die alle 2 Minuten erscheinen etc.), die Antivirenscanner oft nicht sehen. Generell bin ich enttäuscht von Antivirenscannern, weshalb ich diese Lösung als (zumindest für etwas fortgeschrittenere User) sinnvoll ansehe.
Da das Projekt recht umfangreich ist, wäre es zu viel verlangt, wenn ich fragen würde, ob das jemand für mich programmiert, aber falls ihr Ideen habt, wie man das umsetzen kann (oder allgemeine Kritik an der Idee), wäre ich euch sehr verbunden.
Solltet ihr die Idee für unnütz oder blöd halten, klärt mich bitte auf, warum.
Der Vorteil einer solchen Software wäre, dass sie einem erfahrenen Nutzer immer verraten kann, ob man es mit einem Virus zu tun hat oder nicht bzw. wie man das wieder rückgängig machen kann, was die Anwendung "verbrochen" hat.
Sollte man der Anwendung die Aktionen gewähren (oder nicht), kann man auch alles, was die App macht / vorhat, zu tun, in eine Logdatei schreiben, damit man später genaueres über den Vorgang erfahren kann.
Sollte ich das Projekt irgendwann fertigstellen, werde ich es hier als open Source einstellen
Meine konkreten Fragen dazu könnt ihr gerne auch teilweise beantworten:
1. wie stelle ich fest, dass eine Anwendung vor hat, Dateien zu erstellen, ändern, löschen, kopieren, lesen?
1.1 wie kann ich das (temporär) verhindern und erst nach Bestätigung freigeben?
1.2 (wie) kann ich wissen, welche Dateinamen die betreffenden Daten haben?
2. wie stelle ich fest, dass eine Anwendung ins Internet möchte?
2.1 wie kann ich das (temporär) verhindern und erst nach Bestätigung freigeben?
2.2 (wie) kann ich wissen, welche Seiten/Server aufgerufen werden sollen?
3. wie stelle ich fest, dass eine Anwendung irgendeine andere Datei aufrufen möchte?
3.1 wie kann ich das (temporär) verhindern und erst nach Bestätigung freigeben?
3.2 (wie) kann ich wissen, welche Dateien aufgerufen werden sollen?
4. wie stelle ich fest, dass eine Anwendung Dienste erstellen möchte?
4.1 wie kann ich das (temporär) verhindern und erst nach Bestätigung freigeben?
4.2 (wie) kann ich abfragen, welchen Pfad die Datei des zu erstellenden Dienstes hat?
5. Wie kann ich prüfen, ob eine .exe versucht, ausgeführt zu werden?
(wenn das Programm dauerhaft im Hintergrund läuft oder geht das auch per Event, das bei .exe Start ausgeführt wird?)
Eine ergänzende Idee dazu wäre auch, sowas wie den Root für Windows zu basteln, indem vor jeder kritischen Änderung (etwas in den Autostart schieben, Dateizugriff in %appdata% oder %windir% oder C:\Programme, Service erstellen, etc.) eine (Passwort-)Abfrage stattfindet.
Letztere Idee kann optimiert werden, wenn der Nutzer wählen kann, bei welchen Ereignissen er genervt werden will.
Vielen Dank für die Mühe, dass du diesen langen Text gelesen hast