"Standard I/O only" Windows 下的权限

"Standard I/O only" privileges under Windows

本文关键字:权限 Windows Standard only      更新时间:2023-10-16

我想在Windows上设置一个在线判断(自动测试软件;获取潜在的恶意代码并对其运行一些测试),但此类软件通常是为*nix系统编写的,因为在那里沙箱代码要容易得多。目前看来我必须自己写。

  1. 如何编译C++代码以防止除标准/标准输出之外的任何行为?
  2. 如何在只允许它执行 stdio 的环境中运行可执行文件?

我已经考虑过从Visual Studio标准设置中删除一些.lib和头文件,但恐怕在技术上仍然可以执行WinAPI调用。

另外,我可以再创建一个操作系统用户,在管理控制面板中设置一些权限,并从该用户runas可执行文件以获得"安全"的环境,但我不擅长管理,也不知道是否可以只授予程序 stdio 权限。

由于这类问题将成为各种不同方面一些相当"糟糕"的代码的目标,我建议一种可能的解决方案是使用虚拟机来运行"外部"代码。因此,与其构建在实际硬件上执行操作的服务器软件(并且可能会出于恶意目的弄乱或接管计算机),不如在资源有限且规则严格的虚拟机上运行代码。完成"结果"后,关闭该 VM,然后使用"全新"VM(通过克隆以前构造的 VM 创建)重新开始。

是的,删除库和标头肯定不会阻止某人使用您不想使用的调用/函数。它会让它变得更难一点,但只是一点点。大多数"有害"调用都在系统中,win32.dll您还需要系统 I/O 等。