首页 文章

Windows下的“仅限标准I / O”权限

提问于
浏览
3

我想在Windows上设置online judge(自动化测试软件;在其上运行潜在的恶意代码并对其运行几项测试),但这种软件通常是为* nix系统编写的,因为它必须自己编写 .

  • 如何编译C代码以防止除stdin / stdout之外的任何行为?

  • 如何在环境中运行可执行文件,只允许它执行stdio?

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

此外,我可以创建一个OS用户,在管理控制面板中设置一些权限,并从该用户获取 runas 可执行文件以获取"secure"环境,但是我知道是否可以仅为程序提供stdio权限 .

1 回答

  • 3

    由于这类问题将成为各种不同方面的一些相当“糟糕”的代码的目标,我建议一种可能的解决方案是使用虚拟机来运行“外来”代码 . 因此,您可以在具有有限资源和严格规则的虚拟机上运行代码,而不是构建在真实硬件上执行操作的服务器软件(并且可能会出于恶意目的而混淆或接管计算机) . 一旦“结果”完成,您关闭该VM,并从“新”VM(通过克隆先前构建的VM创建)重新开始 .

    是的,删除lib 's and headers certainly won' t阻止某人使用您不想使用的呼叫/功能 . 这将使它变得更难,但只是一点点 . 大多数"harmful"调用都在系统 win32.dll 中,您还需要系统I / O等 .

相关问题