Laden...

Programme aus einer Textfile lesen, die nicht auf dem Rechner ausgeführt werden sollen.

Erstellt von Jonas40 vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.810 Views
J
Jonas40 Themenstarter:in
15 Beiträge seit 2018
vor 5 Jahren
Programme aus einer Textfile lesen, die nicht auf dem Rechner ausgeführt werden sollen.

Hey Leute,
Ich habe versucht ein Sicherheits Programm mit C# zu programmieren-. Ich wollte zuerst, dass wenn, das programm im Hintergrund läuft nur programme ausführt die das Programm kennt. Aber ich hab es irgendwie nicht so richtig geschaft. Bitte um Hilfe

T
2.219 Beiträge seit 2008
vor 5 Jahren

Mal davon abgesehen, dass ich von Self-Made Sicherheitslösungen nichts halte, was hast du bisher gemacht?
Wie sollen wir ohne Code wissen wo das Problem lieg?

Du musst uns schon mehr Infos geben, was/wo das Problem liegt und ohne Code kannst du auch keine Lsung erwarten.
Bitte nur die fehlerhafte Stelle + Fehlermeldung, damit man dir helfen kann.

Nachtrag:
Was du da übrigens vorhast, löst UAC unter Windows bereits.
Wobei Windows auch schon einige Programme mit entsprechenden Dialog nur durch absichtliches wirken des Users auch ausführt.
Wenn ein Programm für Windows nicht vertrauenswürdig ist, dann bekommst du auch eine entsprechende Meldung.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

J
Jonas40 Themenstarter:in
15 Beiträge seit 2018
vor 5 Jahren

Hier:

        private void button1_Click(object sender, EventArgs e)
        {
            string pro = System.IO.File.ReadAllText("C:\\Sicherheit\\Programm\\programm.txt");
            String Programm = textBox1.Text;
            if (pro == Programm)
            {
                //Fehler
            }
            else
            {
                   //Programm wird ausgeführt
            }
        }

Ich möchte halt das in dem Text Document nicht alle alle Programme gespeichert werden die nicht ausgeführt werden dürfen, sondern das erstmal alle Programme die auf den PC gibt erstmal in das Textdocument packen. Danach kann der Benutzer entscheiden ob das Programm von der Liste (Textdocument) entfernt wird damit es ausgefürht werden kann.

T
2.219 Beiträge seit 2008
vor 5 Jahren

Kann auch nicht funktionieren.
In der Textdatei stehen vermutlich die Pfade zu all deinen Programmen.
In der Textbox gibt es dann aber nur eine Zeile und die vergleichst du dann gegen die Liste.

Was du machen müsstest,wäre per File.ReadAllLines dir ein String[] zu holen was die Pfade aus der Datei enhält.
Dann musst du nur schauen ob dein Program, hoffentlich auch mit ganzen Pfad, in dem String[] steht.

Aber wie gesagt, willst du hier ein Problem lösen, was an mit UAC und entsprechenden Rechten sowie einem AD lösen kann.
Solange diese lösung nur für dich privat ist, kannst du die gerne fahren.
Aber in einem Unternehmen wäre es fahrlässig solche Bastellösungen laufen zu lassen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

J
Jonas40 Themenstarter:in
15 Beiträge seit 2018
vor 5 Jahren

Okay,
Und wie finde ich den eigendlich alle Programm Pfade heraus?

78 Beiträge seit 2016
vor 5 Jahren

Mit "Sicherheits-Programm" hat das nicht viel zu tun, wenn man versucht UAC nachzubauen.

