Simulador de CPU RISC-V basado en Qt para enseñar arquitectura de computadoras, con una versión WebAssembly que se ejecuta en el navegador.
unicorn-engine/unicorn
Framework ligero de emulación de CPU basado en QEMU que ejecuta código máquina de varias arquitecturas mediante una API clara e independiente de la arquitectura.
- Estrellas
- 9,535
- Forks
- 1,585
- Issues abiertos
- 237
- Último commit
- hace 19 días
¿Qué es?
Unicorn es un framework de emulación de CPU basado en QEMU. Permite que un programa cargue y ejecute código máquina para arquitecturas como ARM, ARM64, M68K, MIPS, PowerPC, RISC-V, SPARC, S390X, TriCore y X86 (16, 32 y 64 bits), sin necesidad de ejecutar un sistema operativo completo ni de usar hardware físico.
El framework ofrece una única API independiente de la arquitectura, por lo que el mismo código para configurar registros, asignar memoria y ejecutar instrucciones funciona en todas las CPU compatibles. Está implementado en C y cuenta con bindings para muchos lenguajes, como Python, Rust, Go, Java, .NET, Ruby y Lua. Funciona en Windows y en sistemas *nix como Linux, macOS, Android y los BSD.
Unicorn usa compilación just-in-time para ofrecer un buen rendimiento y proporciona hooks para instrumentación detallada en distintos niveles. Se distribuye bajo la licencia GPLv2.
Funciones clave
- 01Emula CPU ARM, ARM64, M68K, MIPS, PowerPC, RISC-V, SPARC, S390X, TriCore y X86.
- 02Ofrece una API clara e independiente de la arquitectura, común a todas las CPU compatibles.
- 03Incluye bindings para Python, Rust, Go, Java, .NET y muchos otros lenguajes.
- 04Usa compilación just-in-time para aumentar la velocidad de ejecución.
- 05Admite hooks de instrumentación detallada durante la emulación.
Casos de uso
- Analizar o hacer ingeniería inversa de código máquina para varias arquitecturas de CPU.
- Aplicar fuzzing a binarios ejecutando código en un entorno emulado y controlado.
- Probar firmware o código para sistemas embebidos sin hardware físico.
- Crear herramientas personalizadas que necesiten ejecutar instrucciones con instrumentación.
Inicio rápido
- 1
Lee la guía de compilación e instalación de docs/COMPILE.md
- 2
Instala los bindings de Python desde PyPI
pip install unicorn
Antes de usarlo
- Está bajo la licencia GPLv2, una licencia copyleft que puede restringir su uso en software propietario.
- El README no ofrece una opción de instalación precompilada para otros lenguajes aparte de la guía de compilación mencionada.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es unicorn?
- Framework ligero de emulación de CPU basado en QEMU que ejecuta código máquina de varias arquitecturas mediante una API clara e independiente de la arquitectura. Unicorn es un framework de emulación de CPU basado en QEMU. Permite que un programa cargue y ejecute código máquina para arquitecturas como ARM, ARM64, M68K, MIPS, PowerPC, RISC-V, SPARC, S390X, TriCore y X86 (16, 32 y 64 bits), sin necesidad de ejecutar un sistema operativo completo ni de usar hardware físico.
- ¿unicorn es gratuito? ¿Qué licencia tiene?
- unicorn es open source bajo la licencia GPL-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿unicorn sigue mantenido?
- Mantenimiento activo. El último commit de unicorn fue el 18 oct 2026.
- ¿Para qué puedo usar unicorn?
- Analizar o hacer ingeniería inversa de código máquina para varias arquitecturas de CPU. Aplicar fuzzing a binarios ejecutando código en un entorno emulado y controlado. Probar firmware o código para sistemas embebidos sin hardware físico. Crear herramientas personalizadas que necesiten ejecutar instrucciones con instrumentación.
- ¿Cómo se instala unicorn?
- Lee la guía de compilación e instalación de docs/COMPILE.md Instala los bindings de Python desde PyPI: pip install unicorn
- ¿Dónde consigo unicorn?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/unicorn-engine/unicorn
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Un pequeño modelo de lenguaje a nivel de caracteres que se ejecuta en un sector de arranque x86 de 512 bytes y genera registros de arranque de Linux ficticios en modo real.
Un emulador de PC x86 que se ejecuta en el navegador y traduce código máquina a WebAssembly en tiempo de ejecución para iniciar sistemas operativos reales.
Una shell de Linux para iOS que ejecuta programas x86 de espacio de usuario mediante emulación y traducción de llamadas al sistema, sin necesidad de jailbreak.
Un emulador x86 de bajo nivel que ejecuta sistemas operativos y software antiguos para IBM PC y máquinas compatibles desde 1981.
Una app para Mac que ejecuta el escritorio Linux estándar de Omarchy en una máquina virtual integrada con macOS en Apple Silicon.