Skip to content

Releases: unicorn-engine/unicorn

Version v2.1.1

26 Sep 12:25
d568885
Compare
Choose a tag to compare

This is a small release to fix a few urgent issues.

  • Remove pkg_resources usage
  • Fix wheels distribution for x86_64 macos
  • Fix redundant wheel hacks
  • Support musllinux distribution @Antelox

Full Changelog: 2.1.0...2.1.1

Version v2.1.0

21 Sep 16:06
3f230f3
Compare
Choose a tag to compare

It has been a while since the last release, and 2.1.0 brings several exciting features. Below is the changelog from the latest to the oldest (though not strictly).

Highlights

  • Revive QEMU logs, now we have -DUNICORN_LOGGING=yes to enable all qemu logs. @BitMaskMixer
  • Faster (up to 40x) write performance by not always doing store_helper and cleaning page locks. @tunz @boborjan2
  • Brand new python bindings, with strongly typed and many improvements. @elicn
  • Fix to a long-standing MinGW random segfault bug.
  • We bring python2 compatibility back.
  • We now fully support M1, both building and a pre-built wheel.
  • We support snapshot memory now, with a very low overhead copy-on-write fashion. @PhilippTakacs
  • An option to bypass MMU is also added, check our FAQ. @PhilippTakacs
  • A brand new (and modern) java bindings. We are also working to publish it to maven. @nneonneo
  • We have zig integrated. @kassane @atipls
  • Now Unicorn no longer allocates 2GB memory for every instance. The memory will be only committed once used and the upper limit can be adjusted with uc_ctl.
  • New DotNet binding, with published to both Github and Nuget. @TSRBerry
  • The release will attach all binaries, thanks to @marameref

Fixes & Improvements

New Contributors

Full Changelog: 2.0.1...2.1.0

Again, thanks for all contributors and sorry if I missed your name here (please tell me @wtdcode !). 2.1.1 is also coming because we expect some minor break changes to fix.

Version 2.0.1.post1

22 Nov 20:18
e9c1c17
Compare
Choose a tag to compare

This is a small release to complement the previous 2.0.1 release.

Fix:

  • Fix the endianness detection in tests.
  • Fix the version number in CMakeLists.txt.

Version 2.0.1

01 Nov 15:39
Compare
Choose a tag to compare

Unicorn2 makes the first step to Debian packages and vcpkg! Thanks @roehling and @LilyWangL !

Features:

  • Support building & running on BE hosts. #1710
  • Fix and support clang-cl on Windows. #1687
  • Fix python sdist and add aarch64 Linux wheels. Note pip can build Unicorn2 on M1 now!
  • C# binding is refined and upgraded to .Net 6. #1723

Fix/Improvements:

  • Various bindings improvements. #1723
  • Improvements for tests. #1684 #1683 #1691 #1711
  • Fail explicitly when VEX.L is set. #1658
  • Fix endianness when writing PPC32 CR register. #1659
  • Fix a bug in uc_ctl_set_cpu_model check.
  • Fix Tricore PC not updating. #1668
  • Fix the mapping not updated if users modify the mappings in the hooks.
  • Handle pathological cases consistently. #1651
  • Fix memory leaks in PPC target. #1680
  • Fix memory leaks in Tricore target. #1681
  • Fix MSVC handling in cmake. #1693
  • Fix PC sync-ing problems for UC_HOOK_BLOCK hooks.
  • Fix PC sync-ed twice when users request a soft restart.
  • Prevent overflow with pre-allocated RAM blocks. #1712
  • Add FPCR and FPSR registers #1722
  • Fix ARM CPU state not deep copied.
  • Fix PC not sync-ed for memory operation on aarch64.
  • Exit invalid store operations early to avoid the target registers being overwritten.
  • Improve the support for ARM BE32.

Thanks:

@roehling @LilyWangL @mrexodia @zachriggle @Yu3H0 @rhelmot @relapids @sh4w1 @TSRBerry

Version 2.0.0

07 Jul 15:51
Compare
Choose a tag to compare

Features:

  • TriCore Support (#1568)

Fixes/Improvements:

  • Build both shared library and static archive as unicorn1 does.
  • Misc bindings improvements. #1569 #1600 #1609 #1613 #1616
  • Make sure setjmp-setjmp-wrapper-win32 participates in the build. #1604
  • Improve Rust bindings build logic.
  • Fix wrong python binding for UC_CTL_TB_REMOVE_CACHE
  • Flush translation blocks when the count hook is removed.
  • Fix unicorn crash when nested uc_emu_start deletes a hook
  • Fix CPU not fully resumed when writing PC.
  • Don't quit TB if uc_mem_protect doesn't change the protection of current TB memory.
  • Add type annotations for python bindings.
  • Add CPUID hook for python bindings. #1618
  • Don't repeat memory hooks if there is already an unhandled error. #1618
  • Support reads and writes over all Arm SIMD registers #1621
  • Fix wrong registers range in python bindings.
  • Fix uc_mem_protect on mmio regions
  • Fix a UAF caused by hook cache.
  • Fix the value collision between UC_MODE_ARMBE8 and UC_MODE_ARM926

Thanks:

@AfoHT @mrexodia @bet4it @lowlyw @ekilmer @ondryaso @QDucasse @PalumboN @uberwoozle

Version 2.0.0-rc7

17 Apr 15:10
185a6fe
Compare
Choose a tag to compare
Version 2.0.0-rc7 Pre-release
Pre-release

This release is expected to be the real last RC release of Unicorn2. ;)

