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.

Version 1.0

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:

  • Lots of bugfixes in all architectures.
  • Fix many memory leaking issues.
  • New APIs: 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.
  • New memory hook type: UC_HOOK_MEM_READ_AFTER.
  • Remove glib & pkconfig dependency.
  • Windows: export a static lib that can be used outside of Mingw.
  • ARM:
    • Support MCLASS cpu (Cortex-M3).
    • Better support for Thumb mode.
    • uc_reg_write now can modify CPSR register.
    • Add some ARM coproc registers.
  • ARM64: uc_reg_read & uc_reg_write now handles W0-W31 registers.
  • X86:
    • Fix 16bit address computation.
    • Fix initial state of segment registers.
  • Windows: fix a double free bug in uc_close.
  • 3 new bindings: Haskell, MSVC, VB6.
  • Python:
    • Better support for Python3
    • Fix memory leaking that prevents UC instances from being GC.

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!

First public release!

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!

Beta-test phase 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

Call for beta test!

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.

BlackHat USA 2015 presentation

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!

Website launched!

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.