Konsolenfenster soll nirgendswo sichtbar sein!



  • |< schrieb:
    PS:
    Es soll nicht als Prozess auftauchen, damit man es nicht über den Task-Manager beenden kann!

    ahja, scriptkiddie...

    was ist so schlimm daran, dass ich das fenster unbekannt lassen will?


  • Administrator

    |< schrieb:
    ahja, scriptkiddie...
    was ist so schlimm daran, dass ich das fenster unbekannt lassen will?

    Weil das heisst, dass du dem Benutzer Kontrolle entziehen willst ohne dessen Wissen. Sowas macht man schlicht und einfach nicht. Entweder ist es schlechtes Design oder wie so oft, einfach nur ein Script-Kiddie, welches den ultimativen Hack, pseudo-Wurm oder sonstigen Unsinn generieren will.

    Es gibt einfach keinen vernünftigen Grund, einen Prozess verstecken zu wollen.

    Grüssli



  • Dass man das Fenster nicht sehen soll, ist nicht schlimm. Die meisten Programme haben kein Fenster, sie laufen nur im Hintergrund. Die Tatsache, dass du auch den Prozess verstecken willst, ist allerdings verdächtig, fast nur Schadprogramme wie z.B. Spyware, Viren o.ä. das Bestreben haben, unerkannt zu bleiben, um ungestört Schaden anzurichten. Von daher ist der Verdacht von Dravere nicht unbegündet.

    MfG, Jochen



  • ähm doch?

    ganz einfach der sinn ist, dass auf bestimmten rechnern einfach keine ego-shooter
    (hier HL-basiert, daher das "kill hl.exe", gespielt werden sollen (schule, kinder?)...

    von daher kann man das ganz einfach mit dem code unterbinden, würde mir auch reichen, wenn ich nur das fenster verstecken könnte, geht bei mir ja auch nicht...

    das mit dem prozess verbergen muss ja nicht sein, aber fenster schließen, wird ja wohl auch noch ein DAU schaffen, oder?



  • Dravere schrieb:

    Es gibt einfach keinen vernünftigen Grund, einen Prozess verstecken zu wollen.

    Doch, vernünftige Gründe gibt es durchaus:
    Meine Dialerschutz-Software scheint auch so etwas wie einen Kernel-Hook installiert zu haben, damit man sie nicht beenden kann. Wenn man versucht den Prozess "gewaltsam" zu beenden, kommt immer eine Meldung, dass man das Passwort zum Beenden eingeben soll. Genausogut hätte sich die Software natürlich auch verstecken können, um sich zu schützen.

    MfG, Jochen



  • Wie fändest du denn folgenden Ansatz:

    Du lässt einfach zwei Prozesse Laufen. Prozess A verhindert das Ausführen von "hl.exe". Prozess B prüft, ob Prozess A noch läuft. Wenn nicht, startet er den Prozess neu. Prozess A müsste allerdings auch einen Thread haben, in dem geprüft wird, ob Prozess B noch läuft und ggf. den Prozess B neu startet. So schützen sich die beiden Prozesse gegenseitig.

    Zu deinem Programm: Was läuft denn nicht richtig?
    Wenn er die Funktion GetConsoleWindow nicht findet, könntest du es auch mit FindWindow realisieren:

    HWND hWnd = FindWindow("ConsoleWindowClass",NULL);
    ShowWindow(hWnd,SW_HIDE);
    

    MfG, Jochen


  • Administrator

    Jochen S. schrieb:

    Genausogut hätte sich die Software natürlich auch verstecken können, um sich zu schützen.

    Nein, der Prozess ist sichtbar, dass ist korrekt. Alle Anti-Viren Software und co schützen sich, vor unerlaubten beenden. Dagegen ist ja auch nichts einzuwenden, nur das bewusste verbergen ist extrem verdächtig.

    @>|<,
    Um Spiele zu unterbinden, dafür gibt es extra Software. Die ist sicherer und erledigt es bestimmt besser, als wenn man sowas selbst macht. Hat nicht sogar Antivir einen Schutz gegen Spiele? Dachte mal irgendwo was davon gelesen zu haben und Antivir wäre ja gratis.
    Allerdings frage ich mich, wie die Schüler denn überhaupt so ein Spiel installieren können? Man könnte ja auch leicht ihre Reiche entsprechend einschränken, dass sie nicht einfach Programme installieren können. Bzw. man kann ihnen auch verbieten, so eine *.exe auszuführen. Gibt da eine vielzahl besserer Alternativen.

    Grüssli



  • ihr könnt mir gerne glauben, dass ich damit niemanden schaden will...

    auf jeden fall...:
    jochen, du hast den richtigen weg gefunden, das waren die dinge, die ich noch brauchte, dass mit dem überwachen der beiden prozesse kann ich jetzt nich mehr machen, ich leg mich jetzt schlafen 😃

    wär nett, wenn einer von euch mir sowas schonmal generell vorfertigen würde 😃

    muss aber nicht, bin halt das WE weg^^

    Grüße und besten Dank, >|<



  • Ich nehm mal an, es ist ein Arbeitsrechner oder sowas.. vllt zockt der Azubi auf Arbeit CS oder so? ka... kommt mir schon komisch vor.

    Einfachste Lösung:
    DirectX deinstallieren und dem User nicht die Rechte dazu geben es neu zu installieren :P.

    Den Prozess des Schutzprogrammes mit höheren Rechten starten als der User hat.. kein User braucht Admin-Rechte. Damit kann er den Prozess gar nicht terminieren.

    Da is kein gefrickel zu nötig.
    Alles andere schaut mir auch eher nach Wurm aus.
    rya.



  • 😡

    einfach als admin starten..... so einfach.. 😳

    ...
    ...
    ...
    ...
    ja, klar, thx



  • Schonmal daran gedacht den Prozess z.B. system32 zu nennen, oder wenn das Programm beendet wird, führt es sich wieder selbst aus?...



  • Programme können sich nicht selbst ausführen, wenn sie beendet wurden. Dafür braucht man dann zwei Prozesse. Das hab ich ja schon vorgeschlegen.



  • Wenn´s nur darum geht, HL.EXE zu verhindern gibt es einen einfachen Weg. In der Registry gibt es einen Key namens AppInit_DLLs. Unter diesem Key befinden sich Namen von DLLs, die während des Prozesstarts für User Prozesse geladen werden.
    Du musst eine eigene DLL schreiben, die beim Laden prüft, ob der Host Prozess HL.EXE ist, falls dies der Fall ist kanst du den Prozess beenden.

    Taucht in keinem Task Manager auf und braucht keinen WatchDog.

    AppInit_DLLs



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ist gelöst thX 🙂



  • Wäre schön, wenn du uns noch verrätst wie du´s gelöst hast. Möglicherweise haben andere Leute das gleiche Problem und wüssten gern, wie´s geht...



  • Jochen S. schrieb:

    Programme können sich nicht selbst ausführen, wenn sie beendet wurden. Dafür braucht man dann zwei Prozesse. Das hab ich ja schon vorgeschlegen.

    .NET kann sowas 😃



  • Jetzt bin ich aber interessiert.
    Aber die Programme schaffen das nicht aus eigener Kraft, oder?



  • Eigentlich schon. Es gibt ein bestimmtes Event, dass hier z.B. gut passen würde, welches abfängt, ob das Programm per Prozesskill geschlossen wird und jenachdem kann man dann da noch Code einfügen.


  • Mod

    FreakY<3Cpp schrieb:

    Eigentlich schon. Es gibt ein bestimmtes Event, dass hier z.B. gut passen würde, welches abfängt, ob das Programm per Prozesskill geschlossen wird und jenachdem kann man dann da noch Code einfügen.

    Das ist übrigens kein .NET-Feature. Das kann man in jedem System machen, wo Programme Nachrichten/Signale bekommen, um sich zu beenden. Allerdings taugt die Lösung nicht, um einen Prozess unstoppbar zu machen, weil es in der Regel auch die Möglichkeit gibt, ein Programm ohne dieses Signal zu beenden.


Anmelden zum Antworten