Émulateur d'espace utilisateur Windows
Un émulateur de processus Windows haute performance qui fonctionne au niveau syscall, offrant un contrôle total sur l'exécution des processus grâce à des capacités de crochet complètes.
Construit en C ++ et alimenté par le moteur de la licorne.
Caractéristiques clés
- Émulation au niveau du système
- Au lieu de réimplémenter les API de Windows, l'émulateur fonctionne au niveau syscall, ce qui lui permet de tirer parti des DLL système existantes
- Gestion avancée de la mémoire
- Prend en charge les types de mémoire spécifiques à Windows, y compris réservé, engagé, construit au-dessus de la gestion de la mémoire d'Unicorn
- ? Chargement PE complet
- Gère le chargement exécutable et DLL avec une cartographie de mémoire appropriée, des relocations et des TL
- ⚡ Gestion des exceptions
- Implémente la gestion des exceptions structurées Windows (SEH) avec un répartiteur d'exception approprié et un support de détente
- ? Support de filetage
- Fournit un modèle de filetage prévu (à la ronde)
- ? Gestion de l'État
- Prend en charge la sérialisation de l'état complet et les instantanés rapides en mémoire
- Interface de débogage
- Implémente le protocole de série GDB pour l'intégration avec des outils de débogage communs (IDA Pro, GDB, LLDB, vs code, ...)
Parfait pour la recherche sur la sécurité, l'analyse des logiciels malveillants et la recherche DRM où un contrôle à grains fins sur l'exécution des processus est nécessaire.
Note
Le projet est encore dans un état de prototypie très tôt. Le code a encore besoin de beaucoup de nettoyage et de nombreuses fonctionnalités et systèmes doivent être implémentés. Cependant, des progrès constants sont en cours :)
Prévisualisation

Présentation de YouTube

Cliquez ici pour les diapositives.
Construire des instructions
Condition préalable
- Windows 64 bits (voir le numéro 17 pour l'état de plate-forme multiplié)
- Cmake
- Git
Commencer
Clone le référentiel avec des sous-modules:
git clone https://github.com/momo5502/emulator.git
cd emulator
git submodule update --init --recursive
Exécutez les commandes suivantes dans une invite de commande de développement x64
Visual Studio 2022
La solution sera générée à build/vs2022/emulator.sln
Ninja
Build de débogage:
cmake --workflow --preset=debug
Version de libération:
cmake --workflow --preset=release
Tests en cours d'exécution
Le projet utilise CTEST pour les tests. Choisissez votre méthode préférée:
Visual Studio:
- Construisez la cible
RUN_TESTS
Ninja:
cd build/release # or build/debug
ctest