Как я могу предотвратить процесс, который я порождаю, от порождения дочерних процессов? - PullRequest
3 голосов
/ 22 января 2012

Моя программа Windows XP / 7 запускает дочерний процесс, используя функцию Windows API CreateProcess () как часть своих операций. Я хочу иметь возможность «песочнице» приложения одним, но только одним конкретным способом. Я не хочу, чтобы дочерний процесс порождал свои собственные процессы (внуки). Есть ли способ сделать это без каких-либо перехватов или DLL-инъекций (или исправлений IAT)?

Я видел эту страницу MSDN в разделе «Безопасность процессов и права доступа»:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms684880(v=vs.85).aspx

Я заметил следующие специфичные для процесса права доступа:

PROCESS_CREATE_PROCESS (0x0080) Required to create a process.

Могу ли я запустить дочерний процесс в приостановленном состоянии, удалить это право доступа с помощью операции XOR, обновить права доступа дочернего процесса с помощью SetSecurityDescriptor () и возобновить его, чтобы он не создавал свои собственные дочерние процессы? Или я должен применить его к EXE-файлу на диске? Будет ли это работать?

Если это так, я был бы признателен за хороший пример кода с использованием SetSecurityDescriptor (), который показал бы мне нюансы правильного выполнения этого. Если этот подход не сработает, любые идеи или советы, которые вы могли бы получить, будут оценены.

1 Ответ

8 голосов
/ 22 января 2012

Вы можете использовать Объекты задания для установки ограничений на процессы в задании: JOBOBJECT_BASIC_LIMIT_INFORMATION .ActiveProcessLimit

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...