В работе были исследованы особенности создания защищенной программной среды для запуска «недоверенного» программного обеспечения (это могут быть как заведомо вредоносные программы, так и программы с неизвестной функциональностью), и создана программная реализация защищенной среды для операционных систем семейства WindowsNT.
Работа программы основана на следующих принципах. В операционной системе пользовательские процессы не имеют непосредственного доступа к оборудованию, объектам операционной системы, системным таблицам и т. д., так как эти операции являются потенциально опасными для безопасности и стабильности системы. Эта работа возложена на доверенный код самой операционной системы. Поэтому когда процессу необходимо, например, прочитать файл с диска, он обращается с соответствующим запросом к операционной системе. Эти запросы осуществляются через механизм системных вызовов (системных сервисов). Таким образом, для контроля над приложением достаточно контролировать выполнение его системных вызовов. Существует множество методов слежения за системными вызовами. В работе был использован способ замены адресов системных вызовов, являющихся функциями ядра операционной к истемы, в таблице системных вызовов, так как этот метод обеспечивает большую гибкость обработки системного вызова.
Разработанное программное обеспечение предоставляет следующие возможности:
- отслеживание потенциально опасных действий исследуемого приложения;
- получение детальной информации о выполняемых приложением действиях;
- контроль над системными операциями приложения:
- запрет операций,
- модификация передаваемых приложением параметров (может и шенить суть выполняемой операции),
- модификация возвращаемых приложению данных;
- протоколирование действий приложения.
Разработанное программное обеспечение позволяет исследовать приложения на более высоком уровне абстракции, чем отладчики. Появляется возможность работать на уровне интерфейса операционной системы (системные вызовы), а не на уровне интерфейса процессора (машинные команды). Это может бьггь полезным, когда необходимо следить за операциями над системными ресурсами (файлами, сетевыми соединениями, процессами, системными таблицами и т. д.), и при этом не важны операции над конкретными регистрами и ячейками памяти.