Control de acceso en Windows está en función de cada objeto. Si desea proteger el objeto de proceso, debe configurar la ACL del objeto de proceso, ya sea cuando se crea el proceso (a través de lpProcessAttributes of CreateProcess) o después (a través del SetKernelObjectSecurity). Si agrega una entrada de "denegar todo" a la ACL, los intentos de abrir el proceso por parte de un atacante fallarán.
Por supuesto, el propietario del proceso (y por lo tanto cualquier código malicioso ejecutado por el usuario) puede cambiar la ACL de nuevo a lo que era, sin embargo, es posible que el código malicioso no esté preparado para hacerlo. Para evitar ataques del espacio de usuario de manera efectiva, debe ejecutar el proceso como un usuario no interactivo (por ejemplo, LocalSystem).
Ninguna cantidad de protección puede evitar ataques del espacio del kernel, por lo que cualquiera que pueda instalar controladores también puede piratear cualquier proceso en el sistema.
La redacción de esta pregunta podría ser mejor, pero la pregunta en sí misma vale la pena. +1 –
relacionado: http://stackoverflow.com/questions/869320/how-would-i-go-about-prevent-dll-injection/869466 –
¡La fraseología es fina !!! +1 para eso y para una buena pregunta! – Narek