Unicorn – 终极CPU模拟器
摘要
Unicorn 是一个轻量级、多平台的CPU模拟器框架,支持多种架构(ARM、x86、RISC-V等),提供简洁的API、JIT编译以及多种语言的绑定。它在网络安全和学术研究领域被广泛使用。
暂无内容
查看缓存全文
缓存时间: 2026/06/16 14:33
# Unicorn – 终极 CPU 模拟器
来源:https://www.unicorn-engine.org/
**Unicorn** 是一个轻量级、跨平台、多架构的 CPU 模拟器框架。
主要特点:
- 多架构支持:ARM、ARM64 (ARMv8)、m68k、MIPS、PowerPC、RISC-V、S390x (SystemZ)、SPARC、TriCore 及 x86(包括 x86_64)。
- 整洁/简单/轻量/直观的架构无关 API。
- 纯 C 语言实现,并提供 Pharo、Crystal、Clojure、Visual Basic、Perl、Rust、Haskell、Ruby、Python、Java、Go、D、Lua、JavaScript、.NET、Delphi/Pascal 和 MSVC 绑定。
- 原生支持 Windows 及 *nix(已验证包括 macOS、Linux、Android、*BSD 和 Solaris)。
- 通过即时编译技术实现高性能。
- 支持细粒度的多级插桩。
- 设计上支持线程安全。
- 在自由软件许可证 GPLv2 下发布。
在 BlackHat USA 2015 幻灯片 (https://www.unicorn-engine.org/BHUSA2015-unicorn.pdf) 中查找 Unicorn 引擎背后的更多技术细节。
Unicorn 基于 QEMU (http://www.qemu.org/),但它更进一步,提供更多功能 (https://www.unicorn-engine.org/docs/beyond_qemu.html)。
---
## Asian Star 10x10 Award (https://www.unicorn-engine.org/Award)
2022年11月13日
我们很高兴地宣布,Unicorn Engine 因其在网络安全领域(以及更广泛的领域,因为我们的项目也被广泛用于其他目的)的影响力而获得阿里云颁发的奖项!
Unicorn Engine 创建并公开发布已超过 7 年。我们以开源许可证发布 Unicorn Engine,旨在为社区做贡献,并利用我们的代码帮助尽可能多的人。我们的团队努力维护和开发项目,充分发挥其潜力。我们很高兴看到 Unicorn Engine 成为事实上的模拟器,并为学术界和工业界的各种创新工作奠定了基础。
我们要感谢整个社区多年来持续的支持。这一认可属于我们所有人!
有关该奖项的更多信息,请参阅 https://asiastar10x10.kr-asia.com/awardees-2022/
## 版本 2.0.1 (https://www.unicorn-engine.org/Version-2.0.1)
2022年11月1日
Unicorn Engine 团队很高兴地宣布框架的新版本 **2.0.1**!
此版本修复了 v2.0 核心以及某些绑定中的许多问题。有关更多详细信息,请参阅 ChangeLog (https://www.unicorn-engine.org/changelog/)。
源代码和预编译二进制文件可在 Download (https://www.unicorn-engine.org/download/) 部分找到。有关如何编译和安装 Unicorn,请参阅 Documentation (https://www.unicorn-engine.org/docs/)。
一如既往,我们要感谢整个社区在开发和维护 Unicorn 项目中给予的不懈支持!
## 版本 2.0.0 (https://www.unicorn-engine.org/Version-2.0.0)
2022年7月7日
我们非常高兴地宣布 Unicorn Engine 版本 **2.0.0**,也称为 **Unicorn2**!
此版本是我们项目向前迈出的重要一步。虽然我们仍然保持与 Unicorn 1.0.x 的向后兼容性,但 Unicorn2 支持所有重要 CPU 架构(包括 X86、Arm、Aarch64、Mips、Sparc 和 M68k)的最新指令集。此外,我们还增加了 **PowerPC**、**RISCV**、**S390x** 和 **TriCore** 四种架构。
此版本的另一个重大变化是增加了一些新的 API,以便更好地控制核心引擎的工作方式。有关更多详细信息,请查看 Changelog (https://github.com/unicorn-engine/unicorn/blob/master/ChangeLog),以及示例代码 (https://github.com/unicorn-engine/unicorn/tree/master/samples) 了解如何使用这些新特性。
我们要感谢整个社区在过去 7 年中慷慨而持续的支持!没有你们的帮助,Unicorn 不可能走到今天这么远!
Unicorn2 的源代码现在可以在 Github (https://github.com/unicorn-engine/unicorn) 上获取。请查看 COMPILE.md (https://github.com/unicorn-engine/unicorn/blob/master/docs/COMPILE.md) 了解如何编译和安装。
如果您想支持我们下一版本的工作,请与我们联系 (https://www.unicorn-engine.org/contact)。
## Unicorn2 (https://www.unicorn-engine.org/Unicorn2-beta)
2021年10月3日
我们非常激动地向公众宣布 **Unicorn2 beta** 版本!
Unicorn 引擎首次在 Blackhat USA 2015 (https://www.unicorn-engine.org/blackhat2015) 上发布,是当时唯一的跨平台架构 CPU 模拟框架。发布后,Unicorn 在安全社区产生了良好影响,并迅速成为各种创新工作 (https://www.unicorn-engine.org/showcase) 的基础。6 年多过去了,是时候用 Unicorn2 迈出重要的一步了!
基于 Qemu 5,我们从头构建了 Unicorn2,并在性能和代码大小方面进行了大量优化。在保持与当前版本向后兼容性的同时,Unicorn2 支持所有重要 CPU 架构(包括 X86、Arm、Aarch64、Mips、Sparc 和 M68k)的最新指令集。更进一步,我们还增加了两个需求很高的架构:**PowerPC** 和 **RISCV**。
Unicorn2 的源代码现在可以在我们 Github 仓库的 dev 分支 (https://github.com/unicorn-engine/unicorn/tree/dev) 上获取。请查看 COMPILE.md (https://github.com/unicorn-engine/unicorn/blob/dev/docs/COMPILE.md) 了解如何编译和安装 Unicorn2。
由于这一重要里程碑值得纪念,我们还为 Unicorn 设计了新标志,正如您在这篇文章顶部所见!
下一步是什么?帮助我们修复 bug,更新绑定 (https://github.com/unicorn-engine/unicorn/tree/dev/bindings),以便我们正式发布 Unicorn v2.0。
如果您想支持我们的工作,请与我们联系 (https://www.unicorn-engine.org/contact)。
## 版本 1.0.3 (https://www.unicorn-engine.org/Version-1.0.3)
2021年5月26日
我们非常高兴地宣布 Unicorn Engine 版本 **1.0.3**!
此版本修复了 v1.0.2 核心以及某些绑定中的一些小问题。我们还新增了一个 Rust 绑定。有关更多详细信息,请参阅 ChangeLog (https://www.unicorn-engine.org/changelog/)。
源代码和预编译二进制文件可在 Download (https://www.unicorn-engine.org/download/) 部分找到。有关如何编译和安装 Unicorn,请参阅 Documentation (https://www.unicorn-engine.org/docs/)。
我们还要向所有慷慨支持我们维护 Unicorn 项目的贡献者表示衷心的感谢!
下一步是什么?让我们期待下一个重大更新:Unicorn 2 (https://github.com/unicorn-engine/unicorn/issues/1217)。如果您想支持我们的工作,请与我们联系 (https://www.unicorn-engine.org/contact)。
## 版本 1.0.2 (https://www.unicorn-engine.org/Version-1.0.2)
2020年10月21日
我们非常高兴地宣布 Unicorn Engine 版本 **1.0.2**!
距离上次重大更新已超过 3.5 年,此版本标志着 Unicorn 的 5 周年。对于一个开源项目来说,这是多么漫长的旅程!看到我们的神奇动物在学术界和网络安全行业产生越来越大的影响,真是令人兴奋。
此版本修复了 v1.0.1 的各种问题,增加了一些新 API,并引入了更多绑定。有关更多详细信息,请参阅 ChangeLog (https://www.unicorn-engine.org/changelog/)。
源代码和预编译二进制文件可在 Download (https://www.unicorn-engine.org/download/) 部分找到。有关如何编译和安装 Unicorn,请参阅 Documentation (https://www.unicorn-engine.org/docs/)。
我们要特别感谢 CatenaCyber (https://catenacyber.fr/)、Grayshift (https://www.grayshift.com/) 和 Google Patch Rewards (https://www.google.com/about/appsecurity/patch-rewards/) 对本次发布的赞助!
我们还要向所有慷慨支持我们维护 Unicorn 项目的贡献者表示衷心的感谢!
下一步是什么?让我们期待下一个重大更新:Unicorn 2 (https://github.com/unicorn-engine/unicorn/issues/1217)。如果您想支持我们的工作,请与我们联系 (https://www.unicorn-engine.org/contact)。
## 版本 1.0.1 (https://www.unicorn-engine.org/Version-1.0.1)
2017年4月20日
我们很高兴地宣布 Unicorn Engine 版本 1.0.1!
源代码和预编译二进制文件可在 download (https://www.unicorn-engine.org/download/) 部分找到。请参阅 documentation (https://www.unicorn-engine.org/docs/) 了解如何编译和安装 Unicorn。
关于如何使用 C 和 Python 编程 Unicorn 的快速教程可在此处 (http://www.unicorn-engine.org/docs/tutorial.html) 找到。
自 v1.0 以来的重要变化包括:
- 正确处理选定架构的构建。
- 修复 PPC 和 S390x 上的编译问题。
- 修复 `uc_mem_protect()` 中的内存泄漏。
- ARM:
- 支持大端模式。
- 修正 Thumb/Thumb2 代码的指令大小。
- 支持读写 APSR 寄存器。
- ARM64:
- 支持读写 NEON 寄存器。
- 支持读写 NZCV 寄存器。
- Mips:支持读写 Mips64 寄存器。
- X86:支持读写 MSR。
- Haskell 绑定:更新到最新 API。
- Python:允许未设置 PATH。
社区还提供了独立的 Pascal (https://github.com/stievie/UnicornPascal)、Rust (https://github.com/ekse/unicorn-rs) 和 Perl (https://metacpan.org/pod/UnicornEngine) 绑定。
## 版本 1.0 (https://www.unicorn-engine.org/Version-1.0)
2017年2月23日
我们非常高兴地宣布 Unicorn Engine 版本 1.0!
源代码和预编译二进制文件可在 download (https://www.unicorn-engine.org/download/) 部分找到。请参阅 documentation (https://www.unicorn-engine.org/docs/) 了解如何编译和安装 Unicorn。
关于如何使用 C 和 Python 编程 Unicorn 的快速教程可在此处 (http://www.unicorn-engine.org/docs/tutorial.html) 找到。
自 v0.9 以来的重要变化包括:
- 所有架构的大量错误修复。
- 修复许多内存泄漏问题。
- 新 API:`uc_query`、`uc_reg_write_batch`、`uc_reg_read_batch`、`uc_mem_map_ptr`、`uc_mem_regions`、`uc_free`、`uc_context_alloc`、`uc_context_save` 和 `uc_context_restore`。
- 新的内存钩子类型:`UC_HOOK_MEM_READ_AFTER`。
- 添加新的版本宏:`UC_VERSION_MAJOR`、`UC_VERSION_MINOR`、`UC_VERSION_EXTRA`。
- 移除 glib 和 pkconfig 依赖。
- Windows:导出可在 Mingw 之外使用的静态库。
- ARM:
- 支持 MCLASS CPU (Cortex-M3)。
- 更好地支持 Thumb 模式。
- `uc_reg_write` 现在可以修改 CPSR 寄存器。
- 添加一些 ARM 协处理器寄存器。
- ARM64:`uc_reg_read` 和 `uc_reg_write` 现在处理 W0-W31 寄存器。
- X86:
- 修复 16 位地址计算。
- 修复段寄存器的初始状态。
- Windows:修复 `uc_close` 中的双重释放 bug。
- 3 个新绑定:Haskell、MSVC、VB6。
- Python:
- 更好地支持 Python3。
- 修复阻止 UC 实例被垃圾回收的内存泄漏。
社区还提供了独立的 Pascal (https://github.com/stievie/UnicornPascal)、Rust (https://github.com/ekse/unicorn-rs) 和 Perl (https://metacpan.org/pod/UnicornEngine) 绑定。
衷心感谢所有辛勤工作超过一年、使此次发布成为可能的英勇贡献者!
## 首次公开发布! (https://www.unicorn-engine.org/Version-0.9)
2015年10月15日
我们非常激动地宣布 Unicorn Engine 的首次公开发布,版本 0.9!
源代码和预编译二进制文件可在 download (https://www.unicorn-engine.org/download/) 部分找到。请参阅 documentation (https://www.unicorn-engine.org/docs/) 了解如何编译和安装 Unicorn。
关于如何使用 C 和 Python 编程 Unicorn 的快速教程可在此处 (http://www.unicorn-engine.org/docs/tutorial.html) 找到。
我们要感谢 beta 测试者在测试阶段提供的错误报告和代码贡献!他们宝贵的帮助对我们走到这一步至关重要。
Unicorn 旨在为创新工作奠定基础。我们期待看到基于此引擎在安全领域进行许多先进的研究和开发。让乐趣开始吧!
## Beta 测试阶段开始! (https://www.unicorn-engine.org/beta-start)
2015年9月1日
我们激动地宣布 Unicorn 引擎的 beta 测试阶段正式开始!
计划是运行几周的测试阶段,如果代码被认为足够好,版本 1.0 将立即向公众发布。
我们很荣幸有以下英雄在这个阶段帮助我们(名单不分先后):
- Nguyen Tan Cong
- Loi Anh Tuan
- Edgar Barbosa
- Joxean Koret
- Chris Eagle
- Jay Little, Trail of Bits
- Jeong Wook Oh
- Luis Miras
- Yan Shoshitaishvili, Shellphish & UC Santa Barbara
- Erik Fischer
- Darel Griffin, NCC Group
- Anton Cherepanov
- Mohamed Saher (halsten)
- Tyler Colgan
- Jonathon Reinhart
- Blue Skeye
- Chris Maixner
- Sergi Alvarez, 又名 pancake (radare 作者)
- Ryan Hileman
- Tim “diff” Strazzere
- WanderingGlitch of the Zero Day Initiative
- Sascha Schirra
- François Serman
- Sean Heelan
- Luke Burnett
- Parker Thompson
- Daniel Godas-Lopez
- Antonio “s4tan” Parata
- Corey Kallenberg
- Shift
- Gabriel Quadros
- Fabian Yamaguchi
- Ralf-Philipp Weinmann
- Mike Guidry
- Joshua “posixninja” Hill
## 招募 Beta 测试者! (https://www.unicorn-engine.org/beta)
2015年8月7日
我们在 BlackHat USA 2015 安全会议 (https://www.blackhat.com/us-15/briefings.html#unicorn-next-generation-cpu-emulator-framework) 上做了关于 Unicorn 引擎的演讲。演讲效果很好,我们收到了观众的良好反馈。
幻灯片现在以 PDF 格式 (https://www.unicorn-engine.org/BHUSA2015-unicorn.pdf) 提供。在演示文稿中查找关于 Unicorn 设计和实现的更多细节。
我们希望在正式发布前提高代码质量。因此,Unicorn 项目现在正在招募 beta 测试者!
- 您愿意帮助测试 Unicorn 以发现和清理错误吗?
- 您会编码吗?您不需要是出色的程序员,但编写一些使用 Unicorn 的工具是此阶段发现错误的唯一方法。
如果两个问题的答案都是“是”,请发送邮件给我们 (https://www.unicorn-engine.org/contact/),附带一些自我介绍,说明您为什么感兴趣以及如何提供帮助。
Unicorn 将在短暂的 beta 阶段后很快发布完整源代码——采用 GPL 许可证。
## BlackHat USA 2015 演讲 (https://www.unicorn-engine.org/blackhat2015)
2015年8月2日
我们正在努力发布更多内容并准备 BlackHat USA 2015 演讲 (https://www.blackhat.com/us-15/briefings.html#unicorn-next-generation-cpu-emulator-framework)。同时,请查看一个示例代码,分别用 Python (http://dpaste.com/0533J4M) 和 C 语言 (http://dpaste.com/225EPFT) 编写,了解 Unicorn 如何用于解决实际问题。
我们在 BlackHat USA 的演讲将于 8 月 5 日 10:20 - 11:10 在 "South Seas IJ" 房间举行。
到时见,还可以领取一些酷炫的 Unicorn 贴纸!
## 网站上线! (https://www.unicorn-engine.org/launch)
2015年8月1日
我们很高兴推出 Unicorn CPU 模拟器的网站!同样在此处找到 *邮件列表* 和 *Twitter 地址*,我们将在此更新项目信息。
- Unicorn 现在有一个邮件列表 (http://www.freelists.org/list/unicorn-engine)。订阅列表以获取更新信息和进行讨论。
- 也欢迎用户在 Twitter (https://www.twitter.com/unicorn_engine) 上关注我们,以获取重要公告。
相似文章
Plexus P/20 模拟器
一款全新的开源 WebAssembly 模拟器,重现 1980 年代 Plexus P/20 Unix 服务器,让用户可在浏览器中运行 SystemV Unix。
Theseus,一个静态的Windows模拟器
Theseus是一个新型的静态Windows/x86模拟器,它在编译时翻译程序,而不是在运行时解释或即时编译,代表了一种不同于传统模拟架构的方法。
Sogen – 高性能Windows和Linux用户空间模拟器
Sogen是一款高性能的用户空间模拟器,同时支持Windows和Linux环境。
Ü 编程语言
Ü 是一种静态类型的编译型编程语言,专为可靠性和速度而设计,具有安全/不安全代码分离、RAII 和 LLVM 后端。它的目标是优于 C++ 且比 Rust 更易用。
@no_stp_on_snek: 如果你想试试,可以在这里找到:
这是一个 llama.cpp 的分支,集成了 TurboQuant+,用于先进的 KV 缓存和权重量化,支持跨后端内核(Apple Silicon、NVIDIA CUDA、AMD ROCm、Vulkan),并被 LocalAI、Chronara 和 AtomicChat 用于生产环境。