Сведения о вопросе

Ayrat

22:50, 16th August, 2020

Теги

Windows    

"Песочница" в Windows своими руками (велосипед)?

Просмотров: 254   Ответов: 10

Добрый вечер.

Недавно заинтересовался — каким образом на различных олимпиадах контроллируется поведение программ участников? Нет, понятно конечно, что самими участниками (в случае нарушения обычно идёт дисквалификация), но с программной точки зрения. Например: запрещение работы с сетью, файловой системой, процессами и пр. Т.е. можно только читать/выводить в stdin/stdout, выделять немного памяти и вызывать стандартные функции (libc).

В eJudge этот вопрос решён добавлением if'а во все системные вызовы (патч к ядру). Но это под Linux.

Вопрос — как пишется такого рода «песочница» под Windows? Запуск от гостя решает много проблем, и пролезть достаточно сложно. Но хочется полное решение. В какую сторону копать, что читать, есть ли документированные методы. Готовые программы есть, но хочется собрать хоть какой-то велосипед своими руками.



  Сведения об ответе

$DOLLAR

15:18, 29th August, 2020

может использовать *nix? или нужна винда?


  Сведения об ответе

lourence

01:47, 10th August, 2020

Запускать от определённого пользователя?
Плюс все решения сохраняются обычно, чтобы потом руки оторвать если всё же что-то пролезет.


  Сведения об ответе

DO__IT

08:31, 2nd August, 2020

Немного непонятно, зачем изобретать велосипед, если есть готовые бесплатные решения. Вам — шашечки или доехать? ;)


  Сведения об ответе

KOMP

14:44, 3rd August, 2020

Не надо драйверов. Practical Windows Sandboxing в трех частях. ACL-ей хватает с головой для ограничения практически всего (в том числе и виндового нетворкинга — пайпов и мейлслотов, для berkeley sockets придется использовать встроенный файрвол) — собственно для подобного контроля доступа они и были придуманы.

Хромовская песочница — довольно независимый от остального хрома проект. Так что можно вытащить и использовать в личных целях.


  Сведения об ответе

prince

05:45, 13th August, 2020

За олимпиады не скажу, но в Win есть один простой метод: перехват вызовов.
Если есть возможность — запустите AVZ на системе с установленным антивирусом (особенно KAV), посмотрите на список перехваченных вызовов и сделайте выводы.


  Сведения об ответе

PIRLO

18:15, 14th August, 2020

Thinstall.


  Сведения об ответе

9090

21:24, 18th August, 2020

Если полностью-полностью, то драйвера. На каждую подсистему свой. Зато перехватите всё что только можно.


  Сведения об ответе

pumpa

17:16, 19th August, 2020

Знаю, что в NSUTS (система Новосибирского ГУ) используется WinKiller. + там под каждого пользователя создается отдельный юзер с практически нулевыми правами.


  Сведения об ответе

nYU

06:20, 1st August, 2020

Почему-то подумался извращенный вариант:

Скачать десятимегабайтный Windows Research Kernel;
Как и eJudge, добавить if'ы во все системные вызовы;
Скомпилировать ядро и заменить старый ntoskrnl/ntkrnlpa новым;
???
PROFIT!


  Сведения об ответе

PROGA

14:01, 20th August, 2020

Поставьте виртуалку.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться