You usually use it to build your own emulator or other analysis tool, often for reverse engineering.
Qemu supports RV and PPC!
And that is not what “from scratch” means!
The ability to execute and inspect some code without any context (no OS, not even a complete binary) is useful for reverse/security engineering.
In the early 2000s, I used a linux-based emulator to virtualize some ancient manufacturing hardware control software that was still running on EOL and very expensive PA-RISC kit. It saved the company tens of thousands of dollars in new hardware, while also running faster (it involved early 1990s-era proprietary vector graphics as part of it was printing on the goods). The HP sales people were not amused and tried very hard to get my 22 year old self fired, but my manager convinced them to use it and the old hardware as a backup for awhile. Last I heard in 2011 it was still being used, though running in linux on VMware.
QEMU is an emulator that can run entire operating systems, because it emulates hardware devices like hard drives and displays. Unicorn doesn't emulate any of those things, it only emulates the CPU. It's probably mostly useful for compiler development and security research / reverse engineering.
Or you can use it as a sandbox serving x86 software on an x86 machine.
Or as a "virtual machine" serving say AOSP for ARM on a Windows x86 host.
There's a long list of projects using Unicorn at https://www.unicorn-engine.org/showcase/
Unicorn is a lightweight multi-platform, multi-architecture CPU emulator framework.
Highlight features:
Find in this BlackHat USA 2015 slides more technical details behind Unicorn engine.
Unicorn is based on QEMU, but it goes much further with a lot more to offer.
November 13, 2022

We are happy to announce that Unicorn Engine was awarded by Alibaba Cloud for its impact on the cybersecurity field (and beyond since our project is widely used for other purposes, too)!
Unicorn Engine was created and released more than 7 years ago to the public. We launched Unicorn Engine under an open-source license with the goal of contributing to the community and helping as many people as possible with our code. Our team has worked hard to maintain and develop the project to its fullest potential. We are pleased to see Unicorn Engine becoming a de facto emulator and laying the foundation for various innovative works in academia and industry.
We want to thank the whole community for your continuous support over the years. This recognition is for all of us!
For further information on the award, see https://asiastar10x10.kr-asia.com/awardees-2022/
November 1, 2022
Unicorn Engine Team is happy to announce the new version 2.0.1 of our framework!
This version fixes many issues of v2.0 in the core and some bindings. See the ChangeLog for more details.
The source code & precompiled binaries are available in the Download section. See Documentation for how to compile and install Unicorn.
As always, we would like to thank the whole community for your tireless support on developing and maintaining Unicorn project!
July 7, 2022
We are very happy to announce version 2.0.0 of Unicorn Engine, also known as Unicorn2!
This release is a major step forward for our project. While we still maintain backward compatibility with Unicorn 1.0.x, Unicorn2 supports the updated instruction set of all important CPU architectures, including X86, Arm, Aarch64, Mips, Sparc & M68k. Moreover, we added 4 more architectures in PowerPC, RISCV, S390x & TriCore.
Another significant change on this version is the addition of some new APIs to allow better control on how the core engine works. Check it out the Changelog for more details, and sample codes for how to use these new features.
We would like to thank the whole community for your generous & tireless support for the last 7 years! Without your help, Unicorn would not made this far!
The source code of Unicorn2 is now available on Github. Check out COMPILE.md for how to compile and install it.
Please contact if you want to support our work for the next versions.
October 3, 2021

