Ограниченная функция с libsandbox и 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 ответа

RF код результата был, скорее всего, из-за неожиданных системных вызовов для файловых операций (т.е. SYS_open(), SYS_close(), SYS_stat()...) Это происходит, когда (1) целевая программа фактически выполняет файловые операции, и (или) когда (2) она была динамически связана и должна быть загружена .so библиотеки во время выполнения. Поскольку ваша целевая программа не вызывает файловые операции, она относится к последнему случаю.

Затем, чтобы решить RF результат, либо,

  1. статически связать целевую программу, чтобы избежать зависимости от разделяемых библиотек; или же,
  2. расширить правила политики в сценарии оболочки для обработки соответствующих SYSCALL / SYSRET События;

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я автор libsandbox,

Для статического связывания системных вызовов мы используем коды системных вызовов, например, 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, и работает

Модифицированный sample2.py доступен в моей ссылке на репозиторий github: https://github.com/palashmaran/libsandbox.git

Другие вопросы по тегам