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!