Ответ 1
На высоком уровне такие песочницы - это драйверы ядра, которые перехватывают вызовы API-интерфейсам и изменяют результаты, возвращаемые этими API, с помощью перехвата. Однако, как все песочницы решения под капотом, может легко заполнить несколько книг.
Что касается трудности, это, вероятно, одна из самых сложных вещей, которые вы когда-либо могли написать. Мало того, что вы должны обеспечить перехваты для большинства всего ядра операционной системы, но вы должны запретить приложению получать доступ к памяти других процессов, у вас должен быть способ сохранить состояние изменений, которые делает программа что программа не понимает, что она работает под песочницей. Вы должны сделать все это в режиме ядра, что фактически ограничивает вас использованием C и заставляет вас иметь дело с различными видами памяти, например. выгружаемый пул и невыгружаемый пул. О, и вам нужно быстро выполнить все очень, чтобы пользователь считал целесообразным запускать приложения внутри вашей песочницы. Большинство пользователей не будут допускать 50% -ых результатов.