Version 0.9.1

July 27, 2016

We are thrilling to announce a stable release, version 0.9.1, of Keystone Engine!

This version fixes some important bugs inside the core of Keystone (especially X86 assembler), added some new bindings & made some minor improvements, without breaking compatibility. All users of Keystone are encouraged to upgrade to v0.9.1.

NOTE: Keystone is now available on PyPi in keystone-engine package. This package includes the core, Cmake is required to build the shared library. Then Python users can easily install Keystone with:

$ sudo pip install keystone-engine


See below for the changelog.

Core & tool

  • Fix a segfault in kstool (on missing assembly input).
  • kstool now allows to specify instruction address.
  • Build Mac libraries in universal format by default.
  • Add “lib32” option to cross-compile to 32-bit *nix (on 64-bit system).
  • Add “lib_only” option to only build libraries (skip kstool).
  • New bindings: Haskell & OCaml.

X86

  • Fix instructions: LJMP, LCALL, CDQE, SHR, SHL, SAR, SAL, LOOP, LOOPE, LOOPNE.
  • Better handling a lot of tricky input caught by assert() before.
  • Better support for Nasm syntax.

Arm

  • Fix BLX instruction.

Python binding

  • Better Python3 support.
  • Expose @stat_count in KsError class when ks_asm() returns with error. See sample code in bindings/python/sample_asm_count.py

Go binding

  • Fix Go binding for 32-bit