unicorn-engine/unicorn

Unicorn CPU emulator framework (ARM, AArch64, M68K, Mips, Sparc, PowerPC, RiscV, S390x, TriCore, X86)

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 34 minutes ago
Added to GitGenius on September 7th, 2026
Created on August 20th, 2015
Open Issues & Pull Requests: 215 (+0)
GitHub issues: Enabled
Number of forks: 1,534
Total Stargazers: 9,307 (+0)
Total Subscribers: 209 (+0)

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Issue API getrepoissuespagesummary failed: 429 Rate limit exceeded. Please try again later.

Detailed Description

Unicorn Engine is a lightweight, multi-platform CPU emulator framework that enables execution of machine code across multiple processor architectures without running the actual hardware.

The tool solves the problem of needing to execute and analyze binary code from different CPU architectures in a controlled, instrumented environment. It builds on QEMU's emulation capabilities but provides a simplified, architecture-neutral API designed for programmatic use. Rather than emulating complete systems, Unicorn focuses on emulating just the CPU, making it faster and easier to integrate into analysis tools. The framework supports ARM, ARM64, M68K, MIPS, PowerPC, RISC-V, SPARC, S390X, TriCore, and X86 variants, with just-in-time compilation for high performance and fine-grained instrumentation hooks at various execution levels.

Unicorn suits security researchers, reverse engineers, and developers building dynamic analysis tools who need to execute untrusted or foreign binaries safely. It is particularly valuable for malware analysis, vulnerability research, and emulation-based testing where you need to run code snippets or full programs from different architectures without the overhead of full system emulation. The project provides bindings for numerous languages including Python, Rust, Go, Java, and others, making it accessible across different development environments. Its thread-safe design and pure C implementation enable embedding in larger applications.

The project actively seeks contributors and maintains a structured issue tracker and milestone system for planned work. Pull requests are directed to a dedicated development branch, indicating organized release management. The maintainers operate public communication channels including a mailing list and messaging group for user support and feedback.