
🪅 Émulateur d'espace utilisateur Windows & Linux
Sogen exécute des programmes Windows et Linux sans véritable système d'exploitation, et vous permet de voir et de contrôler tout ce qu'ils font.
Au lieu de réimplémenter des milliers d'API système, Sogen émule les binaires au niveau du CPU et des appels système et exécute les véritables DLL système, de sorte que le comportement correspond étroitement à celui du véritable système d'exploitation.
Chaque instruction, accès mémoire et appel API peut être intercepté, inspecté ou réécrit, les exécutions sont entièrement déterministes, et l'état complet de l'émulateur peut être sauvegardé et restauré.
Développé en C++ et propulsé par le backend CPU de votre choix :
Essayez-le : sogen.dev
Déboguez avec les outils que vous connaissez déjà, comme IDA Pro ou GDB, via le protocole GDB, ou utilisez le débogueur intégré au navigateur.
Le débogueur s'exécute au niveau de l'émulateur, en dehors du processus, il reste donc invisible aux contrôles anti-débogage.

Les applications GUI natives s'exécutent, avec des fenêtres, des boîtes de dialogue et des contrôles fonctionnels.
La paravirtualisation GPU permet l'accélération 3D sur votre véritable GPU, tandis que le backend Hyper-V exécute le code nativement sur votre CPU. Assez rapide pour les jeux.
Les titres Direct3D 8/9/10/11 s'exécutent via DXVK, qui traduit Direct3D en Vulkan par-dessus le pont GPU.

Cliquez ici pour les diapositives.
Installez avec :
pip install sogen
Les liaisons Python nécessitent une racine d'émulation. Vous pouvez télécharger une racine prête à l'emploi ici, ou créer la vôtre en suivant les instructions du wiki.
Exemple :
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)
Consultez examples/python/README.md pour les détails de configuration et un exemple plus complet.
Des liaisons Dart sont disponibles dans un dépôt séparé.
[!TIP]
Consultez le Wiki pour plus de détails sur la façon de compiler et d'exécuter l'émulateur sur Windows, Linux, macOS, ...
1. Récupérez le code :
git clone --recurse-submodules https://github.com/momo5502/sogen.git
2. Exécutez la commande suivante dans une invite de commandes de développement x64 dans le répertoire cloné :
cmake --preset=vs2022
3. Compilez la solution générée dans build/vs2022/sogen.sln
4. Créez un dump du registre en exécutant le grab-registry.bat en tant qu'administrateur et placez-le dans le dossier des artefacts à côté de l'analyzer.exe
5. Exécutez le programme de votre choix :
analyzer.exe C:\example.exe