Features:

  • Correctly generate static archives for the static build and have CI auto-tested.
  • Rust bindings revised. #1584
  • Compatible with clang-cl compiler. #1581
  • Implement UC_HOOK_INSN for aarch64 MRS/MSR/SYS/SYSL

Fixes/Improvements:

  • Several corner cases on our API. #1587 #1595
  • Fix the codegen buffer leak.
  • Rust bindins improvements. #1574 #1575
  • Add "holes" to allow unicorn lib as a drop-in replacement for older ones. #1572
  • s390x backports. #1570
  • Fix exits wrongly removed in nested uc_emu_start
  • Fix a possible endless loop for only one translation block in a multithreaded environment.
  • Fix wrong PC without UC_HOOK_CODE installed.
  • Update vb6 bindings license. #1563
  • Fix buffer allocation failure on M1. #1559
  • Fix wrong EFLAGS on startup.
  • Fix wrong internal states on nested uc_emu_start.
  • Remove armeb-softmmu and aarcheb-softmmu which are usermode targets.
  • Advance PPC32 PC. #1558
  • Support UC_PPC_REG_CR.
  • Update CI to windows-2019

Thanks:

@shuffle2 @liyansong2018 @rose4096 @nviennot @n1tram1 @iii-i @dzzie @yrashk @bet4it

Version 2.0.0-rc6

13 Feb 10:15
c10639f
Compare
Choose a tag to compare
Version 2.0.0-rc6 Pre-release
Pre-release

This release is expected to be the last RC release of Unicorn2.

Features:

  • SystemZ (aka. s390x) support. #1521 #1547
  • CPUID hook now may return a bool to indicate whether skipping the CPUID instruction.
  • ARM/AARCH64 coprocessor registers read/write support. #889

Fixes/Improvements:

  • Rust improvements. More registers enums #1504 Easier to use #1543 #1545
  • M68k improvements. #1507
  • Golang improvements. Enable uc_ctl_set_model #1506
  • Unit tests improvements. #1512
  • Various ARM system mode fixes. #1500 #1520 #1525 #1531
  • Read/write arm FPSCR and FPSID. #1453
  • Fix the support for ARMv8
  • Fix a large number of memory leaks and unicorn2 now goes with google/oss-fuzz!
  • Add more X87 registers. #1524
  • Add more PPC registers.
  • Fix the exception not cleared in python bindings. #1537
  • Correctly support ARM big endian and drops armeb-softmmu and aarch64eb-softmmu
  • Fix ARM CPSR.E not reflected during runtime.
  • Resolve fuzzing speed problem on macOS.
  • Modernize CmakeFileLists.txt. #1544
  • Fix an issue in nested uc_emu_start

Thanks:

@Kritzefitz @zznop @QDucasse @gerph @bet4it @mrexodia @iii-i @jbcayrou @scribam

Version 2.0.0-rc5

25 Nov 16:39
10d88e8
Compare
Choose a tag to compare
Version 2.0.0-rc5 Pre-release
Pre-release

This release fixes a few urgent bugs and improves performance.

Fixes/Improvements:

  • Rust bindings improvements. #1480 #1483
  • Allow R/W to cp15 registers. #1481
  • Fix UC_HOOK_EDGE_GENERATED not calling for indirect jumps.
  • Python bindings build improvements. #1486
  • Fix bindings on m1 macOS.
  • Support nested uc_emu_start calls without context save/restore
  • Fix wrong MMIO offset for 32bit targets.
  • Fix wrong uc_mem_unmap logic for both ram and mmio memory.
  • Inline uc_trace_code and PC sync to improve performance.
  • Various fixes in tests.
  • Allow writing to CPSR to switch bank registers.
  • Implement MMIO in rust bindings. #1499

Thanks:

Version 2.0.0-rc4

08 Nov 23:58
0714fb5
Compare
Choose a tag to compare
Version 2.0.0-rc4 Pre-release
Pre-release

This is a big release of Unicorn and introduces a few powerful new features and a bunch of fixes.

New Features:

  • New API: uc_ctl, by which you could control CPU models, TB caches or multiple exits etc.
  • New Hook: UC_HOOK_EDGE_GENERATED, UC_HOOK_TCG_OPCODE
  • RISCV CSR read/write.
  • Support reading MIPS hi/lo regs. 7268c2a
  • OSS Fuzzing building support.
  • MSVC 32bit and Android build support.
  • Introduce clang-format.

Fixes/Improvements:

  • Java bindings improvements. #1461
  • API Documents updates. #1459
  • Rust bindings improvements. #1462
  • Add a go.mod for go bindings.
  • CMakeLists.txt improvements as a subproject. #1373
  • Fix rust bindings build script and add CI.
  • Use binary search to find mappings. #1414
  • RISCV:
    • Update pc when exiting execution. #1465
    • Add RISCV control status registers to enable floating. #1469 #1478
    • After ecall, pc not advanced. #1477
  • Fix tb not invalidated when exiting.
  • Fix bindings makefile.
  • Fix uc_mem_protect not working. #1468

Thanks:

Version 2.0.0-rc3

06 Oct 10:56
ad3c0a5
Compare
Choose a tag to compare
Version 2.0.0-rc3 Pre-release
Pre-release

This is an urgent pre-release regarding python bindings on older Linux systems.

  • Support older Linux distribution, e.g. prior to Ubuntu 19.04
  • Fix a memory leak in uc_close
  • Support building on Android
  • Support hooking CPUID instruction.

Enjoy.