我的 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() 的一个很好的代码示例,它将向我展示正确执行此操作的细微差别。如果这种方法不起作用,您可能有任何想法或提示将不胜感激。