¿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)
Respuesta
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
¿Cómo puedo escribir un controlador de dispositivo de Windows? –
Editado mi respuesta. – Artelius
¡Gracias, esto es muy bueno y útil! –
No se puede establecer el modo de núcleo de un proceso de modo de usuario. Así es como funciona la seguridad.
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.
- 1. Obteniendo el ancho de fragmento 0 en onStart()
- 2. ¿Activando el modo de presentación en Windows?
- 3. Obteniendo la zona horaria en Windows con C++
- 4. Obteniendo GeoDjango + Spatialite ejecutándose en Windows
- 5. Windows PID = 0 ¿válido?
- 6. Obteniendo el error "Acceso denegado" al ejecutar pg_dump en Windows
- 7. Buscando la derecha aplicación búfer de anillo en C
- 8. lo que se llama anillo en emacs?
- 9. ¿Cómo implemento una lista circular (buffer de anillo) en C?
- 10. anillo/compojure sin muelle
- 11. Obteniendo ATLAS 3.10.0 compilado en Windows 7 64
- 12. Detectando el modo de pantalla completa en Windows
- 13. ¿Cómo puedo desactivar el modo vertical en Windows 8?
- 14. Tuberías de Windows en modo binario
- 15. Obteniendo mensajes de error en Windows 7
- 16. Obteniendo un número aleatorio entre 0 y 0.06 en Java?
- 17. Obteniendo la ruta completa para el servicio de Windows
- 18. Cómo dibujar anillo de enfoque en torno NSBox el foco de niño NSTextView en Objective-C
- 19. Emacs comentar-región en el modo C
- 20. Dibuja un semi anillo - JavaFX
- 21. 0 + 0 + 0 ... + 0! = 0
- 22. emacs comando para anexar al anillo
- 23. Deshabilitar el modo de suspensión en Windows Mobile 6
- 24. ¿Qué es '\ 0' en C++?
- 25. 1/252 = 0 en C#?
- 26. Obteniendo Uploadify Trabajando en C#
- 27. ¿Qué significa "= 0" en C++?
- 28. ¿Qué es! 0 en C?
- 29. buffer de anillo sin inversión de prioridad
- 30. OBJ-C: obteniendo el valor mínimo/máximo en un NSMutableArray
pregúntese: ¿realmente debería estar escribiendo un proceso de anillo 0 kernal? –
En realidad, díganos por qué quiere ejecutar en el anillo 0 y le diremos si es una buena solución o no. – Artelius
@Mitch: Busca KERNAL en Wikipedia. Es un error ortográfico. – Artelius