- Статус
- Оффлайн
- Регистрация
- 13 Фев 2026
- Сообщения
- 682
- Реакции
- 18
Нашел на гитхабе любопытный проект — guardian-rs. Это виртуализатор кода для x86-64, написанный на Rust. Для тех, кто копает в сторону разработки собственных протектов и обфускации, — мастхэв к ознакомлению.
По сути, перед нами база для создания протектора. Софт умеет вытягивать функции из бинарника (при наличии .map файла) и переводить их выполнение под управление виртуальной машины.
Особенности обфускатора:
Техническая часть VM:
Сурс проекта для изучения:
Интересно, насколько легко эта поделка поддается девиртуализации через стандартные тулзы, если не расширять кастомный маппинг инструкций.
По сути, перед нами база для создания протектора. Софт умеет вытягивать функции из бинарника (при наличии .map файла) и переводить их выполнение под управление виртуальной машины.
Особенности обфускатора:
- Виртуализация функций на основе .map файлов.
- Внедрение .text секции VM прямо в целевой бинарник.
- Архитектура позволяет легко расширять набор поддерживаемых инструкций.
Техническая часть VM:
- Обработка неподдерживаемых инструкций через механизм vmexit и reenter (релокация и выполнение).
- Полное сохранение контекста: сохраняются GPRs, RFlags и XMM регистры.
- Стек-ориентированная архитектура с динамическим выделением виртуального стека.
- Изолированный CPU стек для защиты от повреждения данных при выполнении виртуализированного кода.
- Ручной расчет RFLAGs (автор не использует pushfq).
- Сборка в формате PIE (Position Independent Executable).
Стоит учитывать, что условные переходы (Conditional Jumps) на данный момент реализованы не полностью. Для серьезных проектов придется допиливать логику ветвления руками, но как каркас для реверса и обучения — проект крайне полезный.
Сурс проекта для изучения:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Интересно, насколько легко эта поделка поддается девиртуализации через стандартные тулзы, если не расширять кастомный маппинг инструкций.