прочитайте о перехвате API, например песочница перехватывает ядро Windows, чтобы отфильтровать все вызовы api к файловой системе и перенаправляет результат в песочницу, можно перехватить API и отфильтровать его, передают только допустимые параметры, возвращают ошибки при недействительных вызовах
для перехвата API вы найдете много материалов в сети, попробуйте codeproject.com
.Google's Chromium использует песочницу и имеет несколько документов об этом:
Вы также можете посмотреть на тюрьмы во FreeBSD. Это эквивалент FreeBSD для песочниц.
-12160] доступен исходный код jail (хотя вы должны понимать и остальную часть кода FreeBSD)
.Это очень зависит от того, что вы хотите сделать с песочницей. Если это полноценная система с множеством доступных интерфейсов/языков, то вы действительно не хотите заново изобретать колесо, а запустить виртуальную машину в VirtualBox, QEmu или какой-нибудь другой альтернативе
В любом случае, песочница IS, по крайней мере, на каком-то уровне виртуализации системы, которую вы "должны" запустить. ...
Если вам нужно изолировать приложения для одного (интерпретируемого) языка, модификация интерпретатора звучит как разумный подход.
.Ответ, скорее всего, будет языковым. К сожалению, большинство языков не имеют встроенных возможностей песочницы. Но функциональные языки, как правило, достаточно мощные, чтобы можно было строить с нуля, не расширяя язык.
В Tcl основной механизм заключается в создании ведомых интерпретаторов:
interp create -safe sandbox
interp eval sandbox $set_up_code
set result [interp eval sandbox $unsafe_code]
Простая песочница - это просто среда, в которой вы позволяете "что-то" выполнять, но ограничиваете то, что она может делать.
Обычно, это "нечто" - уже существующий язык, такой как Java, или JavaScript, или C#, или родной код. Java имеет "песочницу" apis для апплетов и так далее, и .NET имеет различные уровни "доверия", JavaScript имеет границы, накладываемые на него интерпретаторами (браузерами).
Так что немного странно "писать" свою собственную песочницу, если только у вас нет языка, который вы хотите "песочницы".
У вас есть такой язык? О чем конкретно Вы хотите узнать?