Unicorn – 终极CPU模拟器

Hacker News Top 工具

摘要

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 模拟器

Hacker News Top

一款全新的开源 WebAssembly 模拟器,重现 1980 年代 Plexus P/20 Unix 服务器,让用户可在浏览器中运行 SystemV Unix。

Theseus,一个静态的Windows模拟器

Lobsters Hottest

Theseus是一个新型的静态Windows/x86模拟器,它在编译时翻译程序,而不是在运行时解释或即时编译,代表了一种不同于传统模拟架构的方法。

Ü 编程语言

Hacker News Top

Ü 是一种静态类型的编译型编程语言,专为可靠性和速度而设计,具有安全/不安全代码分离、RAII 和 LLVM 后端。它的目标是优于 C++ 且比 Rust 更易用。

@no_stp_on_snek: 如果你想试试,可以在这里找到:

X AI KOLs Following

这是一个 llama.cpp 的分支,集成了 TurboQuant+,用于先进的 KV 缓存和权重量化,支持跨后端内核(Apple Silicon、NVIDIA CUDA、AMD ROCm、Vulkan),并被 LocalAI、Chronara 和 AtomicChat 用于生产环境。