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.
  • Add new version macros UC_VERSION_MAJOR, UC_VERSION_MINOR, UC_VERSION_EXTRA.
  • 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!