unicorn

Unicorn CPU emulator framework (ARM, AArch64, M68K, Mips, Sparc, PowerPC, RiscV, S390x, TriCore, X86)

GPL-2.0 License

Downloads
19K
Stars
7.5K
Committers
203

Bot releases are hidden (Show)

unicorn - Version 2.0.1.post1 Latest Release

Published by wtdcode almost 2 years ago

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.
unicorn - Version 2.0.1

Published by wtdcode almost 2 years ago

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

unicorn - Version 2.0.0

Published by wtdcode over 2 years ago

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

unicorn - Version 2.0.0-rc7

Published by wtdcode over 2 years ago

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

unicorn - Version 2.0.0-rc6

Published by wtdcode over 2 years ago

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

unicorn - Version 2.0.0-rc5

Published by wtdcode almost 3 years ago

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:

  • @domenukk
  • @bet4it
  • @mid-kid
  • @Kritzefitz
unicorn - Version 2.0.0-rc4

Published by wtdcode almost 3 years ago

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. 7268c2a19bce2db72b90e3ea3b133482c3ff4e58
  • OSS Fuzzing building support.
  • MSVC 32bit and Android build support.
  • Introduce clang-format.

Fixes/Improvements:

  • Java bindings improvements. unicorn-engine/unicorn#1461
  • API Documents updates. unicorn-engine/unicorn#1459
  • Rust bindings improvements. unicorn-engine/unicorn#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. unicorn-engine/unicorn#1414
  • RISCV:
    • Update pc when exiting execution. unicorn-engine/unicorn#1465
    • Add RISCV control status registers to enable floating. unicorn-engine/unicorn#1469 unicorn-engine/unicorn#1478
    • After ecall, pc not advanced. unicorn-engine/unicorn#1477
  • Fix tb not invalidated when exiting.
  • Fix bindings makefile.
  • Fix uc_mem_protect not working. unicorn-engine/unicorn#1468

Thanks:

  • @bet4it
  • @kabeor
  • @chfl4gs
  • @QDucasse
  • @h33p
  • @geohot
  • @cla7aye15I4nd
  • @jcalabres
unicorn - Version 2.0.0-rc3

Published by wtdcode about 3 years ago

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.

unicorn - Version 2.0.0-rc2

Published by wtdcode about 3 years ago

This is an urgent pre-release regarding the packaging problem of python bindings.

  • Set zip_false and is_pure to False to avoid issues on some Linux distributions.
  • Link to libm to make sure our libraries work.
  • Support to read ST registers in rust bindings.
  • Fix #1450

Enjoy.

unicorn - Version 2.0.0-rc1

Published by aquynh about 3 years ago

Unicorn2 first release candidate!

  • Based on Qemu 5.0.1
  • Remain backward compatible with Unicorn 1.x
  • Update ISA of all existing architectures
  • Support 2 new architectures in PowerPC & RISCV
unicorn - Version 1.0.3

Published by aquynh over 3 years ago

  • Fix some building issues

    • Fix build with LLVM on Powerpc64(le)
    • cmake: enable UNICORN_HAS_ARMEB when ARM is on
    • Better support MingW building
    • Better support FreeBSD host
      • Better support VS2008/VS2010
  • Fix some issues in the core

    • Fix wrong sync after UC_ERR_[READ, WRITE, FETCH]_[UNMAPPED, PROT]
    • Support querying architecture mode besides arm
    • Fix pausing within Thumb2 ITE blocks
  • Arm:

    • Support Arm BE8 mode
  • X86:

    • Fix FPIP & FTST instructions
  • Bindings:

    • Java: remove deprecated javah and build with javac
    • Python: handle exceptions raised in hook functions
    • Rust binding
unicorn - Version 1.0.2

Published by aquynh almost 4 years ago

  • Fix Java binding compilation
  • Enable building for ARM little-endian only (ignore big-endian)
unicorn - Version 1.0.2-rc6

Published by aquynh about 4 years ago

  • Add uc_context_free() API
  • Fix context saving/retoring API (core & Python binding)
unicorn - Version 1.0.2-rc5

Published by aquynh about 4 years ago

  • Add cmake option to build Unicorn as a static library
  • Fix error handling of mmap()
  • uc_emu_start() can be reentrant
  • Fix naming conflicts when built with systemd
  • Fix setjmp/longjmp on native Windows
  • Fix enabled hooks even after deleting them
  • X86:
    • Fix 64bit fstenv
    • Fix IP value of 16bit mode
  • ARM:
    • Fix APSR handling
  • Python: Remove UC_ERR_TIMEOUT
unicorn - Version 1.0.2-rc4

Published by aquynh over 4 years ago

This version fixes some issues and improves over v1.0.2-rc3.

  • No longer require Python to build
  • Fix recursive UC_HOOK_MEM callbacks for cross pages access
  • Remove UC_ERR_TIMEOUT, so timeout on uc_emu_start() is not considered error
  • Added UC_QUERY_TIMEOUT to query exit reason
  • Fix UAF when deleting hook while in hook callback
  • Ensure that hooks are unaffected by a request to stop emulation.
  • Fix block hooks being called twice after an early exit from execution.
  • Fix binding install on python2 (MacOS)
  • X86:
    • Support read/write STn registers
    • Support read/write X64 base regs
  • ARM64:
    • Support some new registers
unicorn - Version 1.0.2-rc3

Published by aquynh over 4 years ago

Bugfixes since RC2

unicorn - Version 1.0.2-rc2

Published by aquynh over 4 years ago

unicorn - Version 1.0.2-rc1

Published by aquynh about 5 years ago

lots of bug fixes & improvement since v1.0.1

unicorn - Version 1.0.1

Published by aquynh over 7 years ago

Stable release with some important bugfixes & new features for several architectures.

  • Properly handle build with selected-architectures.
  • Fix compilation issues on PPC & S390x.
  • Fix a memory leak on uc_mem_protect().
  • ARM:
    • Support big-endian mode.
    • Correct instruction size of Thumb/Thumb2 code.
    • Support read/write APSR register.
  • ARM64:
    • Support read/write NEON registers.
    • Support read/write NZCV registers.
  • Mips: Support read/write Mips64 registers.
  • X86: Support read/write MSR.
  • Haskell binding: update to the latest API.
  • Python: allow not having PATH setup.
unicorn - Version 1.0

Published by aquynh over 7 years ago

Unicorn Engine v1.0.

Important changes since v1.0-RC3:

  • Fix build script for BSD host.
  • Fix building Unicorn on Arm/PPC/Sparc/S390 hosts.
  • X86:
    • Fix 16bit address computation.
    • Fix initial state of segment registers.
Package Rankings
Top 1.36% on Proxy.golang.org
Top 5.18% on Crates.io
Top 17.68% on Conda-forge.org
Badges
Extracted from project README
pypi downloads Fuzzing Status