2009-09-13 7 views
8

¿Cómo puedo obtener el modo operativo anillo 0 para mi proceso en Windows 7 (o Vista)?Obteniendo el modo anillo 0 en C++ (Windows)

+3

pregúntese: ¿realmente debería estar escribiendo un proceso de anillo 0 kernal? –

+0

En realidad, díganos por qué quiere ejecutar en el anillo 0 y le diremos si es una buena solución o no. – Artelius

+0

@Mitch: Busca KERNAL en Wikipedia. Es un error ortográfico. – Artelius

Respuesta

16

Permitir que el código arbitrario se ejecute en el anillo 0 infringe los principios básicos de seguridad del sistema operativo.

Solo el kernel del sistema operativo y los controladores de dispositivo se ejecutan en el anillo 0. Si desea escribir el código del anillo 0, escriba un controlador de dispositivo de Windows. This puede ser útil.

ciertos agujeros de seguridad pueden permitir que el código se ejecute en el anillo 0 también, pero esto no es portátil, porque el agujero podría fijarse en un parche: P

+0

¿Cómo puedo escribir un controlador de dispositivo de Windows? –

+0

Editado mi respuesta. – Artelius

+0

¡Gracias, esto es muy bueno y útil! –

2

No se puede establecer el modo de núcleo de un proceso de modo de usuario. Así es como funciona la seguridad.

7

Técnicamente hablando, todos los procesos tienen algunos hilos que pasan parte de su tiempo en Kernel-Mode (anillo 0). Cada vez que un proceso en modo usuario hace una llamada al sistema operativo, hay una transición donde el subproceso entra en el anillo 0 a través de una 'puerta'. Cuando un proceso necesita hablar con un dispositivo, asignar más memoria en todo el proceso o engendrar nuevos hilos, se usa un syscall para solicitar al sistema operativo que proporcione este servicio.

Por lo tanto, si desea tener un proceso ejecute algún código en el anillo 0, tendrá que escribir un controlador y luego comunicarse con este controlador a través de algunas llamadas de sistema. El syscall más común para esto se llama ioctl (siglas de control de E/S).

Otro aspecto a tener en cuenta en la plataforma de Windows es el UMDF (User-Mode Driver Framework). Esto le permite escribir, depurar y probar un controlador en modo de usuario (ejecutándose en el anillo 3) pero todavía puede acceder a otros controladores u otros procesos en el sistema.

Cuestiones relacionadas