Version 3.0.5-rc2

March 2, 2017

We are excited to announce version 3.0.5-RC2 of Capstone disassembler framework!

This release candidate fixes some important security issues of v3.0.4, as well significantly improve the core & bindings. We plan to release the official version 3.0.5 after some more tests.

The source code is available in zip and tar.gz formats, or at tagname 3.0.5-rc2 in our Github repo.

Find pre-compiled binaries in the Download section.

For any issues, please feed back via our contact.

Summary of the important changes of version 3.0.5-rc2.

Library

  • Fix build for Visual Studio 2012
  • Fix X86_REL_ADDR macro
  • Add CS_VERSION_MAJOR, CS_VERSION_MINOR, CS_VERSION_EXTRA
  • Better support for embedding Capstone into Windows kernel drivers
  • Support to embedded Capstone into MacOS kernel
  • Support MacOS 10.11 and up
  • Better support for Cygwin
  • Support build packages for FreeBSD & DragonflyBSD
  • Add a command-line tool “cstool”
  • Properly handle switching to Endian mode at run-time for Arm, Arm64, Mips & Sparc

X86

  • Some random 16-bit code can be handled wrongly.
  • Remove abundant operand type X86_OP_FP
  • Fix instructions MOVQ, LOOP, LOOPE, LOOPNE, CALL/JMP rel16, REPNE LODSD, MOV *AX, MOFFS, FAR JMP/CALL
  • Add X86_REG_EFLAGS for STC and STD
  • Fix instruction attributes for SYSEXIT, MOVW, ROL, LGS, SLDT
  • Rename registers ST0-ST7 to be consistent with asm output

Arm

  • Properly handle IT instruction
  • Fix LDRSB
  • Fix writeback for LDR
  • Fix Thumb BigEndian setup

Arm

  • Fix arith extender
  • Fix writeback for LDR
  • Rename enum arm64_mrs_reg to arm64_sysreg

PowerPC

  • Print 0 offset for memory operand

Sparc

  • Fix POPC instruction

Python binding

  • Better PyPy support
  • Add __version__
  • Better support for Python 3
  • Fix CS_SKIPDATA_CALLBACK prototype
  • Cast skipdata function inside binding to simplify the API

Java binding

  • Better handle input with invalid code

PowerShell binding

  • New binding