在 Linux 上,通常我使用ptrace
函数来跟踪所有系统调用,并在它试图对我的机器做任何有害的事情时终止该进程,例如system("shutdown -s -t 00")
左右。
有没有办法让我在 Windows 上做到这一点?
编辑:我想编写沙盒程序来限制它的孩子可以在 Windows 和 Linux 上运行的时间和内存使用,现在它只能在 Linux 上运行通过ptrace
如果将进程附加到Job 对象,则可以限制进程的 CPU 时间和内存。这不会让你阻止 if 执行恶意操作,但它会让你实现你所要求的。
要在沙箱中运行应用程序,您可以使用CreateRestrictedToken创建一个新的受限访问令牌(这里有一些关于您可以启用/禁用的权限的信息),使用新令牌调用ImpersonateLoggedOnUser,使用 CreateProcess 启动新进程并恢复到您的带有RevertToSelf的旧令牌。我不确定是否在所有情况下都可以直接使用CreateProcessAsUser,试一试。
可能为时已晚,刚刚看到你的帖子,我自己也在寻找相同的功能。
我发现 CPU 限制 1.1
你可以在这里下载它的源代码http://www.killprog.com/etce.html
我用的很成功,希望对你有帮助