如何防止产生子进程产生的进程?

时间:2012-01-22 01:49:05

标签: winapi process access-control createprocess dacl

我的Windows XP / 7程序使用Windows API CreateProcess()函数启动子进程,作为其操作的一部分。我希望能够以一种特定方式“沙箱化”应用程序。我不想让子进程生成自己的进程(孙子进程)。有没有办法做到这一点,而无需进行任何挂钩或DLL注入(或IAT修补)?

我在Process Security and Access Rights上看到了这个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 个答案:

答案 0 :(得分:8)

您可以使用Job objects为作业中的流程设置限制:JOBOBJECT_BASIC_LIMIT_INFORMATION。ActiveProcessLimit