Zum Inhalt wechseln

Als Gast hast du nur eingeschränkten Zugriff!


Anmelden 

Benutzerkonto erstellen

Du bist nicht angemeldet und hast somit nur einen sehr eingeschränkten Zugriff auf die Features unserer Community.
Um vollen Zugriff zu erlangen musst du dir einen Account erstellen. Der Vorgang sollte nicht länger als 1 Minute dauern.

  • Antworte auf Themen oder erstelle deine eigenen.
  • Schalte dir alle Downloads mit Highspeed & ohne Wartezeit frei.
  • Erhalte Zugriff auf alle Bereiche und entdecke interessante Inhalte.
  • Tausche dich mich anderen Usern in der Shoutbox oder via PN aus.
 

   

Foto

[F] C# Konsolen Anwendung Exit blockieren

- - - - -

  • Bitte melde dich an um zu Antworten
10 Antworten in diesem Thema

#1
.Puma

.Puma

    Noob

  • Members
  • PIPPIP
  • Likes
    0
  • 6 Beiträge
  • 0 Bedankt

Hallo,

 

habe mir nun ein Programm geschrieben in C# als Konsolen Anwendung, welches auch bisher tadellos funktioniert. 

Der User macht Eingaben und es erledigt Aufgaben und gibt Textausgaben. Jedoch hätte ich gern das Tastenkombinationen wie Alt F4, Alt Tab, Alt Ctrl Del etc nicht zu machen sind bis zum Abschluss des Programms. Da dieses Programm wie gesagt eine Konsolen Anwendung ist, habe ich bisher nichts brauchbares im Internet gefunden. Ist dies überhaupt möglich in dieser Programm Form diese Eingaben zu blockieren?



#2
n1nja

n1nja

    1337

  • Premium Member
  • Likes
    140
  • 303 Beiträge
  • 84 Bedankt
  • Android [root], iPhone
  • Windows, Linux, Mac OS

 Ja es ist möglich.

Du brauchst einen Tastaturhook.

Damit kann man dann bestimmte Tasten blockieren.

 

Normal reicht es auch manchmal den TaskMgr zu sperren.



Thanked by 1 Member:
.Puma

#3
.Puma

.Puma

    Noob

  • Members
  • PIPPIP
  • Likes
    0
  • 6 Beiträge
  • 0 Bedankt

Das mit dem TaskMgr über die Registry habe ich schon gefunden, das hat auch funktioniert. 

Jedoch hab ich so meine Probleme mit dem hooken, aus irgendeinem Grund scheint das in den verschiedensten Weisen einfach nicht zu funktionieren. Hast du eventuell hilfreichen Beispielcode auf Lager?



#4
rat123

rat123

    Member

  • Premium Member
  • Likes
    97
  • 107 Beiträge
  • 31 Bedankt
  • verifiziert

Am besten einen ChildProcess erzeugen welches deine Konsole überwacht, gleichzeitig überwacht deine Konsole den ChildProcess


Eingefügtes Bild


#5
MDDD

MDDD

    Hacktivist

  • Members
  • PIPPIPPIPPIPPIP
  • Likes
    9
  • 70 Beiträge
  • 11 Bedankt
using Microsoft.Win32;

