
sogen — Mis à jour !
🪅 É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
Fonctionnalités clés
- Véritables DLL système : exécute les vrais ntdll, kernel32 et user32, pas des stubs réimplémentés
- Interception et réécriture : interceptez et modifiez la mémoire, les instructions, les appels système et les appels API
- Internes Windows fidèles : chargement PE (relocalisations, TLS), types de mémoire Windows, SEH, threading, registre, système de fichiers et réseau
- Sauvegarde et restauration : sérialisation complète de l'état, sauvegardes rapides en mémoire et chargement de minidumps
- Fonctionne partout : Windows, Linux, macOS, Android, iOS et le navigateur, sur x86-64 et arm64
- Déterministe : chaque exécution est reproductible, jusqu'à l'instruction
Aperçu
Débogage indétectable
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.
Exécutez des jeux dans un bac à sable
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.
Présentation du projet
Cliquez ici pour les diapositives.
Liaisons Python
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.
Liaisons non officielles
Des liaisons Dart sont disponibles dans un dépôt séparé.
Démarrage rapide (Windows + Visual Studio)
[!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
