
🪅 Эмулятор userspace для Windows и Linux

Sogen запускает программы Windows и Linux без реальной операционной системы и позволяет видеть и контролировать всё, что они делают.
Вместо повторной реализации тысяч OS API, Sogen эмулирует бинарные файлы на уровне CPU и системных вызовов и запускает настоящие системные DLL, поэтому поведение максимально близко к реальной ОС.
Каждая инструкция, обращение к памяти и вызов API могут быть перехвачены, проверены или переписаны, запуски полностью детерминированы, а всё состояние эмулятора может быть сохранено в снимок и восстановлено.
Написан на C++ и работает на выбранном вами CPU-бэкенде:
Попробуйте: sogen.dev
Отлаживайте с помощью уже знакомых вам инструментов, таких как IDA Pro или GDB, по протоколу GDB, или используйте встроенный отладчик в браузере.
Отладчик работает на уровне эмулятора, вне процесса, поэтому остаётся невидимым для проверок анти-отладки.

Нативные GUI-приложения работают с рабочими окнами, диалогами и элементами управления.
Паравиртуализация GPU обеспечивает 3D-ускорение на вашем реальном GPU, а бэкенд Hyper-V выполняет код нативно на вашем CPU. Достаточно быстро для игр.
Проекты Direct3D 8/9/10/11 запускаются через DXVK, который транслирует Direct3D в Vulkan поверх GPU-моста.

Нажмите здесь, чтобы посмотреть слайды.
Установка:
pip install sogen
Привязки Python требуют корень эмуляции. Вы можете скачать готовый корень здесь или создать свой, следуя инструкциям в вики.
Пример:
import sogen
emu = sogen.windows.create_application("c:/test-sample.exe", emulation_root="./root")
def on_module_load(module):
if module.name.lower() == "test-sample.exe":
emu.hooks.memory_execution_at(module.entry_point, lambda address: print(f"hit entry point: 0x{address:x}"))
emu.callbacks.on_module_load = on_module_load
emu.start()
print(emu.process.exit_status)
См. examples/python/README.md для деталей настройки и более крупного примера.
Привязки Dart доступны в отдельном репозитории.
[!TIP]
Загляните в Вики для получения дополнительных сведений о сборке и запуске эмулятора на Windows, Linux, macOS, ...
1. Клонируйте код:
git clone --recurse-submodules https://github.com/momo5502/sogen.git
2. Выполните следующую команду в командной строке разработчика x64 в клонированном каталоге:
cmake --preset=vs2022
3. Соберите решение, созданное в build/vs2022/sogen.sln
4. Создайте дамп реестра, запустив grab-registry.bat от имени администратора, и поместите его в папку артефактов рядом с analyzer.exe
5. Запустите программу по вашему выбору:
analyzer.exe C:\example.exe