[VB.NET | C#] ProcessCritical

Iniciado por fudmario, Diciembre 04, 2016, 05:05:15 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Un ejemplo sencillo para proteger el proceso y generar el BSOD.



Código: vbnet

        <DllImport("NTdll.dll", EntryPoint:="RtlSetProcessIsCritical", SetLastError:=True)>
        Public Shared Sub SetCurrentProcessIsCritical(
                      <MarshalAs(UnmanagedType.Bool)> ByVal isCritical As Boolean,
                      <MarshalAs(UnmanagedType.Bool)> ByRef refWasCritical As Boolean,
                      <MarshalAs(UnmanagedType.Bool)> ByVal needSystemCriticalBreaks As Boolean)
        End Sub

Private Sub SetProcessCritical()
Dim refWasCritical As Boolean
System.Diagnostics.Process.EnterDebugMode()
SetCurrentProcessIsCritical(True, refWasCritical, False)
End Sub
Private Sub UnSetProcessCritical()
Dim refWasCritical As Boolean
SetCurrentProcessIsCritical(False, refWasCritical, False)
End Sub


Código: csharp

        [DllImport("NTdll.dll", EntryPoint = "RtlSetProcessIsCritical", SetLastError = true)]
        public static extern void SetCurrentProcessIsCritical(
            [MarshalAs(UnmanagedType.Bool)]bool isCritical,
            [MarshalAs(UnmanagedType.Bool)]ref bool refWasCritical,
            [MarshalAs(UnmanagedType.Bool)]bool needSystemCriticalBreaks);

        private void SetProcessCritical()
        {
            bool refWasCritical = false;
            System.Diagnostics.Process.EnterDebugMode();
            SetCurrentProcessIsCritical(true, ref refWasCritical, false);
             
        }

        private void UnSetProcessCritical()
        {
            bool refWasCritical = false;
            SetCurrentProcessIsCritical(false, ref refWasCritical, false);
             
        }