awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
unicorn-engine avatar

unicorn-engine/unicorn

0
View on GitHub↗
9,076 stars·1,506 forks·C·GPL-2.0·6 viewswww.unicorn-engine.org↗

Unicorn

Unicorn is a multi-architecture CPU emulation framework and library that utilizes just-in-time compilation to execute instructions across various processor architectures, including ARM, x86, and RISC-V. It functions as both a JIT compilation engine and an instrumentation tool, allowing for the execution of machine code without the need for physical hardware.

The framework is distinguished by its hook-based execution instrumentation, which enables the interception of specific instructions and memory accesses to trigger custom callback functions. It provides a language-agnostic binding layer and community-maintained interfaces, allowing its emulation capabilities to be integrated into multiple high-level programming languages.

The system covers wide-ranging capabilities for software analysis, including fine-grained code instrumentation and virtual-to-physical address mapping. It manages execution performance through translation cache management and supports controlled execution via instruction-based timeouts.

Features

  • Instruction-Level Emulators - Simulates CPU behavior across multiple processor architectures for controlled software analysis and testing.
  • Just-In-Time Compilation - Utilizes just-in-time compilation to translate guest processor instructions into native host machine code for high-performance emulation.
  • Instrumentation & Hooking - Implements hooks to intercept instructions and memory accesses for runtime program analysis.
  • Instruction Hooking - Enables triggering custom code by hooking into specific instructions, memory reads, and memory writes.
  • CPU Core Implementations - Provides software implementations of processor architectures to run and test code without physical hardware.
  • CPU Model Configurations - Allows users to configure specific processor architectures and models to activate required system registers and instruction sets.
  • CPU Execution Instrumentation - Enables fine-grained tracking and analysis of program behavior by hooking into specific instructions and memory accesses.
  • Physical Address Mapping - Implements virtual-to-physical address mapping and custom fill hooks to manage guest memory translation.
  • Multi-Architecture Emulators - Supports ARM, x86, RISC-V, and other architectures for software analysis and testing without physical hardware.
  • JIT Compilation Engines - Integrates a JIT compilation engine to accelerate the execution of guest machine code.
  • Instruction Translation Layers - Translates guest processor instructions into native host machine code to enable high-performance cross-platform execution.
  • Instruction Translation Caches - Manages a cache of compiled code blocks with invalidation logic to ensure execution correctness.
  • Cross-Architecture Behavioral Analysis - Enables analyzing program behavior across multiple CPU types to identify platform-specific bugs.
  • CPU Emulation Frameworks - Provides the building blocks for creating specialized emulation tools by binding CPU execution to high-level languages.
  • Low-Level Debuggers - Provides low-level monitoring and modification of instruction execution and memory access during runtime.
  • CPU Emulation Libraries - Offers a set of interfaces for integrating multi-architecture CPU emulation into various programming languages.
  • Cross-Language Bindings Layers - Provides a standardized interface layer to expose core emulation logic to multiple high-level programming languages.
  • Language Bindings - Provides community-maintained interfaces that allow the emulation engine to be integrated into various high-level programming languages.
  • Pluggable Backends - Uses a common interface to support pluggable backend implementations for diverse CPU models.
  • Instruction Cache Invalidations - Allows clearing cached translated blocks to ensure instruction modifications or hooks are applied immediately during execution.
  • Dynamic Analysis and Debugging - Lightweight multi-platform CPU emulator for analysis.
  • Binary Analysis Platforms - CPU emulator framework for multi-architecture binary execution.
  • Binary Analysis Tools - CPU emulator framework for binary instrumentation and analysis.
  • Debugging - Lightweight multi-platform CPU emulator for analysis.
  • Debugging Tools - A lightweight multi-platform, multi-architecture CPU emulator.
  • Firmware Emulation Frameworks - Lightweight multi-platform, multi-architecture CPU emulator framework.

Star history

Star history chart for unicorn-engine/unicornStar history chart for unicorn-engine/unicorn

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does unicorn-engine/unicorn do?

