2011-04-26 15 views

Respuesta

5

un vistazo aquí:

http://channel9.msdn.com/Shows/Going+Deep/Arun-Kishan-Process-Management-in-Windows-Vista

EPROCESS es el modo kernel equivalente del PEB desde el modo usuario. Se pueden encontrar más detalles en this document en el sitio de Alex Ionescu, así como en the book by Schreiber y otros libros sobre las partes internas de NT.

Usa dt en WinDbg para tener una idea de cómo se ven.

+0

Muchas gracias –

+0

@Eknath Iyer: De nada. Viste tu comentario sobre la respuesta de Jason.Aún puede votar su respuesta, incluso si no puede aceptar dos respuestas. – 0xC0000022L

1

EPROCESS no está disponible en modo de usuario. Tampoco lo es KPROCESS.

KPROCESS es un subconjunto de EPROCESS. Si observa los campos de un depurador, verá que KPROCESS contiene campos más relacionados con la programación y la contabilidad del proceso en un nivel inferior, mientras que EPROCESS tiene contextos de proceso de alto nivel dentro de este. Los nombres, hasta donde yo sé, provienen de diferentes subsistemas que interactúan con estas estructuras (el Ejecutivo tiene estructuras y funciones frecuentemente prefijadas con Ex, mientras que el Kernel tiene estructuras y funciones frecuentemente prefijadas con Ke)

Puede ver esto en diferentes funciones documentadas. Considere el prototipo de KeStackAttachProcess (http://msdn.microsoft.com/en-us/library/ff549659(v=vs.85).aspx), que es una función de Ke y toma KPROCESS. No hay ninguna función Ex exportada y documentada que acepte EPROCESS (o KPROCESS), pero las funciones de Ps tratan completamente en EPROCESOS.

Existe una división similar para los hilos, con KTHREAD y ETHREAD.

8

Esto se simplifica, pero la parte del modo kernel del Windows O/S se divide en tres partes: HAL, Kernel y Subsistemas ejecutivos. Los Subsistemas Ejecutivos se ocupan de la política y operación general de O/S. El kernel trata los detalles específicos de la arquitectura del proceso para operaciones de bajo nivel (por ejemplo, spinlocks, switching de hilos) así como la programación. El HAL trata con las diferencias que surgen en las implementaciones particulares de una arquitectura de procesador (por ejemplo, cómo se enrutan las interrupciones en esta implementación del x86). Todo esto se explica con más detalle en el libro de Windows Internals.

Cuando crea un nuevo proceso de Win32, tanto Kernel como los subsistemas ejecutivos desean rastrearlo. Por ejemplo, Kernel quiere saber la prioridad y la afinidad de los hilos en el proceso porque eso afectará la programación. Los Subsistemas Ejecutivos quieren rastrear el proceso porque, por ejemplo, el Subsistema Ejecutivo de Seguridad desea asociar un token con el proceso para que podamos hacer una verificación de seguridad más adelante.

La estructura que utiliza Kernel para rastrear el proceso es KPROCESS. La estructura que utilizan los Subsistemas Ejecutivos para rastrearla es EPROCESS. Como detalle de implementación, KPROCESS es el primer campo de EPROCESS, por lo que los Subsistemas Ejecutivos asignan la estructura EPROCESS y luego llaman al Kernel para inicializar la parte de KPROCESS. Al final, ambas estructuras son parte del Objeto de proceso que representa la instancia del proceso de usuario. Esto también debería estar cubierto en el libro de Windows Internals.

-Scott

Cuestiones relacionadas