Sogen 无需真实操作系统即可运行 Windows 和 Linux 程序,并让您查看和控制它们所做的一切。
Sogen 并非重新实现数千个操作系统 API,而是在 CPU 和系统调用层面模拟二进制文件,并运行真实的系统 DLL,因此行为与真实操作系统高度一致。
每条指令、每次内存访问和 API 调用都可以被挂钩、检查或重写,运行完全确定性,整个模拟器状态可以快照和恢复。
使用 C++ 构建,并由您选择的 CPU 后端驱动:
立即试用:sogen.dev
使用您已经熟悉的工具(如 IDA Pro 或 GDB)通过 GDB 协议进行调试,或使用内置的浏览器内调试器。
调试器在模拟器层面运行,位于进程之外,因此对反调试检查保持不可见。
原生 GUI 应用可以运行,具有可用的窗口、对话框和控件。
GPU 半虚拟化可在您的真实 GPU 上实现 3D 加速,而 Hyper-V 后端则在您的 CPU 上原生运行代码。速度足以运行游戏。
Direct3D 8/9/10/11 游戏通过 DXVK 运行,该工具在 GPU 桥接之上将 Direct3D 转换为 Vulkan。
点击此处查看幻灯片。
安装方式:
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 旁边的 artifacts 文件夹中
5. 运行您选择的程序:
analyzer.exe C:\example.exe