Programm vor unerwünschtem beenden schützen

  • VB.NET

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von KnifeHunter.

    Programm vor unerwünschtem beenden schützen

    Hallo @ all,

    ich habe da mal eine frage...
    wenn ich in den taskmanager gehe, finde ich prozesse 2er arten. zum einen prozesse, die vom user gestartet wurden, und zum anderen prozesse, hinter denen system steht.
    diese systemprozesse lassen sich nicht beenden (auch nicht via taskmgr) wie bekomme ich eine eigene anwendung so gestartet, dass sie par taskmgr nicht mehr abzuschießen geht.

    --> zur info: ich versuche gerade ein pc sicherheitsprogramm zu schreiben. das alles geht auch schon wunderbar, wäre da nicht diese winzige sicherheitslücke, dass man das programm via taskmgr killen und damit vollständig umgehen kann.

    ich hoffe ihr habt eine idee, wie man ein programm gegen unerwünschtes beenden schützen kann.

    grüße KnifeHunter

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „KnifeHunter“ () aus folgendem Grund: überschrift angepasst

    einfach den TaskManager wieder schließen, sobald er auf geht:

    Dim proc As System.Diagnostics.Process
    Dim pList() As Process
    pList = Process.GetProcessesByName("taskmgr")
    For Each proc In pList
    proc.Kill()
    Next

    Gruß Einsteiger
    ich versuche gerade ein pc sicherheitsprogramm zu schreiben.

    Lass es. Das letzte Mal, als jemand das versucht hat, ist nur Mist und Lulz entstanden.
    (Und übrigens ist die Taskmanager-schließen-Methode die schlechteste Methode ever. Wer nutzt dein Programm, wenn er dafür den Taskmanager einbüßen muss? Keiner.)
    derlei sachen habe ich mir auch shcon überlegt, genausogut wäre es möglich den taskmgr in der registry zu deaktivieren. aber ich möchte ja die funktionen des pcs nich einschränken. das sicherheitsproggy soll nur den zugriff auf bestimmte dateien und ordnerstrukturen verhindern. aber solche sachen wie der taskmgr sollten weiterhin funktionieren.
    ich wollte jetzt nicht unbedingt eine neue programmiersprache lernen. das ist zuviel. für ein projekt ist es das nicht wert. die frage ist nur, ob es wirklich unter .NET keine möglichkeit gibt, mit der man verhindern kann, dass man das programm einfach mit dem taskmgr abschießt...

    ich dachte auch schon an verstecken via rootkit - aber wer will dann das programm noch haben, wenn jedes mal der virenscanner losplerrt.
    Vielleicht genügt dir das:
    In den ApplicatonsEvents

    VB.NET-Quellcode

    1. Friend Class MyApplication
    2. Public Shared Sub shutdown() Handles Me.Shutdown
    3. Do
    4. Form1.ShowDialog()
    5. Loop
    6. End Sub
    7. End Class

    Wichtig: Programm, durch taskkill ist nicht tot , aber zB Textboxinhalt is weg

    Edit: Wenn man die Form kill, bei prozess nicht ! ^

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „UFO“ ()

    KnifeHunter schrieb:

    ich wollte eigentlich eine lösung zu meinem problem und keine ratschläge bezüglich der nützlichkeit meiner anwendung.

    Tja, das kann man als Chance oder als Fluch auffassen, dass man in so Foren mehr Antwort bekommt, als man gefragt hat. ;)

    Kannst du vlt. was per Benutzerkontensteuerung deichseln? Ich glaub, wenn du ein Programm oder einen Dienst als Admin startest, kann ein normaler User den auch per TM nicht abknallen.

    Ansonsten würdich auch denken: SicherheitsSoftware ist LowLevel-Programmierung, also grad die Knackpunkte sind glaub nicht in .Net umsetzbar, und das ist gut so.
    Selbst wenn ich davon Ahnung hätte, würde ichs nicht in einem Forum verbreiten, denn ich denk, das KnowHow dafür ist dasselbe, mit dem man auch MalWare schreiben kann, und das würdich nicht unters Volk streuen.
    klappt teilweise - kann mit dem taskmgr immernoch beendet werden.

    ErfinderDesRades schrieb:





    Zitat von »KnifeHunter«



    ich wollte eigentlich eine lösung zu meinem problem und keine ratschläge bezüglich der nützlichkeit meiner anwendung.

    Tja, das kann man als Chance oder als Fluch auffassen, dass man in so Foren mehr Antwort bekommt, als man gefragt hat. ;)

    Kannst du vlt. was per Benutzerkontensteuerung deichseln? Ich glaub, wenn du ein Programm oder einen Dienst als Admin startest, kann ein normaler User den auch per TM nicht abknallen.

    Ansonsten würdich auch denken: SicherheitsSoftware ist LowLevel-Programmierung, also grad die Knackpunkte sind glaub nicht in .Net umsetzbar, und das ist gut so.
    Selbst wenn ich davon Ahnung hätte, würde ichs nicht in einem Forum verbreiten, denn ich denk, das KnowHow dafür ist dasselbe, mit dem man auch MalWare schreiben kann, und das würdich nicht unters Volk streuen.



    da muss ich dir allerdings recht geben...
    vieleicht lass ich das projekt doch besser oder lege es zumindest so lange auf eis, bis ich selbst genügend weiß um das umzusetzen.

    UFO schrieb:

    Vielleicht genügt dir das:
    In den ApplicatonsEvents

    VB.NET-Quellcode

    1. Friend Class MyApplication
    2. Public Shared Sub shutdown() Handles Me.Shutdown
    3. Do
    4. Form1.ShowDialog()
    5. Loop
    6. End Sub
    7. End Class

    Wichtig: Programm, durch taskkill ist nicht tot , aber zB Textboxinhalt is weg

    Edit: Wenn man die Form kill, bei prozess nicht ! ^


    Warum erstellst du nicht in Do-Loop jedes Mal ne neue Variable und packst 7 Milliarden zufällig generierte Bytes da rein?
    Das verdient den Preis "Schlechtestes C&P-Beispiel des Jahres".
    Hi, schau mal hier:
    activevb.de/tipps/vb6tipps/tipp0097.html

    Ausserdem habe ich das in einem thread gefunden:


    Unknown schrieb:

    Unter .NET ist am einfachsten wohl folgendes
    zu realisieren: Das Handle der ListView, in der
    die Prozesse angezeigt werden, ermitteln und
    dann den Eintrag mit dem Namen der Applikation
    entfernen. Ich würde das Programm kurz in
    VB 6 schreiben aber die Empirie meiner
    Beiträge zeigt, dass das eher konterkarierende
    Auswirkungen hat, weshalb ich nur den
    Vorgang skizziere, der kontinuierlich durchgeführt
    werden muss:

    • Mit FindWindowEx das TaskManager-Fenster
      finden.
    • Danach die Child-Windows durchlaufen.
      In jedem Child-Window wieder mit FindWindowEx
      nach einer ListView suchen (hierzu der Funktion
      den Klassennamen des ListView-Steuerelements,
      SysListView32, übergeben)

    • Wenn eine ListView gefunden wird, Prozess-Handle
      über OpenProcess akquirieren, über VirtualAllocEx
      Speicher für eine LVFINDINFO-Struktur sowie den
      Namen der Applikation reservieren und über
      WriteProcessMemory füllen. Anschließend mit
      SendMessage der ListView die LVM_FINDITEM-
      Nachricht
      zusammen mit der gerade erstelleten
      Struktur schicken, den reservierten Speicher
      über VirtualFreeEx wieder freigeben und
      mittels CloseHandle das Prozess-Handle schliessen.
    • Der Rückgabewert der Funktion ist der Index
      des Eintrages, der den Namen der Applikation
      enthält (oder -1, wenn kein Eintrag gefunden
      wurde)
      . Diesen benutzen, um den Eintrag mittels
      SendMessage und der LVM_DELETEITEM-Nachricht
      zu löschen.


    Um das dauernde Suchen nach dem TaskManager-
    Fenster zu vermeiden, kann auch ein WinEvent-
    Hook
    auf das EVENT_SYSTEM_FOREGROUND
    Ereignis gesetzt werden. Dann wird die Anwendung
    alarmiert, wenn sich das Vordergrundfenster ändert.


    Hoffentlich hilft dir das weiter :)
    --- Zurzeit inaktiv ---
    Muss ich nochmal suchen ^^
    ich dachte das interessiert keinen xD
    [...]

    Also ich habs von hier:
    [VB 2008] Programm beim Taskmanager verstecken
    --- Zurzeit inaktiv ---
    WOW

    Also diese Methode wäre wo perfekt.
    das programm würde nichts behindern und ließe sich nur über das programm selbst beenden (nach passworteingabe)

    wenn jemand von euch einen code oder ähnliches hat oder weiß wie man sowas macht, dann sagt mir bitte bescheid. das wäre für mein sicherheitsprogramm absolut ideal.


    EDIT: Da mir durchaus bewusst ist, dass ein Code, mit dem es möglich ist einen prozess vollständig zu verstecken in falschen händen sehr gorßen schaden anrichten kann, würde ich sagen, dass, sofern jemand bereit ist mir einen solchen code zukommen zu lassen, man mir diesen per PM sendet. denn hier im forum finden den eben auch leute, die damit vieleicht keine sicherheitsprogramme schreiben wollen.

    ich poste auch gerne den derzeitigen code meines programmes. sonst heißt es am ende wieder "Der will doch eh nur wieder trojaner oder viren schreiben - so ein skripkiddy"
    und das möchte ich sicher nicht.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „KnifeHunter“ ()

    Lass es als dienst starten, dienste stehen soweit ich weiss nicht unter prozesse(bin mir aber nicht sicher)
    Und du hast direkt ausführung als admin
    Frag mich aber nicht wie das geht



    Du könntest dir natives C++ aneignen, darin sind m.W. die größeren Antivirusprogramme geschrieben.


    Oh man nicht noch so ein CPP missionar, es gibt noch andere sprachen

    Warfley schrieb:

    Frag mich aber nicht wie das geht


    Wie geht das?! ?(

    :D

    auf diese idee bin ich auch schon gekommen. denn an die dienste kommst du dann auch nicht ran, weil mein sicherheitsprogramm diese art fenster überdeckt.
    nur der taskmgr drückt eben durch - aber das wäre ja dann egal.
    wie bitteschön startet man ein programm als windowsdienst?!

    wenn jemand eine antwort hat, oder wiß wie man eben alternativ das programm vor dem Taskmgr versteckt bitte melden - wäre euch super dankbar! :love: