我的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()的一个好的代码示例,它将向我展示正确执行此操作的细微差别。如果这种方法不起作用,您可能会有任何想法或建议,我们将不胜感激。
您可以使用作业对象来设置作业中进程的限制:JOBOBJECT_BASIC_LIMIT_INFORMATION
.ActiveProcessLimit