libsandbox和pysandbox的受限功能

时间:2013-07-28 07:13:25

标签: python sandbox pysandbox

我使用此处列出的sample2.py https://github.com/openjudge/sandbox作为包装来调用沙盒库(又名。libsandbox&& pysandbox)。

以下是我的C ++代码

#include <stdio.h>
int main(){
   return 0;
}

运行sample2.py时的结果是

result: RF
cpu: 2ms
mem: 288kB

任何人都可以告诉我,我必须对包装器进行哪些更改才能使其正常工作?

2 个答案:

答案 0 :(得分:1)

RF结果代码很可能是由于文件操作的意外系统调用(即SYS_open()SYS_close()SYS_stat(),... )。当(1)目标程序实际执行文件操作时,以及(或)(2)它是动态链接的并且需要在运行时加载.so库时,会发生这种情况。由于您的目标程序调用文件操作,因此它属于后一种情况。

然后,要解决RF结果,

  1. 静态链接目标程序,以避免依赖共享库;或者,
  2. 扩展包装器脚本中的策略规则以处理相关的SYSCALL / SYSRET事件;
  3. 免责声明:我是libsandbox的作者。

答案 1 :(得分:0)

对于静态链接系统调用,我们使用ex 0,1,2 3-sys_read 1-sys_exit的系统调用代码,依此类推,直到链接了解系统调用列表的更多详细信息链接,代码为:http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html

我改变了这个:

= x86_64的集合([0,1,5,8,9,10,11,12,16,21,25,63,89,158,219,231])

为此:

= x86_64的集合([0,1,2,3,4,5,8,9,10,11,12,16,21,25,63,89,158,219,231,])

在sample2.py中

,它可以正常工作

我的github存储库链接中提供了修改后的sample2.py: https://github.com/palashmaran/libsandbox.git