基于 Qt 的 RISC-V CPU 模拟器,用于计算机体系结构教学,提供可在浏览器中运行的 WebAssembly 版本。
unicorn-engine/unicorn
基于 QEMU 的轻量级多架构 CPU 模拟框架,通过统一的 API 运行机器码。
- Star
- 9,540
- Fork
- 1,587
- 未关闭 Issue
- 237
- 最近提交
- 20天前
这是什么?
Unicorn 是基于 QEMU 构建的 CPU 模拟框架,可以在不运行完整操作系统或实际硬件的情况下,加载并执行 ARM、ARM64、M68K、MIPS、PowerPC、RISC-V、SPARC、S390X、TriCore 和 X86(16、32、64 位)等架构的机器码。
框架提供统一的、与架构无关的 API,用同一套代码即可设置寄存器、映射内存和执行指令。它使用 C 语言实现,并提供 Python、Rust、Go、Java、.NET、Ruby、Lua 等多种语言绑定,支持 Windows 以及 Linux、macOS、Android、BSD 等类 Unix 系统。
项目采用即时编译(JIT)提升执行性能,并提供多层级的细粒度插桩能力。项目以 GPLv2 协议发布。
核心功能
- 01模拟 ARM、ARM64、M68K、MIPS、PowerPC、RISC-V、SPARC、S390X、TriCore 和 X86 等多种 CPU 架构。
- 02提供跨架构统一的简洁 API。
- 03支持 Python、Rust、Go、Java、.NET 等多种语言绑定。
- 04采用即时编译提升执行速度。
- 05模拟过程中支持多层级的细粒度插桩。
适用场景
- 对多种 CPU 架构的机器码进行分析与逆向工程。
- 在受控的模拟环境中运行代码,用于二进制模糊测试。
- 在没有实体硬件的情况下测试固件或嵌入式代码。
- 开发需要执行指令并进行插桩的自定义工具。
快速上手
- 1
阅读 docs/COMPILE.md 中的编译和安装指南
- 2
从 PyPI 安装 Python 绑定
pip install unicorn
使用前须知
- 采用 GPLv2 许可证,这是一种 copyleft 许可,可能限制其在专有软件中的使用。
- 除参考的编译指南外,README 没有提供其他语言的预编译安装方式。
收录于专题
标签
常见问题
- unicorn 是什么?
- 基于 QEMU 的轻量级多架构 CPU 模拟框架,通过统一的 API 运行机器码。 Unicorn 是基于 QEMU 构建的 CPU 模拟框架,可以在不运行完整操作系统或实际硬件的情况下,加载并执行 ARM、ARM64、M68K、MIPS、PowerPC、RISC-V、SPARC、S390X、TriCore 和 X86(16、32、64 位)等架构的机器码。
- unicorn 可以免费使用吗?用的什么许可证?
- unicorn 以 GPL-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- unicorn 还在维护吗?
- 活跃维护中。unicorn 最近一次提交是在 2026年10月18日。
- unicorn 适合用来做什么?
- 对多种 CPU 架构的机器码进行分析与逆向工程。 在受控的模拟环境中运行代码,用于二进制模糊测试。 在没有实体硬件的情况下测试固件或嵌入式代码。 开发需要执行指令并进行插桩的自定义工具。
- unicorn 怎么安装和运行?
- 阅读 docs/COMPILE.md 中的编译和安装指南 从 PyPI 安装 Python 绑定: pip install unicorn
- 在哪里获取 unicorn?
- 源代码和安装说明在 GitHub 上:https://github.com/unicorn-engine/unicorn
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
651+4 本周97C++GPL-3.0维护活跃更新于 9天前
一个运行在 512 字节 x86 引导扇区中的微型字符级语言模型,在实模式下生成虚构的 Linux 启动日志。
99+49 本周4PythonMIT更新于 7天前
一个在浏览器中运行的 x86 PC 模拟器,运行时将机器码转为 WebAssembly 以启动真实操作系统。
2.4万+19 本周1944JavaScriptBSD-2-Clause维护活跃更新于 8天前
一款底层 x86 模拟器,用于运行 1981 年起 IBM PC 及兼容机的老式操作系统和软件。
4979+16 本周640CGPL-2.0维护活跃更新于 17小时前
一款 Mac 应用,在 Apple Silicon 上以深度集成 macOS 的虚拟机运行原版 Omarchy Linux 桌面。
2899+13 本周166SwiftMIT维护活跃更新于 12天前