{"adoption": {"forks": 1532, "observed_at": "2026-08-28T04:10:29.161545+00:00", "stars": 9268}, "canonical_url": "https://ross.abutalabs.com/products/unicorn", "card": {"archived": false, "artifact_type": "library", "description": "Unicorn CPU emulator framework (ARM, AArch64, M68K, Mips, Sparc, PowerPC, RiscV, S390x, TriCore, X86)", "domain": ["security", "reverse-engineering", "developer-tools", "simulation"], "enriched": true, "function": ["simulation", "security", "reverse-engineering", "developer-tools"], "health_score": 92, "homepage": "http://www.unicorn-engine.org", "language": "C", "license": "GPL-2.0", "license_family": "copyleft", "maturity": "stable", "member_repos": ["unicorn-engine/unicorn"], "name": "unicorn-engine/unicorn", "platform": ["windows", "cross-platform", "python", "go", "rust", "jvm", "dotnet", "cpp", "c"], "pushed_at": "2026-07-30T16:17:57+00:00", "repo": "unicorn-engine/unicorn", "stars": 9268, "tags": ["cpu-emulator", "qemu-based", "jit", "instrumentation", "multi-architecture", "arm", "x86", "mips", "riscv", "fuzzing-support", "linux", "macos"], "topics": ["emulator", "framework", "cpu", "arm", "arm64", "mips", "m68k", "sparc", "x86", "x86-64", "security", "reverse-engineering", "riscv", "powerpc", "s390x", "systemz", "tricore", "cpu-emulator"], "urls": [], "use_cases": ["emulate raw machine code without an OS or executable context", "build malware analysis and reverse-engineering tools", "fuzz firmware and binary code across CPU architectures", "instrument CPU execution and memory accesses with custom hooks", "emulate ARM or x86 shellcode in a security research script", "run multiple emulated CPU architectures concurrently in one process"], "what_it_is": "Unicorn is a lightweight, multi-architecture CPU emulator framework based on QEMU, supporting ARM, ARM64, M68K, MIPS, PowerPC, RISC-V, SPARC, S390x, TriCore, and x86. It provides a clean architecture-neutral C API with bindings for many languages, JIT-based high performance, and fine-grained instrumentation hooks.", "when_to_avoid": ["you need to run a full operating system or emulate devices/peripherals - use QEMU instead", "you need a ready-made emulator application rather than an embeddable library", "you require a permissive license - Unicorn is GPLv2"], "when_to_choose": ["you need to emulate CPU instructions from raw binary code without a full system image", "you need multi-architecture support behind one architecture-neutral API", "you need dynamic instrumentation hooks on execution and memory events", "you need thread-safe emulation of multiple CPUs in one program", "you want bindings for Python, Rust, Go, Java, .NET, and more"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/unicorn", "repo": "unicorn-engine/unicorn", "role": "main", "score": 75}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:29.161545+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:22:38.167837+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7e58da94d42ecb66fb2e1e5a3c365188f02f1d5e191ca15e6962c3c16b525df", "fetched_at": "2026-08-28T04:10:29.161545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/unicorn-engine/unicorn"}, {"content_hash": "686d29cc682e65a88d2a5d73356a80e9412bf1b93efaccdb3e264d58b42a2c18", "fetched_at": "2026-08-29T08:22:52.637027+00:00", "kind": "homepage", "missing": false, "url": "http://www.unicorn-engine.org"}, {"content_hash": "3f8c23e16ae62dcfd6028efb69ed5f639f21e73e11f90edf61ff752ed4995132", "fetched_at": "2026-08-29T08:22:52.640604+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs"}, {"content_hash": "33fc2d0659d969fd3813bd4301057faeefab29c99580c24eb77a8dc8af8f4061", "fetched_at": "2026-08-29T08:22:52.642511+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs/beyond_qemu.html"}, {"content_hash": "943fb03ed4ac3dc92d38081cec86bcd76e33291aa547bbf8fc84b9e09a6b6d4b", "fetched_at": "2026-08-29T08:22:52.646099+00:00", "kind": "site_page", "missing": false, "url": "http://www.unicorn-engine.org/docs/tutorial.html"}, {"content_hash": "69748bb2e9fea42aaaeaed133f8d87f69585754a426631df7b0953c3dc412143", "fetched_at": "2026-08-29T08:22:52.644233+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/changelog"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:29.161545+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:22:38.167837+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7e58da94d42ecb66fb2e1e5a3c365188f02f1d5e191ca15e6962c3c16b525df", "fetched_at": "2026-08-28T04:10:29.161545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/unicorn-engine/unicorn"}, {"content_hash": "686d29cc682e65a88d2a5d73356a80e9412bf1b93efaccdb3e264d58b42a2c18", "fetched_at": "2026-08-29T08:22:52.637027+00:00", "kind": "homepage", "missing": false, "url": "http://www.unicorn-engine.org"}, {"content_hash": "3f8c23e16ae62dcfd6028efb69ed5f639f21e73e11f90edf61ff752ed4995132", "fetched_at": "2026-08-29T08:22:52.640604+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs"}, {"content_hash": "33fc2d0659d969fd3813bd4301057faeefab29c99580c24eb77a8dc8af8f4061", "fetched_at": "2026-08-29T08:22:52.642511+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs/beyond_qemu.html"}, {"content_hash": "943fb03ed4ac3dc92d38081cec86bcd76e33291aa547bbf8fc84b9e09a6b6d4b", "fetched_at": "2026-08-29T08:22:52.646099+00:00", "kind": "site_page", "missing": false, "url": "http://www.unicorn-engine.org/docs/tutorial.html"}, {"content_hash": "69748bb2e9fea42aaaeaed133f8d87f69585754a426631df7b0953c3dc412143", "fetched_at": "2026-08-29T08:22:52.644233+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/changelog"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:22:38.167837+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7e58da94d42ecb66fb2e1e5a3c365188f02f1d5e191ca15e6962c3c16b525df", "fetched_at": "2026-08-28T04:10:29.161545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/unicorn-engine/unicorn"}, {"content_hash": "686d29cc682e65a88d2a5d73356a80e9412bf1b93efaccdb3e264d58b42a2c18", "fetched_at": "2026-08-29T08:22:52.637027+00:00", "kind": "homepage", "missing": false, "url": "http://www.unicorn-engine.org"}, {"content_hash": "3f8c23e16ae62dcfd6028efb69ed5f639f21e73e11f90edf61ff752ed4995132", "fetched_at": "2026-08-29T08:22:52.640604+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs"}, {"content_hash": "33fc2d0659d969fd3813bd4301057faeefab29c99580c24eb77a8dc8af8f4061", "fetched_at": "2026-08-29T08:22:52.642511+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs/beyond_qemu.html"}, {"content_hash": "943fb03ed4ac3dc92d38081cec86bcd76e33291aa547bbf8fc84b9e09a6b6d4b", "fetched_at": "2026-08-29T08:22:52.646099+00:00", "kind": "site_page", "missing": false, "url": "http://www.unicorn-engine.org/docs/tutorial.html"}, {"content_hash": "69748bb2e9fea42aaaeaed133f8d87f69585754a426631df7b0953c3dc412143", "fetched_at": "2026-08-29T08:22:52.644233+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/changelog"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:10:29.161545+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:29.161545+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:29.161545+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:22:38.167837+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7e58da94d42ecb66fb2e1e5a3c365188f02f1d5e191ca15e6962c3c16b525df", "fetched_at": "2026-08-28T04:10:29.161545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/unicorn-engine/unicorn"}, {"content_hash": "686d29cc682e65a88d2a5d73356a80e9412bf1b93efaccdb3e264d58b42a2c18", "fetched_at": "2026-08-29T08:22:52.637027+00:00", "kind": "homepage", "missing": false, "url": "http://www.unicorn-engine.org"}, {"content_hash": "3f8c23e16ae62dcfd6028efb69ed5f639f21e73e11f90edf61ff752ed4995132", "fetched_at": "2026-08-29T08:22:52.640604+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs"}, {"content_hash": "33fc2d0659d969fd3813bd4301057faeefab29c99580c24eb77a8dc8af8f4061", "fetched_at": "2026-08-29T08:22:52.642511+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs/beyond_qemu.html"}, {"content_hash": "943fb03ed4ac3dc92d38081cec86bcd76e33291aa547bbf8fc84b9e09a6b6d4b", "fetched_at": "2026-08-29T08:22:52.646099+00:00", "kind": "site_page", "missing": false, "url": "http://www.unicorn-engine.org/docs/tutorial.html"}, {"content_hash": "69748bb2e9fea42aaaeaed133f8d87f69585754a426631df7b0953c3dc412143", "fetched_at": "2026-08-29T08:22:52.644233+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/changelog"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:29.161545+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:29.161545+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:22:38.167837+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7e58da94d42ecb66fb2e1e5a3c365188f02f1d5e191ca15e6962c3c16b525df", "fetched_at": "2026-08-28T04:10:29.161545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/unicorn-engine/unicorn"}, {"content_hash": "686d29cc682e65a88d2a5d73356a80e9412bf1b93efaccdb3e264d58b42a2c18", "fetched_at": "2026-08-29T08:22:52.637027+00:00", "kind": "homepage", "missing": false, "url": "http://www.unicorn-engine.org"}, {"content_hash": "3f8c23e16ae62dcfd6028efb69ed5f639f21e73e11f90edf61ff752ed4995132", "fetched_at": "2026-08-29T08:22:52.640604+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs"}, {"content_hash": "33fc2d0659d969fd3813bd4301057faeefab29c99580c24eb77a8dc8af8f4061", "fetched_at": "2026-08-29T08:22:52.642511+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs/beyond_qemu.html"}, {"content_hash": "943fb03ed4ac3dc92d38081cec86bcd76e33291aa547bbf8fc84b9e09a6b6d4b", "fetched_at": "2026-08-29T08:22:52.646099+00:00", "kind": "site_page", "missing": false, "url": "http://www.unicorn-engine.org/docs/tutorial.html"}, {"content_hash": "69748bb2e9fea42aaaeaed133f8d87f69585754a426631df7b0953c3dc412143", "fetched_at": "2026-08-29T08:22:52.644233+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/changelog"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:29.161545+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:29.161545+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:29.161545+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:22:38.167837+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7e58da94d42ecb66fb2e1e5a3c365188f02f1d5e191ca15e6962c3c16b525df", "fetched_at": "2026-08-28T04:10:29.161545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/unicorn-engine/unicorn"}, {"content_hash": "686d29cc682e65a88d2a5d73356a80e9412bf1b93efaccdb3e264d58b42a2c18", "fetched_at": "2026-08-29T08:22:52.637027+00:00", "kind": "homepage", "missing": false, "url": "http://www.unicorn-engine.org"}, {"content_hash": "3f8c23e16ae62dcfd6028efb69ed5f639f21e73e11f90edf61ff752ed4995132", "fetched_at": "2026-08-29T08:22:52.640604+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs"}, {"content_hash": "33fc2d0659d969fd3813bd4301057faeefab29c99580c24eb77a8dc8af8f4061", "fetched_at": "2026-08-29T08:22:52.642511+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs/beyond_qemu.html"}, {"content_hash": "943fb03ed4ac3dc92d38081cec86bcd76e33291aa547bbf8fc84b9e09a6b6d4b", "fetched_at": "2026-08-29T08:22:52.646099+00:00", "kind": "site_page", "missing": false, "url": "http://www.unicorn-engine.org/docs/tutorial.html"}, {"content_hash": "69748bb2e9fea42aaaeaed133f8d87f69585754a426631df7b0953c3dc412143", "fetched_at": "2026-08-29T08:22:52.644233+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/changelog"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:29.161545+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:29.161545+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:22:38.167837+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7e58da94d42ecb66fb2e1e5a3c365188f02f1d5e191ca15e6962c3c16b525df", "fetched_at": "2026-08-28T04:10:29.161545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/unicorn-engine/unicorn"}, {"content_hash": "686d29cc682e65a88d2a5d73356a80e9412bf1b93efaccdb3e264d58b42a2c18", "fetched_at": "2026-08-29T08:22:52.637027+00:00", "kind": "homepage", "missing": false, "url": "http://www.unicorn-engine.org"}, {"content_hash": "3f8c23e16ae62dcfd6028efb69ed5f639f21e73e11f90edf61ff752ed4995132", "fetched_at": "2026-08-29T08:22:52.640604+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs"}, {"content_hash": "33fc2d0659d969fd3813bd4301057faeefab29c99580c24eb77a8dc8af8f4061", "fetched_at": "2026-08-29T08:22:52.642511+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs/beyond_qemu.html"}, {"content_hash": "943fb03ed4ac3dc92d38081cec86bcd76e33291aa547bbf8fc84b9e09a6b6d4b", "fetched_at": "2026-08-29T08:22:52.646099+00:00", "kind": "site_page", "missing": false, "url": "http://www.unicorn-engine.org/docs/tutorial.html"}, {"content_hash": "69748bb2e9fea42aaaeaed133f8d87f69585754a426631df7b0953c3dc412143", "fetched_at": "2026-08-29T08:22:52.644233+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/changelog"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:22:38.167837+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7e58da94d42ecb66fb2e1e5a3c365188f02f1d5e191ca15e6962c3c16b525df", "fetched_at": "2026-08-28T04:10:29.161545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/unicorn-engine/unicorn"}, {"content_hash": "686d29cc682e65a88d2a5d73356a80e9412bf1b93efaccdb3e264d58b42a2c18", "fetched_at": "2026-08-29T08:22:52.637027+00:00", "kind": "homepage", "missing": false, "url": "http://www.unicorn-engine.org"}, {"content_hash": "3f8c23e16ae62dcfd6028efb69ed5f639f21e73e11f90edf61ff752ed4995132", "fetched_at": "2026-08-29T08:22:52.640604+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs"}, {"content_hash": "33fc2d0659d969fd3813bd4301057faeefab29c99580c24eb77a8dc8af8f4061", "fetched_at": "2026-08-29T08:22:52.642511+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs/beyond_qemu.html"}, {"content_hash": "943fb03ed4ac3dc92d38081cec86bcd76e33291aa547bbf8fc84b9e09a6b6d4b", "fetched_at": "2026-08-29T08:22:52.646099+00:00", "kind": "site_page", "missing": false, "url": "http://www.unicorn-engine.org/docs/tutorial.html"}, {"content_hash": "69748bb2e9fea42aaaeaed133f8d87f69585754a426631df7b0953c3dc412143", "fetched_at": "2026-08-29T08:22:52.644233+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/changelog"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:22:38.167837+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7e58da94d42ecb66fb2e1e5a3c365188f02f1d5e191ca15e6962c3c16b525df", "fetched_at": "2026-08-28T04:10:29.161545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/unicorn-engine/unicorn"}, {"content_hash": "686d29cc682e65a88d2a5d73356a80e9412bf1b93efaccdb3e264d58b42a2c18", "fetched_at": "2026-08-29T08:22:52.637027+00:00", "kind": "homepage", "missing": false, "url": "http://www.unicorn-engine.org"}, {"content_hash": "3f8c23e16ae62dcfd6028efb69ed5f639f21e73e11f90edf61ff752ed4995132", "fetched_at": "2026-08-29T08:22:52.640604+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs"}, {"content_hash": "33fc2d0659d969fd3813bd4301057faeefab29c99580c24eb77a8dc8af8f4061", "fetched_at": "2026-08-29T08:22:52.642511+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs/beyond_qemu.html"}, {"content_hash": "943fb03ed4ac3dc92d38081cec86bcd76e33291aa547bbf8fc84b9e09a6b6d4b", "fetched_at": "2026-08-29T08:22:52.646099+00:00", "kind": "site_page", "missing": false, "url": "http://www.unicorn-engine.org/docs/tutorial.html"}, {"content_hash": "69748bb2e9fea42aaaeaed133f8d87f69585754a426631df7b0953c3dc412143", "fetched_at": "2026-08-29T08:22:52.644233+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/changelog"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:22:38.167837+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7e58da94d42ecb66fb2e1e5a3c365188f02f1d5e191ca15e6962c3c16b525df", "fetched_at": "2026-08-28T04:10:29.161545+00:00", "kind": "readme", "missing": false, "url": "https://github.com/unicorn-engine/unicorn"}, {"content_hash": "686d29cc682e65a88d2a5d73356a80e9412bf1b93efaccdb3e264d58b42a2c18", "fetched_at": "2026-08-29T08:22:52.637027+00:00", "kind": "homepage", "missing": false, "url": "http://www.unicorn-engine.org"}, {"content_hash": "3f8c23e16ae62dcfd6028efb69ed5f639f21e73e11f90edf61ff752ed4995132", "fetched_at": "2026-08-29T08:22:52.640604+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs"}, {"content_hash": "33fc2d0659d969fd3813bd4301057faeefab29c99580c24eb77a8dc8af8f4061", "fetched_at": "2026-08-29T08:22:52.642511+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/docs/beyond_qemu.html"}, {"content_hash": "943fb03ed4ac3dc92d38081cec86bcd76e33291aa547bbf8fc84b9e09a6b6d4b", "fetched_at": "2026-08-29T08:22:52.646099+00:00", "kind": "site_page", "missing": false, "url": "http://www.unicorn-engine.org/docs/tutorial.html"}, {"content_hash": "69748bb2e9fea42aaaeaed133f8d87f69585754a426631df7b0953c3dc412143", "fetched_at": "2026-08-29T08:22:52.644233+00:00", "kind": "site_page", "missing": false, "url": "https://www.unicorn-engine.org/changelog"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 95, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4031, "days_push": 34, "days_rel": 358, "gap_med": 80.5, "n_releases_24m": 5}, "score": 75, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}