Python 带pysandbox的受限功能(RF)

Python 带pysandbox的受限功能(RF),python,ubuntu,gcc,sandbox,pysandbox,Python,Ubuntu,Gcc,Sandbox,Pysandbox,我的问题与和完全相同 我还使用了simple2.py对该程序生成的可执行文件进行沙箱处理test1.c: #include<stdio.h> int main(){ puts("Hello World"); return 0; } #包括 int main(){ puts(“你好世界”); 返回0; } 我正在使用以下命令构建可执行文件: gcc-statictest1.c 在此之后,如果我这样做: ldd a.out 我得到了输出: 不是动态可执行文件

我的问题与和完全相同

我还使用了
simple2.py
对该程序生成的可执行文件进行沙箱处理
test1.c

 #include<stdio.h>
 int main(){
     puts("Hello World");
     return 0;
 }
#包括
int main(){
puts(“你好世界”);
返回0;
}
我正在使用以下命令构建可执行文件:

gcc-statictest1.c

在此之后,如果我这样做:

ldd a.out

我得到了输出:

不是动态可执行文件

但是,运行sample2.py时的结果仍然是

结果:RF
cpu:0ms
内存:952kB

我到底做错了什么?

我改变了这一点:

x86_64=set([0,1,5,8,9,10,11,12,16,25,63,158,219,231])
为此:

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

在sample2.py中,它可以工作。

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

然后,为了解决射频结果

statically link the target program to avoid dependencies on shared libraries; or,
extend the policy rules in the wrapper script to handle relevant SYSCALL / SYSRET events;
对于静态链接系统调用,我们使用ex0,1,2的系统调用代码 3-系统读取 1-系统出口 等等 通过链接了解更多详细信息 带有代码的系统调用列表链接:

我改变这一点:

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

为此:

x86_64=set([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,89158219231])

在sample2.py中,它是有效的

修改后的sample2.py可在my github存储库链接中找到: