Тема песочницы

Я хочу создать поток или процесс, который будет иметь собственное виртуальное адресное пространство (вероятно, это должен быть отдельный процесс) без системных библиотек в адресном пространстве. Моя цель — создать среду выполнения для кода иностранного происхождения.

Я хотел бы создать поток без системных библиотек, всего несколько исполняемых страниц, где будет скопирован код пользователя и размещена точка входа в поток, а также несколько RW-страниц для стека и обмена данными с основным потоком.

Можно ли полностью отключить все системные библиотеки в Windows (или, возможно, Linux) из виртуальной памяти на уровне приложения?


person Sebi    schedule 21.04.2012    source источник
comment
Чего вы пытаетесь достичь? Как запретить коду выполнять системные вызовы самостоятельно? (без использования общих системных библиотек)   -  person mensi    schedule 21.04.2012
comment
Да, я хочу полностью отделить код от машины и дать ему доступ только к данной области памяти. Я совсем забыл о системных прерываниях... Это тоже проблема, и ее нужно как-то отключить.   -  person Sebi    schedule 21.04.2012


Ответы (2)


Отмена отображения системных библиотек не помешает двоичному файлу выполнять системные вызовы самостоятельно. Чтобы поймать все операции, которые вы пытаетесь предотвратить, необходима какая-то форма двоичной трансляции. Вы можете ознакомиться с libdetox и fastBT (Google Tech Talk о fastBT )

person mensi    schedule 21.04.2012

В зависимости от того, чего вы хотите достичь, может быть проще запустить сторонний код в пользовательском режиме Linux, qemu, VMware или другом решении для виртуализации (используя свежую копию виртуального жесткого диска для каждого запуска, не предоставляя никаких сетевых интерфейсов). , и т.д.).

person Daniel Roethlisberger    schedule 21.04.2012