返回更新列表
已更新Aug 31, 2026

sogen — 已更新!

🪅 Windows 与 Linux 用户空间模拟器

分享


inspect.software score badge for momo5502/sogen

Sogen 无需真实操作系统即可运行 Windows 和 Linux 程序,并让您查看和控制它们所做的一切。

Sogen 并非重新实现数千个操作系统 API,而是在 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 半虚拟化可在您的真实 GPU 上实现 3D 加速,而 Hyper-V 后端则在您的 CPU 上原生运行代码。速度足以运行游戏。
Direct3D 8/9/10/11 游戏通过 DXVK 运行,该工具在 GPU 桥接之上将 Direct3D 转换为 Vulkan。

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 旁边的 artifacts 文件夹中

5. 运行您选择的程序:

analyzer.exe C:\example.exe

分类