We are very excited to announce Unicorn2 beta to the public!
Unicorn engine was first introduced at Blackhat USA 2015 as the only cross-platform-architecture framework for CPU emulation. After its release, Unicorn made some good impact in the security community and quickly established itself as the foundation of various innovative work. More than 6 years passed, it is time to make a major step forward with Unicorn2!
Based on Qemu 5, we built Unicorn2 from scratch, with a lot of optimization on performance & code size. While still maintaining backward compatibility with the current version, Unicorn2 supports the latest instruction set of all important CPU architectures, including X86, Arm, Aarch64, Mips, Sparc & M68k. Going further, we also added 2 highly-demanded architectures in PowerPC & RISCV.
The source code of Unicorn2 is now available at dev branch on our Github repo. Check out COMPILE.md for how to compile and install Unicorn2.
Since this important milestone deserves it, we also designed a new logo for Unicorn, as you can see at the top of this post!
What is next now? Help us to fix bugs, update bindings so we can officially release Unicorn v2.0.
Please contact if you want to support our work.
May 26, 2021
We are very happy to announce version 1.0.3 of Unicorn Engine!
This version fixes some minor issues of v1.0.2 in the core and some bindings. We also added a new binding in Rust. See the ChangeLog for more details.
The source code & precompiled binaries are available in the Download section. See Documentation for how to compile and install Unicorn.
We also wish to express our sincere gratitude to all contributors, who generously supported us to maintain Unicorn project!
What is next now? Let us look forward to the next major update: Unicorn 2. Please contact if you want to support our work.
October 21, 2020
We are very happy to announce version 1.0.2 of Unicorn Engine!
It has been more than 3.5 years since the last major update, and this version marks 5 year of Unicorn. Such a long journey for an open source project! That is really exciting to see our magical animal having more and more impact in both academia community and the cybersecurity industry.
This version fixes various issues of v1.0.1, adds some new API and introduces more bindings. See the ChangeLog for more details.
The source code & precompiled binaries are available in the Download section. See Documentation for how to compile and install Unicorn.
In no particular order, we would like to thank CatenaCyber, Grayshift and Google Patch Rewards for sponsoring this release!
We also wish to express our sincere gratitude to all contributors, who generously supported us to maintain Unicorn project!
What is next now? Let us look forward to the next major update: Unicorn 2. Please contact if you want to support our work.
April 20, 2017
We are excited to announce version 1.0.1 of Unicorn Engine!
The source code & precompiled binaries are available in the download section. See documentation for how to compile and install Unicorn.
A quick tutorial on how to program with Unicorn in C & Python can be found here.
Important changes since v1.0 include:
Community also provide independent bindings for Pascal, Rust & Perl.
February 23, 2017
We are very happy to announce version 1.0 of Unicorn Engine!
The source code & precompiled binaries are available in the download section. See documentation for how to compile and install Unicorn.
A quick tutorial on how to program with Unicorn in C & Python can be found here.
Important changes since v0.9 include:
Community also provide independent bindings for Pascal, Rust & Perl.
Huge thanks to all the heroic contributors who worked hard for over 1 year to make this release possible!
October 15, 2015
We are very excited to announce the first public release, version 0.9, of Unicorn Engine!
The source code & precompiled binaries are available in the download section. See documentation for how to compile and install Unicorn.
A quick tutorial on how to program with Unicorn in C & Python can be found here.
We would like show our gratitude to the beta testers for bug reports & code contributions during the beta phase! Their invaluable helps have been tremendous for us to keep this far.
Unicorn aims to lay the ground for innovative works. We look forward to seeing many advanced research & development in the security area built on this engine. Let the fun begin!
September 1, 2015
We are excited to announce that the beta-test phase of the Unicorn engine has officially kicked off!
The plan is to run this testing phase in few weeks, then if the code is considered good enough, version 1.0 will be released to public immediately.
We are honoured to have following heroes helping out us in this phase (list is in no particular order)
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, aka pancake (author of 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
August 7, 2015
We gave a presentation on Unicorn engine at the BlackHat USA 2015 security conference. The talk went well, and we got nice feedbacks from the audience.
The slides is now available in PDF format. Find in the presentation more details on the design \& implementation of Unicorn.
We would like to improve the code quality before the official release. Therefore, Unicorn project is now calling for beta testers!
Are you are willing to help to test Unicorn to find \& clean bugs?
Can you code? You do not need to be an excellent coder, but writing some tools using Unicorn is the only way to find bugs at this phase.
If the answer is “Yes” for both questions, then email us with some self-instroduction on why you are interested, and how you can help.
Unicorn will be released soon with full source code - in GPL license - after this short beta phase.
August 2, 2015
We are working to release more contents & prepare for our BlackHat USA 2015 talk. Meanwhile, check out a sample code in Python and C language to see how Unicorn can be useful for a real problem.
Our presentation at BlackHat USA will be on August 5th, 10:20 - 11:10, in room “South Seas IJ”.
See you there with some cool Unicorn stickers, soon!
August 1, 2015
We are happy to launch the website for Unicorn CPU Emulator! Also find here the mailing list and twitter address where we will update information on the project.
Unicorn now has a mailing list. Subscribe to the list for updated information & do conversation
Users are also encouraged to follow us on Twitter for important announcements.