Ejemplo n.º 1
0
        public void OpenDrv()
        {
            NTAPI.OBJECT_ATTRIBUTES objectAttributes = new NTAPI.OBJECT_ATTRIBUTES();
            NTAPI.UNICODE_STRING    deviceName       = new NTAPI.UNICODE_STRING(DriverDeviceName);
            NTAPI.IO_STATUS_BLOCK   ioStatus;
            objectAttributes.Length     = Marshal.SizeOf(typeof(NTAPI.OBJECT_ATTRIBUTES));
            objectAttributes.ObjectName = new IntPtr(&deviceName);

            uint   status = 0;
            IntPtr deviceHandle;

            do
            {
                status = NTAPI.NtOpenFile(
                    &deviceHandle,
                    (uint)(NTAPI.ACCESS_MASK.GENERIC_READ | NTAPI.ACCESS_MASK.GENERIC_WRITE | NTAPI.ACCESS_MASK.SYNCHRONIZE),
                    &objectAttributes, &ioStatus, 0, 3 /*OPEN_EXISTING*/);

                if (status != 0 /*NT_SUCCESS*/)
                {
                    //Console.WriteLine($"[!] NtOpenFile failed! - {status:X}");
                    Console.WriteLine($"[!] Error @ NOF - {status:X}");
                    Thread.Sleep(250);
                }
            } while (status != 0 /*NT_SUCCESS*/);

            drvHandle = deviceHandle;
            Console.WriteLine($"[+] hDevice: {drvHandle:X2}");
        }