Unicorn is a multi-architecture CPU emulation framework and library that utilizes just-in-time compilation to execute instructions across various processor architectures, including ARM, x86, and RISC-V. It functions as both a JIT compilation engine and an instrumentation tool, allowing for the execution of machine code without the need for physical hardware.

What are the main features of unicorn-engine/unicorn?

The main features of unicorn-engine/unicorn are: Instruction-Level Emulators, Just-In-Time Compilation, Instrumentation & Hooking, Instruction Hooking, CPU Core Implementations, CPU Model Configurations, CPU Execution Instrumentation, Physical Address Mapping.

What are some open-source alternatives to unicorn-engine/unicorn?

Open-source alternatives to unicorn-engine/unicorn include: jart/blink — Blink is a JIT-based instruction emulator and x86-64 Linux emulator designed to run Linux binaries and ELF files… jonathansalwan/triton — Triton is a dynamic binary analysis framework designed to automate reverse engineering. It functions as a… pwndbg/pwndbg — pwndbg is a GDB plugin and binary analysis framework designed for reverse engineering, exploit development, and… fex-emu/fex — FEX is an emulator that executes 32-bit and 64-bit x86 binaries on ARM64 hardware. It functions as a binary… bytecodealliance/wasmtime — Wasmtime is a WebAssembly runtime and sandboxed bytecode executor designed to run WebAssembly bytecode on a host… vivisect/vivisect — A combined disassembler/static analysis/symbolic execution/debugger framework.

Open-source alternatives to Unicorn

Similar open-source projects, ranked by how many features they share with Unicorn.
  • jart/blinkjart avatar

    jart/blink

    7,534View on GitHub↗

    Blink is a JIT-based instruction emulator and x86-64 Linux emulator designed to run Linux binaries and ELF files across different host operating systems and architectures. It functions as a binary execution sandbox and system call simulator, providing a controlled environment for running programs. The project distinguishes itself with a terminal user interface for monitoring execution, managing breakpoints, and visualizing JIT compilation paths. It supports self-modifying code through a cache-invalidating memory model and provides execution environment isolation using restricted directory ove

    C
    View on GitHub↗7,534
  • jonathansalwan/tritonJonathanSalwan avatar

    JonathanSalwan/Triton

    4,202View on GitHub↗

    Triton is a dynamic binary analysis framework designed to automate reverse engineering. It functions as a multi-architecture CPU emulator, an SMT-based symbolic execution engine, and a dynamic taint analysis tool. The framework translates raw machine instructions into abstract syntax trees, allowing it to represent binary program logic as a structured intermediate representation. This allows the system to map multiple hardware instruction sets to a single analysis framework and translate machine instructions into mathematical formulas for solving constraints. Its capabilities cover the simul

    C++
    View on GitHub↗4,202
  • pwndbg/pwndbgpwndbg avatar

    pwndbg/pwndbg

    10,051View on GitHub↗

    pwndbg is a GDB plugin and binary analysis framework designed for reverse engineering, exploit development, and low-level program analysis. It extends the core functionality of the debugger to provide advanced memory inspection and automation tools. The project distinguishes itself with specialized capabilities for heap analysis across glibc, jemalloc, and musl, as well as a comprehensive kernel debugging toolkit for inspecting Linux kernel tasks and slab allocators. It includes an integrated ROP gadget searcher for constructing exploit chains and an LLM-powered debugging assistant that provi

    Pythonbinary-ninjacapture-the-flagctf
    View on GitHub↗10,051
  • fex-emu/fexFEX-Emu avatar

    FEX-Emu/FEX

    6,896View on GitHub↗

    FEX is an emulator that executes 32-bit and 64-bit x86 binaries on ARM64 hardware. It functions as a binary translation framework that converts guest machine code into host instructions using a JIT compilation engine and a persistent code cache. The project features a Vulkan graphics wrapper that translates OpenGL and Vulkan API calls to native host drivers, enabling cross-architecture graphics rendering. It includes a dedicated root filesystem manager for downloading, mounting, and switching between compressed filesystem images required for guest application environments. The system provide

    C++arm64cppemulation
    View on GitHub↗6,896
See all 30 alternatives to Unicorn→