Torna agli aggiornamenti
UpdatedAug 31, 2026

sogen — Updated!

🪅 Emulatore userspace per Windows e Linux

Condividi


inspect.software score badge for momo5502/sogen

Sogen esegue programmi Windows e Linux senza un vero sistema operativo e ti permette di vedere e controllare tutto ciò che fanno.

Invece di reimplementare migliaia di API di sistema, Sogen emula i binari a livello di CPU e syscall ed esegue le vere DLL di sistema, così il comportamento corrisponde fedelmente al sistema operativo reale.

Ogni istruzione, accesso alla memoria e chiamata API può essere agganciato, ispezionato o riscritto, le esecuzioni sono completamente deterministiche e l'intero stato dell'emulatore può essere salvato e ripristinato tramite snapshot.

Scritto in C++ e alimentato dal backend CPU di tua scelta:

Provalo: sogen.dev
 

Caratteristiche Principali

  • Vere DLL di sistema: esegue le reali ntdll, kernel32 e user32, non stub reimplementati
  • Hook e riscrittura: intercetta e modifica memoria, istruzioni, syscall e chiamate API
  • Internals Windows fedeli: caricamento PE (relocazioni, TLS), tipi di memoria Windows, SEH, threading, registro di sistema, filesystem e rete
  • Snapshot e ripristino: serializzazione completa dello stato, snapshot rapidi in memoria e caricamento di minidump
  • Funziona ovunque: Windows, Linux, macOS, Android, iOS e browser, su x86-64 e arm64
  • Deterministico: ogni esecuzione è riproducibile, fino alla singola istruzione
     

Anteprima

Anteprima

Debug Indistinguibile

Esegui il debug con gli strumenti che già conosci, come IDA Pro o GDB, tramite il protocollo GDB, oppure usa il debugger integrato nel browser.
Il debugger opera a livello di emulatore, all'esterno del processo, quindi rimane invisibile ai controlli anti-debug.

Debug di un processo in esecuzione in Sogen da una sessione GDB remota di IDA Pro  

Esegui Giochi in una Sandbox

Le app GUI native funzionano, con finestre, finestre di dialogo e controlli operativi.
La paravirtualizzazione GPU abilita l'accelerazione 3D sulla tua GPU reale, mentre il backend Hyper-V esegue il codice nativamente sulla tua CPU. Abbastanza veloce per i giochi.
I titoli Direct3D 8/9/10/11 funzionano tramite DXVK, che traduce Direct3D in Vulkan sopra il ponte GPU.

Un gioco in esecuzione all'interno dell'emulatore Sogen  

Panoramica del Progetto

Video YouTube

Clicca qui per le slide.
 

Binding Python

Installa con:

pip install sogen

I binding Python richiedono una root di emulazione. Puoi scaricare una root già pronta qui, oppure crearne una tua seguendo le istruzioni nella wiki.

Esempio:

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)

Consulta examples/python/README.md per i dettagli di configurazione e un esempio più ampio.
 

Binding Non Ufficiali

I binding Dart sono disponibili in un repository separato.
 

Avvio Rapido (Windows + Visual Studio)

[!TIP]
Consulta la Wiki per maggiori dettagli su come compilare ed eseguire l'emulatore su Windows, Linux, macOS, ...

1. Scarica il codice:

git clone --recurse-submodules https://github.com/momo5502/sogen.git

2. Esegui il seguente comando in un Prompt dei comandi per sviluppatori x64 nella directory clonata:

cmake --preset=vs2022

3. Compila la soluzione generata in build/vs2022/sogen.sln

4. Crea un dump del registro eseguendo grab-registry.bat come amministratore e posizionalo nella cartella degli artefatti accanto a analyzer.exe

5. Esegui il programma di tua scelta:

analyzer.exe C:\example.exe

Categorie