Инструмент для запуска программ для Linux x86_64 в специальной, герметично изолированной «песочнице», чтобы контролировать их выполнение. Hermit преобразует обычное недетерминированное поведение в детерминированное, воспроизводимое.
Его можно использовать для различных целей, в том числе для отладки с воспроизведением, создания воспроизводимых артефактов, тестирования параллелизма в режиме хаоса и анализа ошибок.
Архитектура состоит из трех основных уровней:
➡️hermit интерфейс командной строки проверяет конфигурацию и создает гостевые пространства имен, монтирования, окружение и дерево процессов.
➡️Reverie использует перехват с помощью ptrace и seccomp для остановки и возобновления работы гостевой системы в зависимости от подписанных системных вызовов и событий процессора.
➡️Detcore применяет детерминированную политику: виртуализирует выбранные результаты, сериализует потоки, моделирует ресурсы и логическое время, а также записывает или воспроизводит внешние входные данные.
Установка
⬇️Для установки клонируйте репозиторий и установите интерфейс командной строки в двоичный каталог Cargo, обычно ~/.cargo/bin:
git clone https://github.com/facebookexperimental/hermit.git
cd hermit
cargo install --path hermit-cli
hermit --version
Использование
1️⃣Режим по умолчанию и рекомендуемый режим (детерминированное выполнение)
hermit run -- PROGRAM ARGS2️⃣Проверка воспроизводимости (сравнение выходных данных, статуса и детерминированных журналов)
hermit run --verify -- PROGRAM3️⃣Тестирование различных расписаний потоков
hermit run --chaos --sched-seed=N -- PROGRAM4️⃣Запись выполнения
hermit record start -- PROGRAM ARGS5️⃣Поиск ошибок параллельной обработки (может запускать гостевую систему несколько раз)
hermit analyze --search -- PROGRAM#tools #pentest #reverse #sandbox
🔗 Все наши каналы 🔁 Все наши чаты 🪧 Для связи с менеджером
