Откуда беруться эти права: PROCESS_VM_READ, PROCESS_VM_WRITE, PROCESS_VM_OPERATION? Они присваиваются операционной системой или самим процессом? Ага, значит типа мы спрашиваем у ядра "А пусти нас в чужую память". А ядро спокойненько нас туда пускает... Как же определить, что мы можем прочитать, а что нет?
Администратор настраивает систему, указывает к каким процессам полагаются те или иные права доступа. Простое юзерское приложение при желании получить доступ спрашивает разрешения и, если админ такового не давал - либо обламывается либо пытается получить админские привилегии (если умеет эксплуатировать ту или иную ошибку в защите). Админ может все (теоретически), в крайнем случае грузит драйвер и из нулевого кольца получает доступ ко всему, чему хочет.
Попробовать Ну а говорить о незащищенности ядра можно только получив высокие привилегии от пользователя, но никак не под админом.
CT То есть, можно конкретно указать, что скажем процесс1 имеет по отношению к процессу2 вот такие конкретные привилегии {прив1,прив2...}? Или таким образом: процессы юзера1 имеют к процессам юзера2 привилегии {прив1,прив2...}? И где это прописывается?
Ss_oO0 при создании процесса одним из параметров функции CreateProcess передается указатель на структуру SECURITY_ATTRIBUTES, в которой параметры защиты и задаются. Подробнее - у Рихтера и в МСДН