c - 如何从 gcc 限制 C 指令集

标签 c gcc

<分区>

我正在开发一个类似于 hackerrank.com 的平台,有人可以在其中提交 C 代码,然后该代码将被编译并在我的服务器上运行,但我想限制一个人能够使用的 C 指令集在我的服务器上执行。

例如:将指令集限制为仅 I/O。

我的第一个方法是解析代码并查找恶意代码,但这是非常幼稚的,因为它很容易被覆盖(shell 代码、混淆等)

我的第二种方法(我认为它可以工作的方法)是删除所有“不必要的”头文件,只留下 stdio.h、math.h、stdlib.h 等。 . 仅举几例。

但后来我认为可能可以从 gcc 限制 C 的指令集,但在阅读 gcc 的 man 条目后我找不到任何接近我需要的东西,所以我想知道这是否可能。

如果这不可能,那么解决这个问题的安全方法是什么?除了摆脱不必要的图书馆。

谢谢!

最佳答案

您可以使用 systrace 来限制系统调用,它在 OpenBSD 上可用。我确信 linux 和其他操作系统有一个等价物。这将允许您将系统调用限制为仅文件 io 而不是套接字和 fork 之类的东西。

关于c - 如何从 gcc 限制 C 指令集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15914498/

相关文章:

c - 常量字符数组的内存分配

c - MIPS汇编语言 "move"和 "li"的区别

c - 如何创建一个循环来连续获取浮点输入?

c - 整数数组空 - C

c - 在编译期间将展开的宏打印到文件

gcc - android 工具链缺少 crtbegin_so.o(自定义构建)

c - 通过 Makefile 构建并构建脚本有效,但等效的 Makefile.am 没有。(给出 undefined reference 错误)

gcc - 学习GNU GCC编译优化实现

c++ - 为什么 __builtin_prefetch 在这里没有任何作用?

c - 如何正确调试用 C 编写的共享库?