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