public void KillCtrlAltDelete()  
        {
            RegistryKey regkey;
            string keyValueInt = "1";
            string subKey = "Software\Microsoft\Windows\CurrentVersion\Policies\System";

            try
            {
                regkey = Registry.CurrentUser.CreateSubKey(subKey);
                regkey.SetValue("DisableTaskMgr", keyValueInt);
                regkey.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

private void Form1_FormClosing(object sender, FormClosingEventArgs e)  
        {
            e.Cancel = true;
            base.OnClosing(e);
        }

--------------------

using System.Runtime.InteropServices;  
using System.Security.Principal;  
using System.Diagnostics;  

[DllImport("user32", EntryPoint = "SetWindowsHookExA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]  
        public static extern int SetWindowsHookEx(int idHook, LowLevelKeyboardProcDelegate lpfn, int hMod, int dwThreadId);
        [DllImport("user32", EntryPoint = "UnhookWindowsHookEx", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        public static extern int UnhookWindowsHookEx(int hHook);
        public delegate int LowLevelKeyboardProcDelegate(int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam);
        [DllImport("user32", EntryPoint = "CallNextHookEx", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        public static extern int CallNextHookEx(int hHook, int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam);
        public const int WH_KEYBOARD_LL = 13;

        /*code needed to disable start menu*/
        [DllImport("user32.dll")]
        private static extern int FindWindow(string className, string windowText);
        [DllImport("user32.dll")]
        private static extern int ShowWindow(int hwnd, int command);

        private const int SW_HIDE = 0;
        private const int SW_SHOW = 1;
public struct KBDLLHOOKSTRUCT  
        {
            public int vkCode;
            public int scanCode;
            public int flags;
            public int time;
            public int dwExtraInfo;
        }
        public static int intLLKey;

        public int LowLevelKeyboardProc(int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam)
        {
            bool blnEat = false;

            switch (wParam)
            {
                case 256:
                case 257:
                case 260:
                case 261:
                    //Alt+Tab, Alt+Esc, Ctrl+Esc, Windows Key,
                    blnEat = ((lParam.vkCode == 9) && (lParam.flags == 32)) | ((lParam.vkCode == 27) && (lParam.flags == 32)) | ((lParam.vkCode == 27) && (lParam.flags == 0)) | ((lParam.vkCode == 91) && (lParam.flags == 1)) | ((lParam.vkCode == 92) && (lParam.flags == 1)) | ((lParam.vkCode == 73) && (lParam.flags == 0));
                    break;
            }

            if (blnEat == true)
            {
                return 1;
            }
            else
            {
                return CallNextHookEx(0, nCode, wParam, ref lParam);
            }
        }
public void KillStartMenu()  
        {
            int hwnd = FindWindow("Shell_TrayWnd", "");
            ShowWindow(hwnd, SW_HIDE);
        }
private void Form1_Load(object sender, EventArgs e)  
        {
            intLLKey = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, System.Runtime.InteropServices.Marshal.GetHINSTANCE(System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0]).ToInt32(), 0);
        }

-------------------

public static void ShowStartMenu()  
        {
            int hwnd = FindWindow("Shell_TrayWnd", "");
            ShowWindow(hwnd, SW_SHOW);
        }
public static void EnableCTRLALTDEL()  
        {
            try
            {
                string subKey = "Software\Microsoft\Windows\CurrentVersion\Policies\System";
                RegistryKey rk = Registry.CurrentUser;
                RegistryKey sk1 = rk.OpenSubKey(subKey);
                if (sk1 != null)
                    rk.DeleteSubKeyTree(subKey);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
private void Form1_FormClosing(object sender, FormClosingEventArgs e)  
        {
            UnhookWindowsHookEx(intLLKey);
        }

adde mich

mddd_@exploit.im + OTR

suchst du was ?


#6
n1nja

n1nja

    1337

  • Premium Member
  • Likes
    140
  • 303 Beiträge
  • 84 Bedankt
  • Android [root], iPhone
  • Windows, Linux, Mac OS

ja über diese wParam kann man es auch machen.

Soviel ich mich aber erinnern kann, brauch man für das Adminrechte.

Zumindest für den Eintrag in die Registry.



#7
MDDD

MDDD

    Hacktivist

  • Members
  • PIPPIPPIPPIPPIP
  • Likes
    9
  • 70 Beiträge
  • 11 Bedankt

Please Login HERE or Register HERE to see this link!

 

Old but Gold wa ?


adde mich

mddd_@exploit.im + OTR

suchst du was ?


#8
R3s1stanc3

R3s1stanc3

    Hacktivist

  • Premium Member
  • Likes
    22
  • 72 Beiträge
  • 4 Bedankt
  • 687249355
  • Android [root]
  • Linux

Ich bin mir nicht 100% sicher, ob das unter Windows genauso funktioniert, wie unter Linux, aber du könntest versuchen, das "SIGTERM" Signal abzufangen.

Die entsprechende Funktion wäre folgende:

Please Login HERE or Register HERE to see this link!

Der erste Parameter ist das Signal, das du abfangen willst (in diesem Fall wrsl SIGTERM), der 2. Parameter ist ein Funktionspointer auf eine void Funktion mit 1 oder optional 2 int Parametern, als 1. Parameter bekommt die Funktion den Wert des Signals, das abgefangen wird, mit dem 2. Parameter kann man optional das Signal noch unterteilen und spezifizieren. Solltest du aber gar nicht brauchen


  • old_panther gefällt das

#9
n1nja

n1nja

    1337

  • Premium Member
  • Likes
    140
  • 303 Beiträge
  • 84 Bedankt
  • Android [root], iPhone
  • Windows, Linux, Mac OS

Um den Eintrag im TaskScheduler zu machen mit erweiterte Rechte, brauch man ebenfalls Adminrechte dazu.

Viele denken das ist ein richtiger Bypass mit den Scheduler.

Man kann natürlich was faken um an die Rechte zu kommen, aber beim ersten Start braucht man Rechte.

 

Und das mit den Signal funktioniert auf Windows, sonst wäre es nicht in der MSDN:)

 

Man muss sich allerdings einen Wrapper in C# bzw VB schreiben in eine C++ Dll.

Dann könnte das sehr gut funktionieren.



#10
R3s1stanc3

R3s1stanc3

    Hacktivist

  • Premium Member
  • Likes
    22
  • 72 Beiträge
  • 4 Bedankt
  • 687249355
  • Android [root]
  • Linux

Hier wird beschrieben, wie man eine C Funktion aus C# callen kann:

Please Login HERE or Register HERE to see this link!



#11
pdr0

pdr0

    Pentester

  • Premium Member
  • Likes
    86
  • 148 Beiträge
  • 87 Bedankt

Die erste Antwort hat bei mir funktioniert, strg+c wurde abgefangen.

Please Login HERE or Register HERE to see this link!





  Thema Forum Themenstarter Statistik Letzter Beitrag

Besucher die dieses Thema lesen:

Mitglieder: , Gäste: , unsichtbare Mitglieder:


This topic has been visited by 33 user(s)


    .Puma, Ar@m!s, Becks, Blackhook, ChEeTaH182, Colonel, cX., darkman36, EiLafJu, Framerater, FullMetall, Huseijnx3, JohnR, Kaban, kiwitone, loginman1, MDDD, n1nja, NichtDiePolizei, old_panther, pdr0, pi^2, Querox, R3s1stanc3, rat123, Seldos, smc2014, TheYNC, Traxx, vitovice, x1z0ng, x4r4x, yq8
Die besten Hacking Tools zum downloaden : Released, Leaked, Cracked. Größte deutschsprachige Hacker Sammlung.