À propos du projet

Sogen est un émulateur en espace utilisateur qui exécute des programmes Windows et Linux sans système d'exploitation réel, offrant une visibilité et un contrôle complets sur leur exécution. Au lieu de réimplémenter les API du système d'exploitation, il émule les binaires au niveau du CPU et des appels système tout en exécutant les DLL système réelles (par exemple, ntdll, kernel32, user32), garantissant un comportement très proche d'un vrai système d'exploitation. Les capacités clés incluent : - **Vraies DLL système** : Utilise de véritables bibliothèques système Windows plutôt que des stubs. - **Hook et réécriture** : Intercepte et modifie la mémoire, les instructions, les appels système et les appels API. - **Internes fidèles** : Prend en charge le chargement PE (relocalisations, TLS), les types de mémoire Windows, SEH, le threading, le registre, le système de fichiers et la mise en réseau. - **Snapshot et restauration** : Sérialisation complète de l'état, snapshots rapides en mémoire et chargement de minidumps. - **Multiplateforme** : Fonctionne sur Windows, Linux, macOS, Android, iOS et navigateurs, prenant en charge x86-64 et arm64. - **Exécution déterministe** : Exécutions reproductibles jusqu'aux instructions individuelles. Il offre plusieurs backends CPU : Unicorn Engine, icicle-emu, Hyper-V (WHP), KVM et FEX. Le débogage est possible via le protocole GDB (par exemple, avec IDA Pro) ou un débogueur intégré au navigateur, fonctionnant au niveau de l'émulateur pour rester invisible aux vérifications anti-débogage. Les applications GUI natives et les jeux peuvent s'exécuter dans un bac à sable, avec paravirtualisation GPU pour l'accélération 3D et prise en charge de Direct3D 8/9/10/11 via la traduction DXVK vers Vulkan. Des liaisons Python sont disponibles via `pip install sogen`, nécessitant une racine d'émulation (téléchargeable ou auto-créée). Des liaisons Dart non officielles existent dans un dépôt séparé. Le projet est construit en C++ et comprend un guide de démarrage rapide pour Windows avec Visual Studio, impliquant le clonage avec sous-modules, un préréglage CMake, la compilation et la création d'un dump de registre pour analyse.