Außerdem gibt es kommerzielle Lösungen um den User mit sowas zu "nerven" (z.B. The Palo Alto Networks Traps https://www.paloaltonetworks.com/documentation/traps).

Ich hoffe, dass dies nur ein Experiment von dir ist um C#/.net zu lernen.

Daher hier zwei Anhaltspunkte:


        string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
            using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
            {
                foreach (string subkey_name in key.GetSubKeyNames())
                {
                    using (RegistryKey subkey = key.OpenSubKey(subkey_name))
                    {
                        Console.WriteLine(subkey.GetValue("InstallSource"));
                        Console.WriteLine(subkey.GetValue("DisplayName"));
                    }
                }
            }

Siehe dazu:
https://stackoverflow.com/questions/908850/get-installed-applications-in-a-system

Oder aber mit:

How to detect lunch or closing process?

https://social.msdn.microsoft.com/Forums/vstudio/en-US/46f52ad5-2f97-4ad8-b95c-9e06705428bd/how-to-detect-lunch-or-closing-process-?forum=netfxbcl

Aber ich rate dir DRINGEND davon ab, sowas tatsächlich als ein Sicherheits-Programm in betracht zu ziehen.

http://dotnet-paderborn.azurewebsites.net/

T
2.219 Beiträge seit 2008
vor 5 Jahren

@Jonas40
In dem du dir über die Process Klasse die laufenden Anwendungen holst?
Wenn dort ein Programm gestartet wird, und das kannst du eben mit deiner Lösung nicht verhinden, dann musst du den Pozess absägen.

Oder wie genau stellst du dir deine Lösung vor?
Wenn jemand einen Prozess starten willst, kannst du dies ja nicht einfach verhindern.
Diese Abläufe sind Teil des Systems und da kannst du dich mit C# nicht als Sicherheitsinstanz ohne weiteres einklinken.

Dazu müsste dein Programm auch über Systemrechte verfügen, damit es auch alle Prozesse abwürgen kann.
Ansonsten kannst du nur deine Prozesse killen.
Dies hätte aber zur Folge, dass dein Prozess dann selbst zum Ziel für Angreifer wird.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

J
Jonas40 Themenstarter:in
15 Beiträge seit 2018
vor 5 Jahren

Okay,
erstaml danke an alle die mir geantwortet haben 😄. Ich habe nur noch eine frage nämlich wie packt man die Wörter aus der Textdatei(eine Zeile pro wort) in ein String[];

16.806 Beiträge seit 2008
vor 5 Jahren

Jonas40, Grundlagen schön und gut - aber das Forum ist nicht der Ersatz für Eigeninitiative.
Google-Suche nach c# file read lines to string array

J
Jonas40 Themenstarter:in
15 Beiträge seit 2018
vor 5 Jahren

Aufjeden fall ist hier die Lösung:

              if (File.Exists("C:\\Security\\security.dll")) {

                    IEnumerable<string> check = File.ReadAllLines("C:\\Security\\security.dll");

                foreach (string check__ in check)
                {
                    Process[] pp = Process.GetProcessesByName(check__);
                    foreach (Process p in pp)
                    {
                        p.Kill();
                        MessageBox.Show("Dieses Programm ist gefährlich", "Security Assistent", MessageBoxButtons.OK, MessageBoxIcon.Warning);

                    }
                }
                }
78 Beiträge seit 2016
vor 5 Jahren

Die liest eine DLL mit File.ReadAllLines ein?
Das ist Unsinn was da steht.

https://docs.microsoft.com/de-de/dotnet/api/system.io.file.readalllines?view=netframework-4.7.2

http://dotnet-paderborn.azurewebsites.net/

463 Beiträge seit 2009
vor 5 Jahren

Ich verstehe denn Sinn noch nicht ganz. In der textdatei stehen die Programme, welche gesperrt werden sollen, richtig?
1.Wie kommen neue Programme dort rein? 1.Wie willst du verhindern, dass User die Datei einfach ändern? 1.Was passiert, wenn die Datei überhaupt nicht vorhanden ist? 1.Was passiert, wenn dein Programm selbst in der Liste steht?

463 Beiträge seit 2009
vor 5 Jahren

Die liest eine DLL mit File.ReadAllLines ein?

Ich glaube, er will mit dem Namen nur vortäuschen, dass es eine DLL sei - in Wirklichkeit ist es eine Textdatei... Über den Sinn dazu möchte ich nichts sagen.

T
2.219 Beiträge seit 2008
vor 5 Jahren

@Stefan.Haegele
Würde ich auch mal vermuten.
Halt das übliche Security through Obscurity aus.
Damit sicherst du nichts ab, nimm .txt als Endung und fertig.

Ansonsten wären die Fragen von Stefan-Haegel auch nicht interessant zu wissen.
Aber ich halte, wie oben schon erwähnt, das gesamte Konzept für keine Lösung.
Selbst als Lernprojekt wagst du zu viel ohne Grundlagen zu kennen oder dich scheinbar darein zu arbeiten.

Auch hatte ich dir deine aktuelle Lösung oben schon vorgeschlagen, wenn auch nicht mit diesem Konstrukt, was du aber scheinbar ignoriert hattest.
Ich habe leider das Gefühl, dass unsere Ratschläge hier ins leere laufen und du deinen Kopf ohne Nachforschungen durchsetzen willst.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.