Назад к обновлениям
UpdatedAug 31, 2026

sogen — Updated!

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

Поделиться


inspect.software score badge for momo5502/sogen

Sogen запускает программы Windows и Linux без реальной операционной системы и позволяет видеть и контролировать всё, что они делают.

Вместо повторной реализации тысяч OS API, Sogen эмулирует бинарные файлы на уровне CPU и системных вызовов и запускает настоящие системные DLL, поэтому поведение максимально близко к реальной ОС.

Каждая инструкция, обращение к памяти и вызов API могут быть перехвачены, проверены или переписаны, запуски полностью детерминированы, а всё состояние эмулятора может быть сохранено в снимок и восстановлено.

Написан на C++ и работает на выбранном вами CPU-бэкенде:

Попробуйте: sogen.dev
 

Ключевые возможности

  • Настоящие системные DLL: запускает реальные ntdll, kernel32 и user32, а не переписанные заглушки
  • Перехват и перезапись: перехватывайте и изменяйте память, инструкции, системные вызовы и вызовы API
  • Точная внутренняя реализация Windows: загрузка PE (релокации, TLS), типы памяти Windows, SEH, потоки, реестр, файловая система и сеть
  • Снимок и восстановление: полная сериализация состояния, быстрые снимки в памяти и загрузка minidump
  • Работает везде: Windows, Linux, macOS, Android, iOS и браузер, на x86-64 и arm64
  • Детерминированность: каждый запуск воспроизводим, вплоть до инструкции
     

Предпросмотр

Preview

Необнаруживаемая отладка

Отлаживайте с помощью уже знакомых вам инструментов, таких как IDA Pro или GDB, по протоколу GDB, или используйте встроенный отладчик в браузере.
Отладчик работает на уровне эмулятора, вне процесса, поэтому остаётся невидимым для проверок анти-отладки.

Debugging a process running in Sogen from an IDA Pro remote GDB session  

Запуск игр в песочнице

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

A game running inside the Sogen emulator  

Обзор проекта

YouTube Video

Нажмите здесь, чтобы посмотреть слайды.
 

Привязки Python

Установка:

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 доступны в отдельном репозитории.
 

Быстрый старт (Windows + Visual Studio)

[!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

Категории