Контроль доступа в Windows, на основе каждого объекта. Если вы хотите защитить объект процесса, вам необходимо установить ACL объекта процесса либо при создании процесса (через lpProcessAttributes of CreateProcess), либо позже (через SetKernelObjectSecurity). Если вы добавите запись «deny all» в ACL, попытки открыть процесс злоумышленником потерпят неудачу.
Конечно, владелец процесса (и, следовательно, любой вредоносный код, выполняемый пользователем) может изменить ACL на то, что он был - вредоносный код может быть не готов к этому. Чтобы эффективно предотвращать атаки из пользовательского пространства, вам нужно запустить этот процесс как неинтерактивный пользователь (например, как LocalSystem).
Никакая защита не может предотвратить атаки из пространства ядра, поэтому любой, кто может установить драйверы, также может взломать любой процесс в системе.
Формулировка этого вопроса может быть лучше, но сам вопрос стоит спросить. +1 –
related: http://stackoverflow.com/questions/869320/how-would-i-go-about-prevent-dll-injection/869466 –
Формулировка прекрасна !!! +1 для этого и для хорошего вопроса! – Narek