Emulador de espaço do usuário do Windows
Um emulador de processo do Windows de alto desempenho que opera no nível do SYSCALL, fornecendo controle total sobre a execução do processo por meio de recursos abrangentes de compra.
Construído em C ++ e alimentado pelo motor unicórnio.
Principais recursos
- Emulação no nível do Syscall
- Em vez de reimplementar as APIs do Windows, o emulador opera no nível Syscall, permitindo que ele alavancasse as DLLs do sistema existente
- Gerenciamento avançado de memória
- Suporta tipos de memória específicos do Windows, incluindo reservado, comprometido, construído sobre o gerenciamento de memória do Unicorn
- ? Carregamento completo de PE
- Lida com o carregamento executável e DLL com mapeamento adequado de memória, realocações e TLS
- ⚡ Manuseio de exceção
- Implementa o manuseio de exceção estruturada do Windows (SEH) com despachante de exceção adequado e suporte desenrolado
- ? Suporte de encadeamento
- Fornece um modelo de rosqueamento programado (redondo-robin)
- ? Gerenciamento do Estado
- Suporta a serialização de estado total e os instantâneos rápidos da memória
- Interface de depuração
- Implementa o protocolo serial do GDB para integração com ferramentas de depuração comuns (IDA Pro, GDB, LLDB, vs Code, ...)
Perfeito para pesquisa de segurança, análise de malware e pesquisa de DRM, onde é necessária controle de granulação fina sobre a execução do processo.
Observação
O projeto ainda está em um estado de prototipia muito cedo. O código ainda precisa de muita limpeza e muitos recursos e syscalls precisam ser implementados. No entanto, o progresso constante está sendo feito :)
Visualização

Visão geral do YouTube

Clique aqui para os slides.
Construir instruções
Pré -requisitos
- Windows de 64 bits (consulte a edição 17 para obter o status de plataforma cruzada)
- Cmake
- Git
Começando
Clone o repositório com submódulos:
git clone https://github.com/momo5502/emulator.git
cd emulator
git submodule update --init --recursive
Execute os seguintes comandos em um prompt de comando de desenvolvimento X64
Visual Studio 2022
A solução será gerada em build/vs2022/emulator.sln
Ninja
Debug Build:
cmake --workflow --preset=debug
Lançamento Build:
cmake --workflow --preset=release
Testes de execução
O projeto usa o CTEST para teste. Escolha o seu método preferido:
Visual Studio:
- Construa o alvo
RUN_TESTS
Ninja:
cd build/release # or build/debug
ctest