我的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()的一个很好的代码示例,它会告诉我这样做的细微差别。如果这种方法不起作用,那么您可能会有任何想法或提示。
答案 0 :(得分:8)
您可以使用Job objects为作业中的流程设置限制:JOBOBJECT_BASIC_LIMIT_INFORMATION
。ActiveProcessLimit