diff --git a/bindings/java/capstone/Capstone.java b/bindings/java/capstone/Capstone.java index 65c86419..faec252f 100644 --- a/bindings/java/capstone/Capstone.java +++ b/bindings/java/capstone/Capstone.java @@ -203,6 +203,7 @@ public class Capstone { public byte cs_reg_read(NativeLong csh, Pointer insn, int id); public byte cs_reg_write(NativeLong csh, Pointer insn, int id); public int cs_errno(NativeLong csh); + public void cs_version(IntByReference major, IntByReference minor); } // capstone API version diff --git a/bindings/python/capstone/__init__.py b/bindings/python/capstone/__init__.py index 304a1a35..cfda6474 100644 --- a/bindings/python/capstone/__init__.py +++ b/bindings/python/capstone/__init__.py @@ -1 +1 @@ -from capstone import Cs, CsError, cs_disasm_quick, CS_API_MAJOR, CS_API_MINOR, CS_ARCH_ARM, CS_ARCH_ARM64, CS_ARCH_MIPS, CS_ARCH_X86, CS_MODE_LITTLE_ENDIAN, CS_MODE_ARM, CS_MODE_THUMB, CS_OPT_SYNTAX, CS_OPT_SYNTAX_INTEL, CS_MODE_16, CS_MODE_32, CS_MODE_64, CS_OPT_SYNTAX_ATT, CS_MODE_BIG_ENDIAN, CS_MODE_MICRO, CS_MODE_N64 +from capstone import Cs, CsError, cs_disasm_quick, cs_version, CS_API_MAJOR, CS_API_MINOR, CS_ARCH_ARM, CS_ARCH_ARM64, CS_ARCH_MIPS, CS_ARCH_X86, CS_MODE_LITTLE_ENDIAN, CS_MODE_ARM, CS_MODE_THUMB, CS_OPT_SYNTAX, CS_OPT_SYNTAX_INTEL, CS_MODE_16, CS_MODE_32, CS_MODE_64, CS_OPT_SYNTAX_ATT, CS_MODE_BIG_ENDIAN, CS_MODE_MICRO, CS_MODE_N64 diff --git a/bindings/python/capstone/capstone.py b/bindings/python/capstone/capstone.py index 14920a80..bf3a4e7d 100644 --- a/bindings/python/capstone/capstone.py +++ b/bindings/python/capstone/capstone.py @@ -5,7 +5,9 @@ import arm, arm64, mips, x86 __all__ = [ 'Cs', 'CsInsn', + 'cs_disasm_quick', + 'cs_version', 'CS_API_MAJOR', 'CS_API_MINOR', @@ -165,6 +167,7 @@ _setup_prototype(_cs, "cs_op_count", ctypes.c_int, ctypes.c_size_t, ctypes.POINT _setup_prototype(_cs, "cs_op_index", ctypes.c_int, ctypes.c_size_t, ctypes.POINTER(_cs_insn), ctypes.c_uint, ctypes.c_uint) _setup_prototype(_cs, "cs_errno", ctypes.c_int, ctypes.c_size_t) _setup_prototype(_cs, "cs_option", ctypes.c_int, ctypes.c_size_t, ctypes.c_int, ctypes.c_size_t) +_setup_prototype(_cs, "cs_version", None, ctypes.POINTER(ctypes.c_int), ctypes.POINTER(ctypes.c_int)) # access to error code via @errno of CsError @@ -184,6 +187,13 @@ class CsError(Exception): return messages[self.errno] +def cs_version(): + major = ctypes.c_int() + minor = ctypes.c_int() + _cs.cs_version(ctypes.byref(major), ctypes.byref(minor)) + return (major.value, minor.value) + + # quick & dirty Python function to disasm raw binary code def cs_disasm_quick(arch, mode, code, offset, count = 0): csh = ctypes.c_size_t()