Разработчики из компании Cisco представили проект PyREBox, в рамках которого подготовлено окружение для обратного инжиниринга и наблюдения за поведением вредоносного ПО. PyREBox представляет собой надстройку над QEMU, снабжённую дополнительными средствами для инспектирования содержимого памяти, отладки и динамического анализа работы системы и приложений. Код распространяется под лицензией GPLv2.
В отличие от традиционных отладчиков, работающих в одном системном окружении с проверяемым приложением, PyREBox полностью отделён от изучаемого окружения и позволяет наблюдать с ним со стороны, при необходимости вмешиваясь в его работу. PyREBox создаёт эмулируемое окружение для всей системы, предлагая простой интерфейс для наблюдения за этим окружением, не требуя установки особых драйверов или агентов, а работая непосредственно на уровне эмулятора и предоставляемого им API VMI (Virtual Machine Introspection). В настоящее время возможно создание окружений i386 и x86_64, но в планах намечена поддержка ARM, MIPS, PowerPC и других архитектур.
Интерфейс для управления и отладкой построен на базе интерактивной оболочки IPython. Исследователю предоставляется полный набор команд для инспектирования и модификации состояния работающей виртуальной машины. В том числе можно на лету изменять содержимое областей памяти и регистров CPU. Имеются гибкие средства автоматизации, основанные на подключении сценариев на языке Python. При этом компоненты PyREBox выполнены как надстройка над QEMU, но не пересекаются с QEMU, что даёт возможность быстро адаптировать продукт к новым выпускам QEMU, не утруждая себя ведением собственного форка.
Поддерживается интеграция с пакетом криминалистического анализа Volatility и подключения плагинов от него. Также можно подключать собственные плагины с дополнительными обработчиками или привязывать Python-скрипты к определённым событиям, например, скрипт может быть вызван перед выполнением определённой процессорной инструкции, при обращении приложения к заданной области памяти, создании/завершении процессов, переключении контекста, промахах TLB, событиях от сетевого интерфейса и клавиатуры. Для снижения задержек из-за вызова Python-кода предлагается использовать систему триггеров на C/С++, которые решают задачу первичной фильтрации и передают управление Python-скриптам только при необходимости.