2

我使用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

谁能告诉我我必须对包装器进行哪些更改才能使其工作?

4

2 回答 2

1

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

然后,要解决RF结果,要么,

  1. 静态链接目标程序,避免对共享库的依赖;或者,
  2. 扩展包装脚本中的策略规则以处理相关SYSCALL/SYSRET事件;

免责声明:我是libsandbox.

于 2013-07-28T07:34:12.317 回答
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=set([0,1,5,8,9,10,11,12,16,21,25,63,89,158,219,231])

为了这:

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

在 sample2.py 中,它可以工作

修改后的 sample2.py 可在我的 github 存储库链接中找到: https ://github.com/palashmaran/libsandbox.git

于 2016-01-23T19:32:52.397 回答